1
0
mirror of https://github.com/DoublesunRUS/devscripts.git synced 2026-06-11 22:46:51 +02:00

АвтоФичи VA

This commit is contained in:
Капралов Александр
2021-01-24 15:07:06 +03:00
parent 12186a9282
commit 01dee6f89d
22 changed files with 878 additions and 84 deletions
+2 -2
View File
@@ -12,9 +12,9 @@
В РАЗРАБОТКЕ.<br>
Скрипт для непрерывной интеграции с использованием GitLab.<br>
#### ГенераторФичVA.sbsl
#### АвтоФичиVA.sbsl
В РАЗРАБОТКЕ.<br>
Скрипт, позволяющий по шаблону сгенерировать файлы feature для использования с VanessaAutomation.<br>
Скрипт, позволяющий сгенерировать и запустить тесты в VanessaAutomation по шаблонам.<br>
### Библиотеки
#### ЗапускСкриптов.sbsl
@@ -0,0 +1,23 @@
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы списка документа "%ИмяОбъекта%"
Дано Открытие формы списка документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы существующего документа "%ИмяОбъекта%"
Дано Открытие формы существующего документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы нового документа "%ИмяОбъекта%"
Дано Открытие формы нового документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Перепроведение существующего документа "%ИмяОбъекта%"
Дано Перепроведение существующего документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Исправление существующего документа "%ИмяОбъекта%"
Дано Исправление существующего документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Печать существующего документа "%ИмяОбъекта%"
Дано Печать существующего документа "%ИмяОбъекта%"
@@ -0,0 +1,19 @@
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы списка документа "%ИмяОбъекта%"
Дано Открытие формы списка документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы существующего документа "%ИмяОбъекта%"
Дано Открытие формы существующего документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы нового документа "%ИмяОбъекта%"
Дано Открытие формы нового документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Перепроведение существующего документа "%ИмяОбъекта%"
Дано Перепроведение существующего документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Печать существующего документа "%ИмяОбъекта%"
Дано Печать существующего документа "%ИмяОбъекта%"
@@ -0,0 +1,15 @@
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы списка документа "%ИмяОбъекта%"
Дано Открытие формы списка документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы существующего документа "%ИмяОбъекта%"
Дано Открытие формы существующего документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы нового документа "%ИмяОбъекта%"
Дано Открытие формы нового документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Перепроведение существующего документа "%ИмяОбъекта%"
Дано Перепроведение существующего документа "%ИмяОбъекта%"
@@ -0,0 +1,7 @@
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы списка документа "%ИмяОбъекта%"
Дано Открытие формы списка документа "%ИмяОбъекта%"
#report.feature=Документ "%ИмяОбъекта%"
Сценарий: Открытие формы существующего документа "%ИмяОбъекта%"
Дано Открытие формы существующего документа "%ИмяОбъекта%"
@@ -0,0 +1,3 @@
#report.feature=Журнал документов "%ИмяОбъекта%"
Сценарий: Открытие формы журнала документов "%ИмяОбъекта%"
Дано Открытие формы журнала документов "%ИмяОбъекта%"
@@ -0,0 +1,3 @@
#report.feature=Обработка "%ИмяОбъекта%"
Сценарий: Открытие основной формы обработки "%ИмяОбъекта%"
Дано Открытие основной формы обработки "%ИмяОбъекта%"
@@ -0,0 +1,3 @@
#report.feature=Общая форма "%ИмяОбъекта%"
Сценарий: Открытие общей формы "%ИмяОбъекта%"
Дано Открытие общей формы "%ИмяОбъекта%"
@@ -0,0 +1,3 @@
#report.feature=Отчет "%ИмяОбъекта%"
Сценарий: Формирование отчета "%ИмяОбъекта%"
Дано Формирование отчета "%ИмяОбъекта%"
@@ -0,0 +1,19 @@
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Открытие формы списка справочника "%ИмяОбъекта%"
Дано Открытие формы списка справочника "%ИмяОбъекта%"
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Открытие формы существующего элемента справочника "%ИмяОбъекта%"
Дано Открытие формы существующего элемента справочника "%ИмяОбъекта%"
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Открытие формы нового элемента справочника "%ИмяОбъекта%"
Дано Открытие формы нового элемента справочника "%ИмяОбъекта%"
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Перезапись существующего элемента справочника "%ИмяОбъекта%"
Дано Перезапись существующего элемента справочника "%ИмяОбъекта%"
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Печать существующего элемента справочника "%ИмяОбъекта%"
Дано Печать существующего элемента справочника "%ИмяОбъекта%"
@@ -0,0 +1,15 @@
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Открытие формы списка справочника "%ИмяОбъекта%"
Дано Открытие формы списка справочника "%ИмяОбъекта%"
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Открытие формы существующего элемента справочника "%ИмяОбъекта%"
Дано Открытие формы существующего элемента справочника "%ИмяОбъекта%"
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Открытие формы нового элемента справочника "%ИмяОбъекта%"
Дано Открытие формы нового элемента справочника "%ИмяОбъекта%"
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Перезапись существующего элемента справочника "%ИмяОбъекта%"
Дано Перезапись существующего элемента справочника "%ИмяОбъекта%"
@@ -0,0 +1,7 @@
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Открытие формы списка справочника "%ИмяОбъекта%"
Дано Открытие формы списка справочника "%ИмяОбъекта%"
#report.feature=Справочник "%ИмяОбъекта%"
Сценарий: Открытие формы существующего элемента справочника "%ИмяОбъекта%"
Дано Открытие формы существующего элемента справочника "%ИмяОбъекта%"
@@ -0,0 +1,10 @@
#language: ru
@tree
#report.story=Пользователь "%ПредставлениеПользователя%"
Функциональность: Тесты под пользователем "%ПредставлениеПользователя%"
Контекст:
Дано я подключаю TestClient "%ПредставлениеПользователя%" логин "%ИмяПользователя%" пароль "%ПарольПользователя%"
И я закрыл все окна клиентского приложения
Binary file not shown.
@@ -0,0 +1,120 @@
#language: ru
@tree
@ExportScenarios
Функциональность: Проверка Документов
Сценарий: Открытие формы списка документа "ИмяДокумента"
Дано я закрыл все окна клиентского приложения
Если нет права "Просмотр" к объекту "Документ.[ИмяДокумента]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я открываю основную форму списка документа "ИмяДокумента"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть форму списка документа [ИмяДокумента]"
И я закрыл все окна клиентского приложения
Сценарий: Открытие формы существующего документа "ИмяДокумента"
Дано я закрыл все окна клиентского приложения
Если нет права "Просмотр" к объекту "Документ.[ИмяДокумента]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я ищу последние 5 документов "ИмяДокумента" по каждой организации в переменную "СписокДокументов"
Если '$СписокДокументов$.Количество() = 0' Тогда
Тогда я останавливаю выполнение сценария "Skipped"
И для каждого значения "СсылкаДокумента" из массива "$СписокДокументов$"
Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаДокумента$)' в переменную "НавигационнаяСсылкаДокумента"
Затем я открываю навигационную ссылку "$НавигационнаяСсылкаДокумента$"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаДокумента$"
И я закрыл все окна клиентского приложения
Сценарий: Открытие формы нового документа "ИмяДокумента"
Дано я закрыл все окна клиентского приложения
Если нет права "ИнтерактивноеДобавление" к объекту "Документ.[ИмяДокумента]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я открываю основную форму документа "ИмяДокумента"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть основную форму документа [ИмяДокумента]"
И я закрыл все окна клиентского приложения
Сценарий: Перепроведение существующего документа "ИмяДокумента"
Дано я закрыл все окна клиентского приложения
Если нет права "ИнтерактивноеДобавление" к объекту "Документ.[ИмяДокумента]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я ищу последние 5 документов "ИмяДокумента" по каждой организации в переменную "СписокДокументов"
Если '$СписокДокументов$.Количество() = 0' Тогда
Тогда я останавливаю выполнение сценария "Skipped"
И для каждого значения "СсылкаДокумента" из массива "$СписокДокументов$"
Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаДокумента$)' в переменную "НавигационнаяСсылкаДокумента"
Затем я открываю навигационную ссылку "$НавигационнаяСсылкаДокумента$"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаДокумента$"
И я нажимаю на кнопку "Провести и закрыть"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось перепровести документ $НавигационнаяСсылкаДокумента$"
Если в текущем окне есть сообщения пользователю Тогда
Тогда я вызываю исключение с текстом сообщения
И я закрыл все окна клиентского приложения
Сценарий: Исправление существующего документа "ИмяДокумента"
Дано я закрыл все окна клиентского приложения
Если нет права "ИнтерактивноеДобавление" к объекту "Документ.[ИмяДокумента]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я ищу последние 5 документов "ИмяДокумента" по каждой организации в переменную "СписокДокументов"
Если '$СписокДокументов$.Количество() = 0' Тогда
Тогда я останавливаю выполнение сценария "Skipped"
И для каждого значения "СсылкаДокумента" из массива "$СписокДокументов$"
Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаДокумента$)' в переменную "НавигационнаяСсылкаДокумента"
Затем я открываю навигационную ссылку "$НавигационнаяСсылкаДокумента$"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаДокумента$"
И я нажимаю на гиперссылку с именем "Исправить"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось исправить документ $НавигационнаяСсылкаДокумента$"
Тогда открылось окно "*(создание)"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось дождаться создания исправленного документа $НавигационнаяСсылкаДокумента$"
И я нажимаю на кнопку "Провести"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось записать и провести документ-исправление"
Если в текущем окне есть сообщения пользователю Тогда
Тогда я вызываю исключение с текстом сообщения
И я нажимаю на кнопку "Пометить на удаление / Снять пометку"
Затем Если появилось окно диалога я нажимаю на кнопку "Да"
И я закрыл все окна клиентского приложения
Сценарий: Печать существующего документа "ИмяДокумента"
Дано я закрыл все окна клиентского приложения
Если нет права "Просмотр" к объекту "Документ.[ИмяДокумента]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я получаю список команд печати для объекта метаданных "Документ.[ИмяДокумента]" в переменную "СписокПечатныхФорм"
Если '$СписокПечатныхФорм$.Количество() = 0' Тогда
Тогда я останавливаю выполнение сценария "Skipped"
И я ищу последние 5 документов "ИмяДокумента" по каждой организации в переменную "СписокДокументов"
Если '$СписокДокументов$.Количество() = 0' Тогда
Тогда я останавливаю выполнение сценария "Skipped"
И для каждого значения "СсылкаДокумента" из массива "$СписокДокументов$"
Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаДокумента$)' в переменную "НавигационнаяСсылкаДокумента"
Затем я открываю навигационную ссылку "$НавигационнаяСсылкаДокумента$"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаДокумента$"
И для каждого значения "ПечатнаяФормаОбъекта" из массива "$СписокПечатныхФорм$"
Тогда я запоминаю значение выражения '$ПечатнаяФормаОбъекта$.Представление' в переменную "НаименованиеПечатнойФормы"
Если элемент с заголовком "$НаименованиеПечатнойФормы$" присутствует на форме тогда
Тогда я нажимаю на кнопку "$НаименованиеПечатнойФормы$"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось напечатать форму $НаименованиеПечатнойФормы$ для документа $НавигационнаяСсылкаДокумента$"
И я закрываю текущее окно
И я закрыл все окна клиентского приложения
@@ -0,0 +1,17 @@
#language: ru
@tree
@ExportScenarios
Функциональность: Проверка Журналов документов
Сценарий: Открытие формы журнала документов "ИмяЖурналаДокументов"
Дано я закрыл все окна клиентского приложения
Если нет права "Просмотр" к объекту "ЖурналДокументов.[ИмяЖурналаДокументов]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я открываю основную форму журнала документов "ИмяЖурналаДокументов"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть форму журнала документов [ИмяЖурналаДокументов]"
И я закрыл все окна клиентского приложения
@@ -0,0 +1,17 @@
#language: ru
@tree
@ExportScenarios
Функциональность: Проверка Обработок
Сценарий: Открытие основной формы обработки "ИмяОбработки"
Дано я закрыл все окна клиентского приложения
Если нет права "Использование" к объекту "Обработка.[ИмяОбработки]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я открываю основную форму обработки "ИмяОбработки"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть форму основную обработки [ИмяОбработки]"
И я закрыл все окна клиентского приложения
@@ -0,0 +1,17 @@
#language: ru
@tree
@ExportScenarios
Функциональность: Проверка Общих форм
Сценарий: Открытие общей формы "ИмяОбщейФормы"
Дано я закрыл все окна клиентского приложения
Если нет права "Просмотр" к объекту "ОбщаяФорма.[ИмяОбщейФормы]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я открываю общую форму "ИмяОбщейФормы"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть общую форму [ИмяОбщейФормы]"
И я закрыл все окна клиентского приложения
@@ -0,0 +1,21 @@
#language: ru
@tree
@ExportScenarios
Функциональность: Проверка Отчетов
Сценарий: Формирование отчета "ИмяОтчета"
Дано я закрыл все окна клиентского приложения
Если нет права "Использование" к объекту "Отчет.[ИмяОтчета]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я открываю основную форму отчета "ИмяОтчета"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть форму отчета [ИмяОтчета]"
И я нажимаю на кнопку "Сформировать"
И я жду заполнение табличного документа 'ОтчетТабличныйДокумент' в течение 10 секунд
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось сформировать отчет [ИмяОтчета]"
И я закрыл все окна клиентского приложения
@@ -0,0 +1,91 @@
#language: ru
@tree
@ExportScenarios
Функциональность: Проверка Справочников
Сценарий: Открытие формы списка справочника "ИмяСправочника"
Дано я закрыл все окна клиентского приложения
Если нет права "Просмотр" к объекту "Справочник.[ИмяСправочника]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я открываю основную форму списка справочника "ИмяСправочника"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть форму списка справочника [ИмяСправочника]"
И я закрыл все окна клиентского приложения
Сценарий: Открытие формы существующего элемента справочника "ИмяСправочника"
Дано я закрыл все окна клиентского приложения
Если нет права "Просмотр" к объекту "Справочник.[ИмяСправочника]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я ищу последние 5 элементов объекта "Справочник.[ИмяСправочника]" в переменную "СписокЭлементов"
Если '$СписокЭлементов$.Количество() = 0' Тогда
Тогда я останавливаю выполнение сценария "Skipped"
И для каждого значения "СсылкаСправочника" из массива "$СписокЭлементов$"
Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаСправочника$)' в переменную "НавигационнаяСсылкаСправочника"
Затем я открываю навигационную ссылку "$НавигационнаяСсылкаСправочника$"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаСправочника$"
И я закрыл все окна клиентского приложения
Сценарий: Открытие формы нового элемента справочника "ИмяСправочника"
Дано я закрыл все окна клиентского приложения
Если нет права "ИнтерактивноеДобавление" к объекту "Справочник.[ИмяСправочника]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я открываю основную форму справочника "ИмяСправочника"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть основную форму элемента справочника [ИмяСправочника]"
И я закрыл все окна клиентского приложения
Сценарий: Перезапись существующего элемента справочника "ИмяСправочника"
Дано я закрыл все окна клиентского приложения
Если нет права "ИнтерактивноеДобавление" к объекту "Справочник.[ИмяСправочника]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я ищу последние 5 элементов объекта "Справочник.[ИмяСправочника]" в переменную "СписокЭлементов"
Если '$СписокЭлементов$.Количество() = 0' Тогда
Тогда я останавливаю выполнение сценария "Skipped"
И для каждого значения "СсылкаСправочника" из массива "$СписокЭлементов$"
Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаСправочника$)' в переменную "НавигационнаяСсылкаСправочника"
Затем я открываю навигационную ссылку "$НавигационнаяСсылкаСправочника$"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаСправочника$"
И я нажимаю на кнопку "Записать и закрыть"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось перезаписать элемент справочника $НавигационнаяСсылкаСправочника$"
Если в текущем окне есть сообщения пользователю Тогда
Тогда я вызываю исключение с текстом сообщения
И я закрыл все окна клиентского приложения
Сценарий: Печать существующего элемента справочника "ИмяСправочника"
Дано я закрыл все окна клиентского приложения
Если нет права "Просмотр" к объекту "Справочник.[ИмяСправочника]" тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я получаю список команд печати для объекта метаданных "Справочник.[ИмяСправочника]" в переменную "СписокПечатныхФорм"
Если '$СписокПечатныхФорм$.Количество() = 0' Тогда
Тогда я останавливаю выполнение сценария "Skipped"
Дано я ищу последние 5 элементов объекта "Справочник.[ИмяСправочника]" в переменную "СписокЭлементов"
Если '$СписокЭлементов$.Количество() = 0' Тогда
Тогда я останавливаю выполнение сценария "Skipped"
И для каждого значения "СсылкаСправочника" из массива "$СписокЭлементов$"
Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаСправочника$)' в переменную "НавигационнаяСсылкаСправочника"
Затем я открываю навигационную ссылку "$НавигационнаяСсылкаСправочника$"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаСправочника$"
И для каждого значения "ПечатнаяФормаОбъекта" из массива "$СписокПечатныхФорм$"
Тогда я запоминаю значение выражения '$ПечатнаяФормаОбъекта$.Представление' в переменную "НаименованиеПечатнойФормы"
Если элемент с заголовком "$НаименованиеПечатнойФормы$" присутствует на форме тогда
Тогда я нажимаю на кнопку "$НаименованиеПечатнойФормы$"
Если появилось предупреждение тогда
Тогда я вызываю исключение "Не удалось напечатать форму $НаименованиеПечатнойФормы$ для элемента справочника $НавигационнаяСсылкаСправочника$"
И я закрываю текущее окно
И я закрыл все окна клиентского приложения
+466
View File
@@ -0,0 +1,466 @@
#!/usr/bin/executor
/*******************************************************************************
* Copyright (c) 2020 Alexander Kapralov and Contributors
* This program and the accompanying materials are made available under
* the terms of the BSD 3-Clause License which is available at
* https://spdx.org/licenses/BSD-3-Clause.html#licenseText
*
* SPDX-License-Identifier: BSD-3-Clause
*
* Contributors:
*
*
******************************************************************************/
структура ОписаниеНастроек
пер НастройкиVA: ОписаниеНастроекVA
пер НастройкиТестовойБазы: ОписаниеНастроекТестовойБазы
пер НастройкиАвтофич: ОписаниеНастроекАвтофич
;
структура ОписаниеНастроекVA
пер ПутьVanessaAutomationSingle: Строка
пер КаталогПроекта: Строка
пер КаталогФич: Строка
пер КаталогиБиблиотек: Массив
пер КаталогОтчетов: Строка
;
структура ОписаниеНастроекТестовойБазы
пер ВерсияПлатформы: Строка
пер ПутьКИБ: Строка
пер ИмяПользователя: Строка
пер ПарольПользователя: Строка
;
структура ОписаниеНастроекАвтофич
пер КаталогАвтофич: Строка
пер КаталогШаблоновШагов: Строка
пер ФайлШаблонаШапки: Строка
пер Пользователи: Массив
;
структура ОписаниеПользователя
пер Представление: Строка
пер Имя: Строка
пер Пароль: Строка
;
структура ОписаниеОбъектаАвтофичи
пер Объект: Строка
пер ШаблонФичи: Строка
пер Пользователи: Массив
;
структура VAParams
пер КаталогПроекта: Строка
пер КаталогФич: Строка
пер ВыполнитьСценарии: Булево = Истина
пер ВыполнятьШагиАссинхронно: Булево = Ложь
пер ДелатьЛогВыполненияСценариевВЖР: Булево = Ложь
пер ЗавершитьРаботуСистемы: Булево = Истина
пер ЗакрытьTestClientПослеЗапускаСценариев: Булево = Истина
пер ОбновлятьСтатистикуВДереве: Булево = Ложь
пер ОбновлятьДеревоПриНачалеВыполненияСценария: Булево = Ложь
пер КаталогиБиблиотек: Массив
пер ДелатьОтчетВФорматеjUnit: Булево = Истина
пер КаталогВыгрузкиjUnit: Строка
пер ДелатьОтчетВФорматеАллюр: Булево = Истина
пер ОтчетAllure: VAParamsОтчетAllure
конструктор(КаталогПроекта, КаталогФич, КаталогиБиблиотек, КаталогВыгрузкиjUnit, ОтчетAllure)
;
структура VAParamsОтчетAllure
пер КаталогВыгрузкиAllure: Строка
пер КаталогОтносительноКоторогоНадоСтроитьИерархию: Строка
пер УровеньОтчета1: Строка = "#report.epic=;Каталог1"
пер УровеньОтчета2: Строка = "#report.feature="
пер УровеньОтчета3: Строка = "#report.story="
пер ГруппировкаTestSuites: Строка = "#report.feature="
конструктор(КаталогВыгрузкиAllure, КаталогОтносительноКоторогоНадоСтроитьИерархию)
;
метод CreateFeatures(имяФайлаНастроек: Строка)
знч настройки = ПрочитатьНастройки(имяФайлаНастроек)
пер автофичи = новый Соответствие()
пер настройкиПоиска = новый НастройкиПоискаФайлов()
настройкиПоиска.ИмяСодержит(".tsv")
для файлАвтофичи из Файлы.Найти(настройки.НастройкиАвтофич.КаталогАвтофич, настройкиПоиска)
пер массивОбъектов = новый Массив()
исп потокФайлаАвтофичи = файлАвтофичи.ОткрытьПотокЧтения()
пер чтениеФайлаАвтофичи = новый ЧтениеДанных(потокФайлаАвтофичи)
пока не чтениеФайлаАвтофичи.ЧтениеЗавершено()
знч строкаФайла = чтениеФайлаАвтофичи.ПрочитатьСтроку("cp1251")
если строкаФайла.Пусто()
продолжить
;
знч массивСтроки = строкаФайла.Разделить("\т", Истина)
если массивСтроки.Размер() != 3
выбросить новый ИсключениеИндексВнеГраниц(
"В каждой строке автофича файла должно быть 3 значения, разделенных табуляцией.")
;
знч пользователиАвтофичи = массивСтроки[2].Разделить(",")
знч объектАвтофичи = новый ОписаниеОбъектаАвтофичи(массивСтроки[0], массивСтроки[1], пользователиАвтофичи)
массивОбъектов.Добавить(объектАвтофичи)
;
автофичи.Вставить(файлАвтофичи.ИмяБезРасширения, массивОбъектов)
;
пер файлШаблонаШапки = новый Файл("%{настройки.НастройкиАвтофич.КаталогШаблоновШагов}/%{настройки.НастройкиАвтофич
.ФайлШаблонаШапки}")
исп потокШаблонаШапки = файлШаблонаШапки.ОткрытьПотокЧтения()
знч текстШаблонаШапки = потокШаблонаШапки.ПрочитатьКакТекст()
пер текстыШаблоновОбъектов = новый Соответствие()
для пользователь из настройки.НастройкиАвтофич.Пользователи
пер текстФичи = текстШаблонаШапки
текстФичи = текстФичи.Заменить("\%ПредставлениеПользователя\%", пользователь.Представление)
текстФичи = текстФичи.Заменить("\%ИмяПользователя\%", пользователь.Имя)
текстФичи = текстФичи.Заменить("\%ПарольПользователя\%", пользователь.Пароль)
для автофича из автофичи
для описаниеОбъекта из автофича.Значение
если описаниеОбъекта.Пользователи.Найти(пользователь.Представление) == Неопределено
продолжить
;
пер текстОбъекта = ""
если текстыШаблоновОбъектов.СодержитКлюч(описаниеОбъекта.ШаблонФичи)
текстОбъекта = текстыШаблоновОбъектов.Получить(описаниеОбъекта.ШаблонФичи)
иначе
пер файлШаблонаОбъекта = новый Файл("%{настройки.НастройкиАвтофич
.КаталогШаблоновШагов}/%{описаниеОбъекта.ШаблонФичи}")
исп потокШаблонаОбъекта = файлШаблонаОбъекта.ОткрытьПотокЧтения()
знч текстШаблонаОбъекта = потокШаблонаОбъекта.ПрочитатьКакТекст()
текстыШаблоновОбъектов.Вставить(описаниеОбъекта.ШаблонФичи, текстШаблонаОбъекта)
текстОбъекта = текстШаблонаОбъекта
;
текстОбъекта = текстОбъекта.Заменить("\%ИмяОбъекта\%", описаниеОбъекта.Объект.Разделить(".")[1])
текстФичи = текстФичи + Символы.НоваяСтрока + текстОбъекта
;
Файлы.СоздатьКаталог("%{настройки.НастройкиVA.КаталогФич}/%{автофича.Ключ}")
пер файлФичи = новый Файл("%{настройки.НастройкиVA.КаталогФич}/%{автофича.Ключ}/%{автофича.Ключ}-%{пользователь
.Представление}.feature")
исп потокФичи = файлФичи.ОткрытьПотокЗаписи()
потокФичи.Записать(текстФичи)
;
;
;
метод RunTests(имяФайлаНастроек: Строка)
знч настройки = ПрочитатьНастройки(имяФайлаНастроек)
знч каталогВыгрузкиAllure = "%{настройки.НастройкиVA.КаталогОтчетов}/allure"
если не Файлы.Найти(каталогВыгрузкиAllure).Пусто()
Файлы.Удалить(каталогВыгрузкиAllure)
;
Файлы.СоздатьКаталог("%каталогВыгрузкиAllure/history")
для файлИстории из Файлы.Найти("%{настройки.НастройкиVA.КаталогОтчетов}/allure-report/history")
Файлы.Скопировать(файлИстории, "%каталогВыгрузкиAllure/history/%{файлИстории.Имя}")
;
знч исполняемыйФайлПлатформы = ИсполняемыйФайлПлатформыПоМаксимальнойСборке(настройки.НастройкиТестовойБазы
.ВерсияПлатформы)
знч временныйФайлНастроекVA = Файлы.СоздатьВременныйФайл("VAParams", ".json")
пер настройкиVAParamsОтчетAllure = новый VAParamsОтчетAllure(каталогВыгрузкиAllure, настройки.НастройкиVA.КаталогФич)
пер настройкиVAParams = новый VAParams(настройки.НастройкиVA.КаталогПроекта, настройки.НастройкиVA.КаталогФич, настройки.НастройкиVA
.КаталогиБиблиотек, "%{настройки.НастройкиVA.КаталогОтчетов}/junit", настройкиVAParamsОтчетAllure)
исп потокНастроекVA = временныйФайлНастроекVA.ОткрытьПотокЗаписи()
СериализацияJson.ЗаписатьОбъект(потокНастроекVA, настройкиVAParams)
потокНастроекVA.Закрыть()
знч параметрыVA = "StartFeaturePlayer;VBParams=%временныйФайлНастроекVA"
ExecuteDataProcessorTestManager(настройки.НастройкиVA.ПутьVanessaAutomationSingle, параметрыVA, настройки.НастройкиТестовойБазы
.ПутьКИБ, исполняемыйФайлПлатформы, настройки.НастройкиТестовойБазы.ИмяПользователя, настройки.НастройкиТестовойБазы
.ПарольПользователя)
AllureGenerate(настройки)
;
метод OpenReport(имяФайлаНастроек: Строка)
знч настройки = ПрочитатьНастройки(имяФайлаНастроек)
AllureOpen(настройки)
;
метод ПрочитатьНастройки(имяФайлаНастроек: Строка): ОписаниеНастроек
пер файлНастроек = новый Файл(имяФайлаНастроек)
исп потокФайлаНастроек = файлНастроек.ОткрытьПотокЧтения()
пер настройкиJson = новый НастройкиЧтенияОбъектовJson()
настройкиJson.ИгнорироватьНеизвестныеСвойства = Истина
пер настройки = СериализацияJson.ПрочитатьОбъект(потокФайлаНастроек, Тип(ОписаниеНастроек),
настройкиJson) как ОписаниеНастроек
пер пользователи = новый Массив()
для пользователь из настройки.НастройкиАвтофич.Пользователи
знч описаниеПользователя = новый ОписаниеПользователя(пользователь["ПредставлениеПользователя"],
пользователь["ИмяПользователя"], пользователь["ПарольПользователя"])
пользователи.Добавить(описаниеПользователя)
;
настройки.НастройкиАвтофич.Пользователи = пользователи
возврат настройки
;
метод AllureOpen(настройки: ОписаниеНастроек)
пер имяКоманды = ""
пер параметрыПроцесса = новый Массив()
знч версияОС = ИспользуемаяОС()
выбор версияОС
когда ОперационныеСистемы.Windows
имяКоманды = "allure.bat"
иначе
имяКоманды = "allure"
;
параметрыПроцесса.Добавить("open")
параметрыПроцесса.Добавить("%{настройки.НастройкиVA.КаталогОтчетов}/allure-report")
ВыполнитьКомандуСистемы(имяКоманды, параметрыПроцесса)
;
метод AllureGenerate(настройки: ОписаниеНастроек)
пер имяКоманды = ""
пер параметрыПроцесса = новый Массив()
знч версияОС = ИспользуемаяОС()
выбор версияОС
когда ОперационныеСистемы.Windows
имяКоманды = "allure.bat"
иначе
имяКоманды = "allure"
;
параметрыПроцесса.Добавить("generate")
параметрыПроцесса.Добавить("%{настройки.НастройкиVA.КаталогОтчетов}/allure")
параметрыПроцесса.Добавить("--clean")
параметрыПроцесса.Добавить("-o")
параметрыПроцесса.Добавить("%{настройки.НастройкиVA.КаталогОтчетов}/allure-report")
ВыполнитьКомандуСистемы(имяКоманды, параметрыПроцесса)
;
метод ВыполнитьКомандуСистемы(имяКоманды: Строка, параметры: Массив)
знч процесс = новый ПроцессОс(имяКоманды, параметры, Ложь)
процесс.Запустить()
процесс.ОжидатьЗавершения()
знч кодВозврата = процесс.ПолучитьКодВозврата()
Консоль.Записать("Код возврата:" + кодВозврата)
пер результатВыполненияСкрипта = процесс.ПолучитьПотокВывода()
знч текстРезультата = результатВыполненияСкрипта.ПрочитатьКакТекст(КодировкаПотокаВывода())
если не текстРезультата.Пусто()
Консоль.Записать("Поток вывода:")
Консоль.Записать(текстРезультата)
;
пер ошибкиВыполненияСкрипта = процесс.ПолучитьПотокОшибок()
знч текстОшибок = ошибкиВыполненияСкрипта.ПрочитатьКакТекст(КодировкаПотокаВывода())
если не текстОшибок.Пусто()
Консоль.Записать("Поток ошибок:")
Консоль.Записать(текстОшибок)
;
;
метод КодировкаПотокаВывода(): Строка
возврат "Cp1251"
;
перечисление ОперационныеСистемы
Windows,
MacOS,
Linux
;
метод ИспользуемаяОС(): ОперационныеСистемы
знч имяОС = СредаИсполнения.ПолучитьСвойство("os.name")
выбор когда имяОС.НачинаетсяС("windows", Истина)
возврат ОперационныеСистемы.Windows
когда имяОС.Содержит("mac", Истина)
возврат ОперационныеСистемы.MacOS
когда имяОС.Содержит("nux", Истина)
возврат ОперационныеСистемы.Linux
иначе
выбросить новый ИсключениеНедопустимоеСостояние("Неизвестная ОС")
;
;
метод ИсполняемыйФайлПлатформыПоМаксимальнойСборке(версияПлатформы: Строка): Строка
знч установленныеПлатформы = УстановленныеПлатформы()
если установленныеПлатформы.СодержитКлюч(версияПлатформы)
знч путьКПлатформе = установленныеПлатформы.Получить(версияПлатформы)
возврат "%путьКПлатформе/bin/1cv8"
;
знч максимальныеПлатформы = МаксимальныеПлатформы()
если максимальныеПлатформы.СодержитКлюч(версияПлатформы)
знч путьКПлатформе = максимальныеПлатформы.Получить(версияПлатформы)
возврат "%путьКПлатформе/bin/1cv8"
;
знч текстОшибки = "Не найдена установленная платформа %версияПлатформы"
выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки)
;
метод МаксимальныеПлатформы(): Соответствие
знч установленныеПлатформы = УстановленныеПлатформы()
пер максимальныеПлатформы: Соответствие
для платформа из установленныеПлатформы
знч разложенныйТекущийРелиз = платформа.Ключ.Разделить(".")
пер релизБезВерсииМассивом = новый Массив(разложенныйТекущийРелиз)
релизБезВерсииМассивом.УдалитьПоИндексу(3)
знч релизБезВерсии = Строки.Соединить(релизБезВерсииМассивом, ".")
если не максимальныеПлатформы.СодержитКлюч(релизБезВерсии)
максимальныеПлатформы.Вставить(релизБезВерсии, платформа.Значение)
продолжить
;
знч последнийРелиз = максимальныеПлатформы.Получить(релизБезВерсии)
знч разложенныйПоследнийРелиз = последнийРелиз.Разделить(".")
если разложенныйТекущийРелиз[3] > разложенныйПоследнийРелиз[3]
максимальныеПлатформы.Вставить(релизБезВерсии, платформа.Значение)
;
;
возврат максимальныеПлатформы
;
метод УстановленныеПлатформы(): Соответствие
пер установленныеПлатформы: Соответствие
знч каталогиПлатформы = КаталогиПлатформы()
знч настройкиПоискаФайлов = новый НастройкиПоискаФайлов()
настройкиПоискаФайлов.ИсключитьФайлы(Истина)
настройкиПоискаФайлов.МаксимальнаяГлубина(1)
для каталогПлатформы из каталогиПлатформы
знч найденныеФайлы = Файлы.Найти(каталогПлатформы, настройкиПоискаФайлов)
для найденныйФайл из найденныеФайлы
если не найденныйФайл.Имя.НачинаетсяС("8.3")
продолжить
;
установленныеПлатформы.Вставить(найденныйФайл.Имя, найденныйФайл.Путь)
;
;
возврат установленныеПлатформы
;
метод КаталогиПлатформы(): Массив
пер списокКаталогов: Массив
знч используемаяОС = ИспользуемаяОС()
выбор используемаяОС
когда ОперационныеСистемы.Windows
знч каталог32 = СредаИсполнения.ПолучитьПеременную("ProgramFiles(x86)")
списокКаталогов.Добавить("%каталог32\\1Cv8")
знч каталог64 = СредаИсполнения.ПолучитьПеременную("ProgramFiles")
списокКаталогов.Добавить("%каталог64\\1Cv8")
когда ОперационныеСистемы.MacOS
списокКаталогов.Добавить("/opt/1Cv8")
когда ОперационныеСистемы.Linux
списокКаталогов.Добавить("/opt/1C/v8.3/x86_64")
;
возврат списокКаталогов
;
метод ExecuteDataProcessorTestManager(имяВнешнейОбработки: Строка, вспомогательныеПараметры: Строка, путьКИБ: Строка,
имяФайлаПлатформы: Строка, имяПользователя: Строка = "", пароль: Строка = "")
пер параметрыПроцесса = новый Массив()
параметрыПроцесса.Добавить("ENTERPRISE")
параметрыПроцесса.Добавить("/TestManager")
параметрыПроцесса.Добавить("/Execute")
параметрыПроцесса.Добавить(имяВнешнейОбработки)
если не вспомогательныеПараметры.Пусто()
параметрыПроцесса.Добавить("/C\"%вспомогательныеПараметры\"")
;
параметрыПроцесса.Добавить("/IBConnectionString")
параметрыПроцесса.Добавить("\"File=\"\"%путьКИБ\"\"\"")
параметрыПроцесса.Добавить("/DisableStartupDialogs")
параметрыПроцесса.Добавить("/WA-")
если не имяПользователя.Пусто()
параметрыПроцесса.Добавить("/N")
параметрыПроцесса.Добавить("\"%имяПользователя\"")
;
если не пароль.Пусто()
параметрыПроцесса.Добавить("/P")
параметрыПроцесса.Добавить(пароль)
;
ВыполнитьКомандуПлатформы(имяФайлаПлатформы, параметрыПроцесса)
Консоль.Записать("Обработка запущена.")
;
метод ВыполнитьКомандуПлатформы(имяКоманды: Строка, параметры: Массив, выводитьОшибки: Булево = Истина)
знч временныйФайлЛогов = Файлы.СоздатьВременныйФайл()
параметры.Добавить("/Out")
параметры.Добавить(временныйФайлЛогов.Путь)
пер процесс = новый ПроцессОс(имяКоманды, параметры)
процесс.Запустить()
процесс.ОжидатьЗавершения()
исп результатВыполненияСкрипта = процесс.ПолучитьПотокВывода()
знч текстРезультата = результатВыполненияСкрипта.ПрочитатьКакТекст()
если не текстРезультата.Пусто()
Консоль.Записать(текстРезультата)
;
знч кодВозврата = процесс.ПолучитьКодВозврата()
если кодВозврата == 0
возврат
;
пер текстОшибки = "Код возврата: %кодВозврата"
если не выводитьОшибки
выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки)
;
текстОшибки += Строки.Шаблон("\в\нКоманда: $0\в\нПараметры: $1", [имяКоманды, Строки.Соединить(параметры, " ")])
исп ошибкиВыполненияСкрипта = временныйФайлЛогов.ОткрытьПотокЧтения()
текстОшибки += "\в\н" + ошибкиВыполненияСкрипта.ПрочитатьКакТекст(КодировкаПотокаВыводаПлатформы())
выбросить новый ИсключениеНедопустимоеСостояние(текстОшибки)
;
метод КодировкаПотокаВыводаПлатформы(): Строка
если ИспользуемаяОС() == ОперационныеСистемы.Windows
возврат "windows-1251"
;
возврат "UTF-8"
;
@@ -1,82 +0,0 @@
#!/usr/bin/executor
/*******************************************************************************
* Copyright (c) 2020 Alexander Kapralov and Contributors
* This program and the accompanying materials are made available under
* the terms of the BSD 3-Clause License which is available at
* https://spdx.org/licenses/BSD-3-Clause.html#licenseText
*
* SPDX-License-Identifier: BSD-3-Clause
*
* Contributors:
*
*
******************************************************************************/
структура ОписаниеНастроек
пер КаталогФич: Строка
пер ШаблонШапки: Строка
пер ШаблонОбъекта: Строка
пер ИмяПеременнойОбъекта: Строка
пер Объекты: Массив
пер Пользователи: Массив
;
структура ОписаниеПользователя
пер Представление: Строка
пер Имя: Строка
пер Пароль: Строка
;
метод Скрипт(путьНастройки: Строка, путьШаблоны: Строка, путьФичи: Строка)
пер списокНастроек = новый Массив()
пер настройкиПоиска = новый НастройкиПоискаФайлов()
настройкиПоиска.ИмяСодержит(".json")
для файлНастроек из Файлы.Найти(путьНастройки, настройкиПоиска)
исп потокФайлаНастроек = файлНастроек.ОткрытьПотокЧтения()
пер настройкиJson = новый НастройкиЧтенияОбъектовJson()
настройкиJson.ИгнорироватьНеизвестныеСвойства = Истина
пер настройки = СериализацияJson.ПрочитатьОбъект(потокФайлаНастроек, Тип(ОписаниеНастроек), настройкиJson) как ОписаниеНастроек
пер пользователи = новый Массив()
для пользователь из настройки.Пользователи
знч описаниеПользователя = новый ОписаниеПользователя(пользователь["ПредставлениеПользователя"], пользователь["ИмяПользователя"],
пользователь["ПарольПользователя"])
пользователи.Добавить(описаниеПользователя)
;
настройки.Пользователи = пользователи
списокНастроек.Добавить(настройки)
;
для настройки из списокНастроек
пер файлШаблонаШапки = новый Файл("%путьШаблоны/%{настройки.ШаблонШапки}")
исп потокШаблонаШапки = файлШаблонаШапки.ОткрытьПотокЧтения()
знч текстШаблонаШапки = потокШаблонаШапки.ПрочитатьКакТекст()
пер файлШаблонаОбъекта = новый Файл("%путьШаблоны/%{настройки.ШаблонОбъекта}")
исп потокШаблонаОбъекта = файлШаблонаОбъекта.ОткрытьПотокЧтения()
знч текстШаблонаОбъекта = потокШаблонаОбъекта.ПрочитатьКакТекст()
пер имяФайлаБезРасширения = файлШаблонаОбъекта.ИмяБезРасширения
для пользователь из настройки.Пользователи
пер текстФичи = текстШаблонаШапки
текстФичи = текстФичи.Заменить("\%ПредставлениеПользователя\%", пользователь.Представление)
текстФичи = текстФичи.Заменить("\%ИмяПользователя\%", пользователь.Имя)
текстФичи = текстФичи.Заменить("\%ПарольПользователя\%", пользователь.Пароль)
для объект из настройки.Объекты
пер текстОбъекта = текстШаблонаОбъекта
текстОбъекта = текстОбъекта.Заменить("\%%{настройки.ИмяПеременнойОбъекта}\%", объект)
текстФичи = текстФичи + Символы.НоваяСтрока + текстОбъекта
;
пер файлФичи = новый Файл("%путьФичи/%{настройки.КаталогФич}/%имяФайлаБезРасширения-%{пользователь.Представление}.feature")
исп потокФичи = файлФичи.ОткрытьПотокЗаписи()
потокФичи.Записать(текстФичи)
;
;
;