Как помочь проекту Vanessa-Automation и сделать Pull request?
Для начала нам потребуется установить:
- git
- Любой клиент Git (в примере я использую TortoiseGit)
Настройки
Для работы с удаленным репозиторием нам обязательно понадобится установить настройку:
core.autocrlf=true
Чтобы посмотреть текущее значения можно воспользоваться командой:
git config -l
Изменить значение можно с помощью команды:
git config --global core.autocrlf true
Более подробно про глобальные настройки можно почитать тут
Можно столкнуться с тем, что core.autocrlf мотет быть определен в нескольких местах. Посмотреть какие файлы отвечают за это можно при помощи команды:
git config -l --show-origin
Присоедениться к проекту можно по адресу: https://github.com/Pr-Mex/vanessa-automation сделав Fork в свой репозиторий на GitHub
Следующим шагом, после создания репозитория на на github, является создание локальной копии этого репозитория на своем компьютере.
Сделать это можно при помощи консольной команды:
git clone https://github.com/fenixnow/vanessa-automation.git
или в пустом месте проводника нажать правую кнопку мыши и выбрать “Git Клонировать...”
Итак, мы сделали настройки, форкнули репозиторий и клонировали себе на локальный компьютер.
Сборка проекта
Чтобы начать дорабатывать проект, нам нужны обработки. Их нужно сперва скомпилировать из исходных файлов. Для этого, в корне проекта, есть Compile.bat при нажатии сформируются все необходимые обработки в формате .epf
Первая сборка .epf может занять несколько минут - это нормально. Далее будут собираться и разбираться только изменённые файлы.
Внесение изменений
Например мы решили доработать поле запуска текстового редактора для редактирования фич, добавив кнопку выпадающего списка, а также формирование списка выбора с учетом установленных текстовых редакторов в системе.
Идем на страничку https://github.com/Pr-Mex/vanessa-automation/issues и создаем новое обсуждение Описываем наше предложение, уточняем детали, выясняем, не занимается кто-нибудь еще данной идеей. Если все "Ок", приступаем к разработке.
Удалим лишние команды и куски кода в форме
Добавим
Для заполнения списка выбора в событии формы “ПриОткрытии” добавим нашу процедуру КомандыЗапускаТекстовогоРедактораПоУмолчанию()
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ИнициализацияПеременныхМодуляФормы();
АсинхронноеПодключениеМодулей();
КомандыЗапускаТекстовогоРедактораПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура КомандыЗапускаТекстовогоРедактораПоУмолчанию()
МассивРедакторов = МассивТекстовыхРедакторов();
Для каждого Редактор Из МассивРедакторов Цикл
Файл = Новый Файл(Редактор.ИмяФайла);
ОписаниеОповещения = Новый ОписаниеОповещения("РезультатПроверкиНаСуществовониеФайла", ЭтаФорма, Редактор);
Файл.НачатьПроверкуСуществования(ОписаниеОповещения);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура РезультатПроверкиНаСуществовониеФайла(Результат, ДополнительныеПараметры) Экспорт
Если Результат Тогда
Элементы.КомандаОткрытияФичиВТекстовомРедакторе.СписокВыбора.Добавить(ДополнительныеПараметры.СтрокаЗапуска, ДополнительныеПараметры.ПредставлениеРедактора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция МассивТекстовыхРедакторов()
МассивРедакторов = Новый Массив;
// Notepad++ (x64)
ПараметрыРедактора = Новый Структура("ПредставлениеРедактора, ИмяФайла, СтрокаЗапуска");
ПараметрыРедактора.Вставить("ПредставлениеРедактора", "Notepad++ (x64)");
ПараметрыРедактора.Вставить("ИмяФайла", "C:\Program Files\Notepad++\notepad++.exe");
ПараметрыРедактора.Вставить("СтрокаЗапуска", """C:\Program Files\Notepad++\notepad++.exe"" %Feature% -n%LineNumber%");
МассивРедакторов.Добавить(ПараметрыРедактора);
// Notepad++
ПараметрыРедактора = Новый Структура("ПредставлениеРедактора, ИмяФайла, СтрокаЗапуска");
ПараметрыРедактора.Вставить("ПредставлениеРедактора", "Notepad++");
ПараметрыРедактора.Вставить("ИмяФайла", "C:\Program Files (x86)\Notepad++\notepad++.exe");
ПараметрыРедактора.Вставить("СтрокаЗапуска", """C:\Program Files (x86)\Notepad++\notepad++.exe"" %Feature% -n%LineNumber%");
МассивРедакторов.Добавить(ПараметрыРедактора);
// VSCode (x64)
ПараметрыРедактора = Новый Структура("ПредставлениеРедактора, ИмяФайла, СтрокаЗапуска");
ПараметрыРедактора.Вставить("ПредставлениеРедактора", "VSCode (x64)");
ПараметрыРедактора.Вставить("ИмяФайла", "C:\Program Files\Microsoft VS Code\code.exe");
ПараметрыРедактора.Вставить("СтрокаЗапуска", """C:\Program Files\Microsoft VS Code\code.exe"" -g %Feature%:%LineNumber%");
МассивРедакторов.Добавить(ПараметрыРедактора);
// VSCode
ПараметрыРедактора = Новый Структура("ПредставлениеРедактора, ИмяФайла, СтрокаЗапуска");
ПараметрыРедактора.Вставить("ПредставлениеРедактора", "VSCode");
ПараметрыРедактора.Вставить("ИмяФайла", "C:\Program Files (x86)\Microsoft VS Code\code.exe");
ПараметрыРедактора.Вставить("СтрокаЗапуска", """C:\Program Files (x86)\Microsoft VS Code\code.exe"" -g %Feature%:%LineNumber%");
МассивРедакторов.Добавить(ПараметрыРедактора);
Возврат МассивРедакторов;
КонецФункции
При открытии обработки происходит проверка наличия установленных текстовых редакторов в системе и заполняется список выбора.
Автотесты внесенных изменений
Ванесса умет тестировать сама себя. Чтобы проверить, не сломали ли мы что-нибудь внесенными нами изменениями нужно запустить внутренние тестирование. Сперва нужно подготовить базы запустив скрипт из каталога поставки VA
\tools\1 PrepareCheck.cmd
в папке \tools\ServiceBase будут созданы сервисные базы
т.к. разработку я веду на платформе 8.3.14 проверки выполню при помощи файла \tools\FastCheck_8314_UF.cmd
логирование операции проверки доступно на экране, а также в файле \tools\ServiceBases\log8314.txt
Результат проверки одного из сценариев
Технические данные:
ЗаголовокАктивногоОкна: ver 1.2.025 autotest: Vanessa Automation
ИмяАктивнойФормы: ВнешняяОбработка.VanessaAutomation.Форма.УправляемаяФорма
ИмяФайла: D:\vanessa-automation\features\Core\Allure\step_definitions\Issue-34-ОтчетAllure.epf
ИмяПроцедуры: ВПолеКаталогОтчетаАллюрЯУказываюПутьКОтносительномуКаталогу
ИмяРаннера: ______
ТипКлиентаТестирования: Тонкий
СтрокаСоединения: /F.\ServiceBases\v83ServiceBase8314
ВерсияVA: ver 1.2.025
ВерсияПлатформы: 8.3.14.1694
РежимСовместимостиTestManager: НеИспользовать
ДатаВремяОшибки: 12.07.2019 8:24:22
Сценарий: Проверка группирования структуры сценария, когда имя примера берётся из Description или Описание
12.07.2019 8:24:23. Шаг: Дано Я открыл новый сеанс TestClient или подключил уже существующий
12.07.2019 8:24:23. Шаг: И Я закрыл все окна клиентского приложения
12.07.2019 8:24:24. Шаг: Дано в Константе "ПутьКVanessaAutomation" указан существующий файл
12.07.2019 8:24:24. Шаг: Дано Я открыл новый сеанс TestClient или подключил уже существующий
12.07.2019 8:24:24. Шаг: И Я закрыл все окна клиентского приложения
12.07.2019 8:24:25. Шаг: Когда В панели разделов я выбираю "Основная"
12.07.2019 8:24:25. Шаг: И В панели функций я выбираю "Открыть vanessa automation"
12.07.2019 8:24:25. Шаг: Тогда открылось окно "* Vanessa Automation"
12.07.2019 8:24:26. Шаг: И я фиксирую текущую форму
12.07.2019 8:24:26. Шаг: И В открытой форме я перехожу к закладке с заголовком "Сервис"
12.07.2019 8:24:26. Шаг: И В открытой форме я устанавливаю флаг с заголовком "Проверка работы Vanessa-Automation в режиме test client"
12.07.2019 8:24:26. Шаг: И В открытой форме я перехожу к закладке с заголовком "Служебная"
12.07.2019 8:24:27. Шаг: И В поле с именем "КаталогИнструментовСлужебный" я указываю значение реквизита объекта обработки "КаталогИнструментов"
12.07.2019 8:24:27. Шаг: И я перехожу к закладке "Сервис"
12.07.2019 8:24:28. Шаг: И я перехожу к закладке "Настройки клиентов тестирования"
12.07.2019 8:24:28. Шаг: И В поле с именем "ДиапазонПортовTestclient" я указываю значение реквизита объекта обработки "ДиапазонПортовTestclient"
12.07.2019 8:24:28. Шаг: И я перехожу к закладке с именем "СтраницыСервисОсновные"
12.07.2019 8:24:29. Шаг: И я отменяю фиксирование формы
12.07.2019 8:24:29. Шаг: Когда В поле с именем "КаталогФичСлужебный" я указываю путь к служебной фиче "ФичаДляПроверкиОтчетаAllureСтруктура2"
12.07.2019 8:24:29. Шаг: И В открытой форме я перехожу к закладке с заголовком "Сервис"
12.07.2019 8:24:30. Шаг: И я перехожу к закладке "Отчет о запуске сценариев"
12.07.2019 8:24:30. Шаг: И В открытой форме я устанавливаю флаг "Формировать данные для отчета Allure"
12.07.2019 8:24:30. Шаг: И в поле каталог отчета аллюр я указываю путь к относительному каталогу "tools\Allure"
Шаг (И в поле каталог отчета аллюр я указываю путь к относительному каталогу "tools\Allure") не выполнен. Строка дерева №131
Failed: {ВнешняяОбработка.VanessaAutomation.Форма.УправляемаяФорма.Форма(3127)}: Элемента формы с именем <КаталогOutputAllure> не найдено.
Описание ошибки содержится в строке начинающейся на Failed:
Расследование ошибок
Если были найдены ошибки - нужно их расследовать, запуская тесты вручную.
- Создать пустую базу
- Загрузить конфигурацию из файлов идущих в поставке VA (..\lib\CF\83)
- Открыть конфигурацию в режиме отладки и установить константу "Путь к vanessa automation"
- Запустить обработку vanessa-automation.epf
- Выбрать файл фичи лежащий в том же каталоге, в котором лежит файл с обработкой
(в примере:
Файл фичи - D:\vanessa-automation\features\Core\Allure\Issue-34-ОтчетAllure.feature
Обработка с ошибкой - D:\vanessa-automation\features\Core\Allure\step_definitions\Issue-34-ОтчетAllure.epf) - В конфигураторе выбрать обработку с ошибкой и установить точку останова на интересующей строке
- Проанализировать и исправить ошибку
В следующих версиях VA заполнение константы "Путь к VA" будет реализовано автоматически и потребуется только контроль заполнения ее при первом открытии обработки
Также, по окончанию проверки можно построить отчет в форме Allure запустив \tolls\3 ViewAllureReport.cmd
Отправка изменений
Для отправки в удаленный репозиторий внесенные нами изменения, обработку требуется выгрузить обратно в файлы. Это обязательно нужно сделать при помощи файла Decompile.bat находящегося в корне проекта.
Внимание! Ошибкой будет использование стандартного действия - “Выгрузить в файлы…” из самой обработки.
Внимание! Чтобы наш коммит связался с обсуждением на сайтe GitHub в начало строки нужно написать #НомерОбсуждения Более подробно можно узнать тут
Для отправки изменений в удаленный репозиторий воспользуемся командами:
git add.
git commit -m `#Номер issue описание коммита`
git push origin develop
или в проводнике нажать правой кнопкой мыши, выбрать “Git Фиксировать ->”
написать комментарий к внесенным изменения и нажать “Фиксировать & Отправить”. После отправки наших изменений, в обсуждении на GitHub отразится информация по нашему коммиту.
Теперь попробуем предложить наш код на включение в основной проект.
На GitHub своем репозиторий. Выберем вкладку “Pull requests” и создадим новый запрос на слияние .
Убедимся, что ветка и изменения соответствуют внесенными нами и подтвердим создание.
У проекта есть живой канал для общения @testpro1c
Также канал с новостями @VanessaAutomation