Как помочь проекту 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