Как помочь проекту 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 FilesNotepad++
otepad++.exe");
ПараметрыРедактора.Вставить("СтрокаЗапуска", """C:Program FilesNotepad++
otepad++.exe"" %Feature% -n%LineNumber%");
МассивРедакторов.Добавить(ПараметрыРедактора);
// Notepad++
ПараметрыРедактора = Новый Структура("ПредставлениеРедактора, ИмяФайла, СтрокаЗапуска");
ПараметрыРедактора.Вставить("ПредставлениеРедактора", "Notepad++");
ПараметрыРедактора.Вставить("ИмяФайла", "C:Program Files (x86)Notepad++
otepad++.exe");
ПараметрыРедактора.Вставить("СтрокаЗапуска", """C:Program Files (x86)Notepad++
otepad++.exe"" %Feature% -n%LineNumber%");
МассивРедакторов.Добавить(ПараметрыРедактора);
// VSCode (x64)
ПараметрыРедактора = Новый Структура("ПредставлениеРедактора, ИмяФайла, СтрокаЗапуска");
ПараметрыРедактора.Вставить("ПредставлениеРедактора", "VSCode (x64)");
ПараметрыРедактора.Вставить("ИмяФайла", "C:Program FilesMicrosoft VS Codecode.exe");
ПараметрыРедактора.Вставить("СтрокаЗапуска", """C:Program FilesMicrosoft VS Codecode.exe"" -g %Feature%:%LineNumber%");
МассивРедакторов.Добавить(ПараметрыРедактора);
// VSCode
ПараметрыРедактора = Новый Структура("ПредставлениеРедактора, ИмяФайла, СтрокаЗапуска");
ПараметрыРедактора.Вставить("ПредставлениеРедактора", "VSCode");
ПараметрыРедактора.Вставить("ИмяФайла", "C:Program Files (x86)Microsoft VS Codecode.exe");
ПараметрыРедактора.Вставить("СтрокаЗапуска", """C:Program Files (x86)Microsoft VS Codecode.exe"" -g %Feature%:%LineNumber%");
МассивРедакторов.Добавить(ПараметрыРедактора);
Возврат МассивРедакторов;
КонецФункции
При открытии обработки происходит проверка наличия установленных текстовых редакторов в системе и заполняется список выбора.
Автотесты внесенных изменений
Ванесса умет тестировать сама себя. Чтобы проверить, не сломали ли мы что нибудь внесенными нами изменениями нужно запустить внутренние тестирование. Сперва нужно подготовить базы запустив скрипт из каталога поставки VA
ools1 PrepareCheck.cmd
в папке oolsServiceBase будут созданы сервисные базы
т.к. разработку я веду на платформе 8.3.14 проверки выполню при помощи файла oolsFastCheck_8314_UF.cmd
логирование операции проверки доступно на экране, а также в файле oolsServiceBaseslog8314.txt
Результат проверки одного из сценариев
Технические данные:
ЗаголовокАктивногоОкна: ver 1.2.025 autotest: Vanessa Automation
ИмяАктивнойФормы: ВнешняяОбработка.VanessaAutomation.Форма.УправляемаяФорма
ИмяФайла: D:vanessa-automationfeaturesCoreAllurestep_definitionsIssue-34-ОтчетAllure.epf
ИмяПроцедуры: ВПолеКаталогОтчетаАллюрЯУказываюПутьКОтносительномуКаталогу
ИмяРаннера: ______
ТипКлиентаТестирования: Тонкий
СтрокаСоединения: /F.ServiceBasesv83ServiceBase8314
ВерсияVA: ver 1.2.025
ВерсияПлатформы: 8.3.14.1694
РежимСовместимостиTestManager: НеИспользовать
ДатаВремяОшибки: 12.07.2024 8:24:22
Сценарий: Проверка группирования структуры сценария, когда имя примера берётся из Description или Описание
12.07.2024 8:24:23. Шаг: Дано Я открыл новый сеанс TestClient или подключил уже существующий
12.07.2024 8:24:23. Шаг: И Я закрыл все окна клиентского приложения
12.07.2024 8:24:24. Шаг: Дано в Константе "ПутьКVanessaAutomation" указан существующий файл
12.07.2024 8:24:24. Шаг: Дано Я открыл новый сеанс TestClient или подключил уже существующий
12.07.2024 8:24:24. Шаг: И Я закрыл все окна клиентского приложения
12.07.2024 8:24:25. Шаг: Когда В панели разделов я выбираю "Основная"
12.07.2024 8:24:25. Шаг: И В панели функций я выбираю "Открыть vanessa automation"
12.07.2024 8:24:25. Шаг: Тогда открылось окно "* Vanessa Automation"
12.07.2024 8:24:26. Шаг: И я фиксирую текущую форму
12.07.2024 8:24:26. Шаг: И В открытой форме я перехожу к закладке с заголовком "Сервис"
12.07.2024 8:24:26. Шаг: И В открытой форме я устанавливаю флаг с заголовком "Проверка работы Vanessa-Automation в режиме test client"
12.07.2024 8:24:26. Шаг: И В открытой форме я перехожу к закладке с заголовком "Служебная"
12.07.2024 8:24:27. Шаг: И В поле с именем "КаталогИнструментовСлужебный" я указываю значение реквизита объекта обработки "КаталогИнструментов"
12.07.2024 8:24:27. Шаг: И я перехожу к закладке "Сервис"
12.07.2024 8:24:28. Шаг: И я перехожу к закладке "Настройки клиентов тестирования"
12.07.2024 8:24:28. Шаг: И В поле с именем "ДиапазонПортовTestclient" я указываю значение реквизита объекта обработки "ДиапазонПортовTestclient"
12.07.2024 8:24:28. Шаг: И я перехожу к закладке с именем "СтраницыСервисОсновные"
12.07.2024 8:24:29. Шаг: И я отменяю фиксирование формы
12.07.2024 8:24:29. Шаг: Когда В поле с именем "КаталогФичСлужебный" я указываю путь к служебной фиче "ФичаДляПроверкиОтчетаAllureСтруктура2"
12.07.2024 8:24:29. Шаг: И В открытой форме я перехожу к закладке с заголовком "Сервис"
12.07.2024 8:24:30. Шаг: И я перехожу к закладке "Отчет о запуске сценариев"
12.07.2024 8:24:30. Шаг: И В открытой форме я устанавливаю флаг "Формировать данные для отчета Allure"
12.07.2024 8:24:30. Шаг: И в поле каталог отчета аллюр я указываю путь к относительному каталогу "toolsAllure"
Шаг (И в поле каталог отчета аллюр я указываю путь к относительному каталогу "toolsAllure") не выполнен. Строка дерева №131
Failed: {ВнешняяОбработка.VanessaAutomation.Форма.УправляемаяФорма.Форма(3127)}: Элемента формы с именем <КаталогOutputAllure> не найдено.
Описание ошибки содержится в строке начинающейся на Failed:
Расследование ошибок
Если были найдены ошибки — нужно их расследовать, запуская тесты вручную.
- Создать пустую базу
- Загрузить конфигурацию из файлов идущих в поставке VA (..libCF83)
- Открыть конфигурацию в режиме отладки и установить константу "Путь к vanessa automation"
- Запустить обработку vanessa-automation.epf
- Выбрать файл фичи лежащий в том же каталоге, в котором лежит файл с обработкой
(в примере:
Файл фичи — D:vanessa-automationfeaturesCoreAllureIssue-34-ОтчетAllure.feature
Обработка с ошибкой — D:vanessa-automationfeaturesCoreAllurestep_definitionsIssue-34-ОтчетAllure.epf) - В конфигураторе выбрать обработку с ошибкой и установить точку останова на интересующей строке
- Проанализировать и исправить ошибку
В следующих версиях VA заполнение константы "Путь к VA" будет реализовано автоматически и потребуется только контроль заполнения ее при первом открытии обработки
Также, по окончанию проверки можно построить отчет в форме Allure запустив olls3 ViewAllureReport.cmd
Отправка изменений
Для отправки в удаленный репозиторий внесенные нами изменения, обработку требуется выгрузить обратно в файлы. Это обязательно нужно сделать при помощи файла Decompile.bat находящегося в корне проекта.
Внимание! Ошибкой будет использование стандартного действия — “Выгрузить в файлы…” из самой обработки.
Внимание! Чтобы наш коммит связался с обсуждением на сайтe GitHub в начало строки нужно написать #НомерОбсуждения Более подробно можно узнать тут
Для отправки изменений в удаленный репозиторий воспользуемся командами:
git add.
git commit -m `#Номер issue описание коммита`
git push origin develop
или в проводнике нажать правой кнопкой мыши, выбрать “Git Фиксировать ->”
написать комментарий к внесенным изменения и нажать “Фиксировать & Отправить”. После отправки наших изменений, в обсуждении на GitHub отразится информация по нашему коммиту.
Теперь попробуем предложить наш код на включение в основной проект.
На GitHub своем репозиторий. Выберем вкладку “Pull requests” и создадим новый запрос на слияние .
Убедимся, что ветка и изменения соответствуют внесенными нами и подтвердим создание.
У проекта есть живой канал для общения @testpro1c
Также канал с новостями @VanessaAutomation
современные тренды в it-продуктуах и 1С в частности, по моему скромному мнению…
1. наспех создаем тысячи таблиц со слабо продуманными логическими связями.
2. затем, наспех пишем миллионы строк запутанного не стабильного кода.
3. создаем красивые презентации и методички для маскировки халтуры.
наконец, вишенка на торте, создаем еще более запутанные и не стабильные инструменты от независимых разработчиков,
чтобы понять(на самом деле отвлечь от того), что происходит в продуктах написанных по правилам 1-3.
(1) Вы еще забыли про так сказать «хайповые» слова, а точнее про упоминание таковых слов в описании этих самых продуктов.
круто, но для меня это уровень филармонии ))) популярно можно так протестировать доработкиhttps://infostart.ru/public/1056811/
Спасибо за статью!
(1)
http://84.237.195.35:32005/job/VAFullCheck/66/allure/
1. VA стабильна, в этом можно убедиться просмотрев результаты тестирования при сборке
2. VA открыта что позволяет разработчикам разобраться в ней, было бы желание.
3. VA используется как при тестировании типовых конфигураций так и на сотнях внедрений.
Вот CI VA:
У add тоже есть CI, но там полгода ничего не собирается, хотя релизы ADD выходят.
Вот CI ADD:
О как о_0, не думал что в add всё так плохо
(6) относительно недавно пришлось поработать с ADD версии 5.7.0 — там даже «Тесты_ОткрытиеФормКонфигурации.epf» не запускалась из основной ветки.
EDT пока не готова для ведения таких разработок?
Очень полезная информация, спасибо. Этой инструкцией дополнить бы документацию на Гитхабе, чтобы не потерялась в ленте публикаций.
Есть несколько вопросов после прочтения.
1) Заметил, что в данном примере есть специфика Windows. По Вашей практике, требуется ли проверять внесенные изменения на Linux или проверка таких изменений остается для основного CI проекта? Какая вообще принята практика в этом отношении? В трендах задачи сборки Vanessa Automation видно, что тестируется она на Windows-узле WinNode01. Нужно ли вообще в этом случае заморачиваться с Linux?
2) Если зайти в тренды задачи Jenkins, выполняющей тестирование Vaness Automationhttp://84.237.195.35:32005/job/VAFullCheck/buildTimeTrend , то можно увидеть, что последние успешные сборки длятся более суток. Это тот же набор тестов, который идет в составе репозитория? Если да, то рекомендуется ли контрибьютору прогонять все эти тесты? Какая практика принята на этот счет?
3) Пул-реквест это конечная точка или только часть пути? Хотелось бы понять дальнейший процесс. Допустим наш пул реквест был принят, но в результате этого сломалась основная сборка. Каким образом происходит исправление? Силами мейнтейнера?
4) Другой вариант, допустим созданный исшуз действительно стоящий, но пул-реквест был не принят, так как нужны доработки. Здесь уже нет вопроса, просто пожелание проиллюстрировать или описать дальнейший процесс из Вашей практики, если были случаи отклонения пул-реквестов.
(9)
1. >Нужно ли вообще в этом случае заморачиваться с Linux?
Если вы вносите правки, поведение которых зависит от ОС, например работа с файлами — то вполне можно проверить. Обычно (в подавляющем числе случаев) этого не требуется.
2. >Если да, то рекомендуется ли контрибьютору прогонять все эти тесты? Какая практика принята на этот счет?
Нет. Рекомендуется запустить FastCheck. Он длится в районе 1-1.5 часа, в зависимости от железа.
3. >Пул-реквест это конечная точка или только часть пути? Хотелось бы понять дальнейший процесс. Допустим наш пул реквест был принят, но в результате этого сломалась основная сборка. Каким образом происходит исправление? Силами мейнтейнера?
Если пулреквест принят — то дальше исправлять по умолчанию будет мейнтейнер. Но конечно всегда можно договориться.
(6) По указанной ссылке информация по Vanessa-ADD неверна и вводит в заблуждение.
Несколько месяцев назад в очередной раз было продемонстрировано, что у Vanessa-ADD есть рабочий и постоянно работающий закрытый CI.
в телеграм-канале.
(4) об этом давно знает, но специально молчит.
да и вообще смешно указывать несуществующую ссылку. ведь так можно дойти и доhttps://ci.1c.ru/any-product 🙂
(7) нужна более подробная информация о проблеме. версия 1С, совместимость, ОФ/УФ и т.п.
тем более, что давно уже актуальная версия 6.0.0, а не 5.7.0
обращались по официальным каналам поддержки Vanessa-ADD с этой проблемой — например, на github?
(12), здравствуйте. Спасибо за обратную связь, ответил в ЛС.
(11)
На момент коммита ссылка была актуальна.
Если знаешь ссылку на рабочий CI ADD (где можно любому желающему, без авторизации посмотреть статус сборок) — укажи пожалуйста.
Я на гитхабе новичок, но разве основное хранилище не здесь:
https://github.com/silverbulleters/add/
?
(15) нет, это разные проекты
(11)
Совсем запутался. Это какие-то скандалы-интриги-расследования? Получается, это два продукта с одинаковым назначением? Это война или здоровая конкуренция? Чем они функционально отличаются? Чем пользоваться лучше-удобнее-эффективнее? Мне, как пользователю такой системы, понятное дело, нужна только одна, которая лучше всех — как это узнать без личного ковыряния в каждой из них 100500 часов?
(17)
Никак. Только брать и пробовать.
Я, например, начал работу с VA.
Но у меня конфа в режиме совместимости 8.3.3. Поэтому ADD в ней просто не работает.
(17)
Таки —ДА!
(18)
Ну так если каждый будет брать и пробовать — какой смысл? Кто-то же попробовал, наверное, и знает. Мы же вроде хомо сапиенс, развиваемся на опыте других людей)
(18)
Жесть. В опенсорсе-то чё делить??
(19)
Целая серия статей была на тему «попробовать».
первая .
Вот
(20)
Не, это я всё читал. Всё равно спасибо за ссылку) А по второй ванессе есть что-то? Не нашёл почему-то ничего на инфостарте.
Но больше всё же хотелось бы, если уже кто-то пробовал и выкладывал опыт сравнения обоих продуктов.
(21)
А там всё очень похоже, почти до идентичности.
Я хоть и начинаю VA осваивать, но в том числе и по упомянутым статьям, которые про ADD.
(21)
Сравнение вряд ли будет.
Держать два набора тестов?
Кто на это согласится?
(21)https://github.com/Pr-Mex/vanessa-automation/blob/develop/NotAdd.MD
Может это снимет часть ваших вопросов?
(23)
Спасибо за ссылку! Это я тоже читал, но там очень абстрактно и для пользователя, по сути, неинтересно. Мне вьетнамский язык не нужен, покрыта ли она тестами — тоже абстрактная информация. Главное там не описано — что она умеет, чего не умеет АДД. Например, я вчера на АДД пытался получить такой шаг, который бы открывал файл через Файл-открыть. И не получилось. С другой стороны, сейчас смотрю видео по ВА — там даже с внешним редактором какая-то работа ведётся, я правда так и не понял, это через ВА или через какой-то сторонний кликер. Но если ВА реально умеет открывать файлы и ещё и не с 1С работать — то это прям заявка на победу! Вот такое бы сравнение где-то почитать — предметное, интересное пользователю системы.
(24) в одной из упомянутых статей есть про открытие внешнего файла.
Я тоже не сразу понял, как сделать.
Вот мой рабочий пример из VA:
Тогда открылось окно ‘* (Дополнительная обработка)’
И я буду выбирать внешний файл «$ПолныйПутьКОбработке$»
И я нажимаю на кнопку ‘Загрузить из файла…’
И я нажимаю на кнопку ‘Записать и закрыть’
Нужен спец.шаг — И я буду выбирать внешний файл. Или как он там в ADD называется.
(25)
Насколько я понял, в том числе и из статей по АДД — этот шаг открывает файл через напрограммированный диалог выбора файлов. Т.е. в справочнике есть поле для выбора файла и т.п. А мне нужно именно открытие файла из главного меню Файл-Открыть
(26) этого не знаю.
Тогда могу только посоветовать спросить в телеграмм-канале — @testspro1c.
(26) простое открытие файл из главного меню никому не интересно.
99% обычных пользователей в своей работе не используют этот пункт меню.
какая бизнес-цель у этого действия?
вот и 1С также посчитала и в интерфейс АПИ 8.3 для упр.приложения не добавила возможности программного вызова через тест-клиенты.
поэтому и в Ванесса-АДД нет этого шага, и у «соседа» с украденным названием нет 🙁
приходится использовать всякие извращения типа SikuliX для управления курсором мыши, отслеживания ситуации на экране и т.п.
а это уже доп.нагрузка, доп.код, доп.инфраструктура, которая опять-таки мало кому нужна.
(28)
ок, понял, спасибо.
Но в целом, фигня, конечно, что 1С это не включили. Любая внешняя обработка тестируется открытием файла.
(29) А вот открытие внешних обработок решается другими способами.
— а точно у вас пользователи работают именно с внешними файлами? 🙂
— или все-таки используется спр.ВнешниеОтчетыОбработки, в которые помещаются проверенные версии внешних файлов?
если последний вариант, тогда для тестирования именно его нужно использовать
и все легко решается штатными средствами 1С, в т.ч. через АПИ 8.3 с использованием того самого «типового» шага из Ванесса-АДД — И я буду выбирать файл «Путь внешней обработки»
(30)
Нет, именно внешний файл. У нас продукт — внешняя обработка. Установка ея (все механизмы создания необходимых данных, обновление файлов со старых версий, дозаполнение настроек и т.п.) происходит, когда администратор перетаскивает файл обработки на окно 1С (ну или через Файл-Открыть, что то же самое).
Соответственно идеальный порядок, к которому стремимся — при появлении в Мастере нового коммита, собирается обработка, запускается автотест, в процессе которого собранная обработка открывается в 1С, т.е. обновляется версия, после чего идёт тест.
(31) для нормальной работы АПИ 8.3. можно использовать механизм расширений.
т.е. сделать расширение, которое будет устанавливаться только в тест-базах
в расширение добавить форму с одной кнопкой «открыть внешнюю обработку»
возможно, нужен реквизит с путем к внешней обработке для управления варианта обработки на разных тест-нодах
все — тестовые сценарий открывают нужную форму, нажимают нужную кнопку и т.п.
все через БДД-шаги
(32)
ок, спасибо, будем пробовать.
Вот такой кейс будет
Показать
(34) Буквально такое я показывал в субботу, 27.07.19, на мастер-классе по тестированию для 1С с помощью Ванесса-АДД в Воронеже — 6,5 часов показывал участникам, как приступить к тестированию в 1С.
35 человек смотрело, училось и повторяло.