From 01dee6f89df21b828e5d4a2eda2bf8ee65a2fd1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B0=D0=BF=D1=80=D0=B0=D0=BB=D0=BE=D0=B2=20=D0=90?= =?UTF-8?q?=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= Date: Sun, 24 Jan 2021 15:07:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=B2=D1=82=D0=BE=D0=A4=D0=B8=D1=87?= =?UTF-8?q?=D0=B8=20VA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- ...Документы-Открытие-Создание-Печать-Исправление.feature | 23 + .../Документы-Открытие-Создание-Печать.feature | 19 + .../Шаблоны/Документы-Открытие-Создание.feature | 15 + VA-Тесты/Шаблоны/Документы-Открытие.feature | 7 + VA-Тесты/Шаблоны/ЖурналыДокументов.feature | 3 + VA-Тесты/Шаблоны/Обработки.feature | 3 + VA-Тесты/Шаблоны/ОбщиеФормы.feature | 3 + VA-Тесты/Шаблоны/Отчеты.feature | 3 + .../Справочники-Открытие-Создание-Печать.feature | 19 + .../Шаблоны/Справочники-Открытие-Создание.feature | 15 + VA-Тесты/Шаблоны/Справочники-Открытие.feature | 7 + VA-Тесты/Шаблоны/Шапка.feature | 10 + VA-Тесты/Шаги/kapral.epf | Bin 0 -> 10793 bytes VA-Тесты/Шаги/Документы.feature | 120 +++++ VA-Тесты/Шаги/ЖурналыДокументов.feature | 17 + VA-Тесты/Шаги/Обработки.feature | 17 + VA-Тесты/Шаги/ОбщиеФормы.feature | 17 + VA-Тесты/Шаги/Отчеты.feature | 21 + VA-Тесты/Шаги/Справочники.feature | 91 ++++ Скрипты/АвтоФичиVA.sbsl | 466 ++++++++++++++++++ Скрипты/ГенераторФичVA.sbsl | 82 --- 22 files changed, 878 insertions(+), 84 deletions(-) create mode 100644 VA-Тесты/Шаблоны/Документы-Открытие-Создание-Печать-Исправление.feature create mode 100644 VA-Тесты/Шаблоны/Документы-Открытие-Создание-Печать.feature create mode 100644 VA-Тесты/Шаблоны/Документы-Открытие-Создание.feature create mode 100644 VA-Тесты/Шаблоны/Документы-Открытие.feature create mode 100644 VA-Тесты/Шаблоны/ЖурналыДокументов.feature create mode 100644 VA-Тесты/Шаблоны/Обработки.feature create mode 100644 VA-Тесты/Шаблоны/ОбщиеФормы.feature create mode 100644 VA-Тесты/Шаблоны/Отчеты.feature create mode 100644 VA-Тесты/Шаблоны/Справочники-Открытие-Создание-Печать.feature create mode 100644 VA-Тесты/Шаблоны/Справочники-Открытие-Создание.feature create mode 100644 VA-Тесты/Шаблоны/Справочники-Открытие.feature create mode 100644 VA-Тесты/Шаблоны/Шапка.feature create mode 100644 VA-Тесты/Шаги/kapral.epf create mode 100644 VA-Тесты/Шаги/Документы.feature create mode 100644 VA-Тесты/Шаги/ЖурналыДокументов.feature create mode 100644 VA-Тесты/Шаги/Обработки.feature create mode 100644 VA-Тесты/Шаги/ОбщиеФормы.feature create mode 100644 VA-Тесты/Шаги/Отчеты.feature create mode 100644 VA-Тесты/Шаги/Справочники.feature create mode 100644 Скрипты/АвтоФичиVA.sbsl delete mode 100644 Скрипты/ГенераторФичVA.sbsl diff --git a/README.md b/README.md index 8616a1b..f541fd8 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,9 @@ В РАЗРАБОТКЕ.
Скрипт для непрерывной интеграции с использованием GitLab.
-#### ГенераторФичVA.sbsl +#### АвтоФичиVA.sbsl В РАЗРАБОТКЕ.
-Скрипт, позволяющий по шаблону сгенерировать файлы feature для использования с VanessaAutomation.
+Скрипт, позволяющий сгенерировать и запустить тесты в VanessaAutomation по шаблонам.
### Библиотеки #### ЗапускСкриптов.sbsl diff --git a/VA-Тесты/Шаблоны/Документы-Открытие-Создание-Печать-Исправление.feature b/VA-Тесты/Шаблоны/Документы-Открытие-Создание-Печать-Исправление.feature new file mode 100644 index 0000000..dc4f069 --- /dev/null +++ b/VA-Тесты/Шаблоны/Документы-Открытие-Создание-Печать-Исправление.feature @@ -0,0 +1,23 @@ +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы списка документа "%ИмяОбъекта%" + Дано Открытие формы списка документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы существующего документа "%ИмяОбъекта%" + Дано Открытие формы существующего документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы нового документа "%ИмяОбъекта%" + Дано Открытие формы нового документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Перепроведение существующего документа "%ИмяОбъекта%" + Дано Перепроведение существующего документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Исправление существующего документа "%ИмяОбъекта%" + Дано Исправление существующего документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Печать существующего документа "%ИмяОбъекта%" + Дано Печать существующего документа "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/Документы-Открытие-Создание-Печать.feature b/VA-Тесты/Шаблоны/Документы-Открытие-Создание-Печать.feature new file mode 100644 index 0000000..474bddf --- /dev/null +++ b/VA-Тесты/Шаблоны/Документы-Открытие-Создание-Печать.feature @@ -0,0 +1,19 @@ +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы списка документа "%ИмяОбъекта%" + Дано Открытие формы списка документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы существующего документа "%ИмяОбъекта%" + Дано Открытие формы существующего документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы нового документа "%ИмяОбъекта%" + Дано Открытие формы нового документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Перепроведение существующего документа "%ИмяОбъекта%" + Дано Перепроведение существующего документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Печать существующего документа "%ИмяОбъекта%" + Дано Печать существующего документа "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/Документы-Открытие-Создание.feature b/VA-Тесты/Шаблоны/Документы-Открытие-Создание.feature new file mode 100644 index 0000000..52d10d6 --- /dev/null +++ b/VA-Тесты/Шаблоны/Документы-Открытие-Создание.feature @@ -0,0 +1,15 @@ +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы списка документа "%ИмяОбъекта%" + Дано Открытие формы списка документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы существующего документа "%ИмяОбъекта%" + Дано Открытие формы существующего документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы нового документа "%ИмяОбъекта%" + Дано Открытие формы нового документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Перепроведение существующего документа "%ИмяОбъекта%" + Дано Перепроведение существующего документа "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/Документы-Открытие.feature b/VA-Тесты/Шаблоны/Документы-Открытие.feature new file mode 100644 index 0000000..26dce44 --- /dev/null +++ b/VA-Тесты/Шаблоны/Документы-Открытие.feature @@ -0,0 +1,7 @@ +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы списка документа "%ИмяОбъекта%" + Дано Открытие формы списка документа "%ИмяОбъекта%" + +#report.feature=Документ "%ИмяОбъекта%" +Сценарий: Открытие формы существующего документа "%ИмяОбъекта%" + Дано Открытие формы существующего документа "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/ЖурналыДокументов.feature b/VA-Тесты/Шаблоны/ЖурналыДокументов.feature new file mode 100644 index 0000000..c27fdaf --- /dev/null +++ b/VA-Тесты/Шаблоны/ЖурналыДокументов.feature @@ -0,0 +1,3 @@ +#report.feature=Журнал документов "%ИмяОбъекта%" +Сценарий: Открытие формы журнала документов "%ИмяОбъекта%" + Дано Открытие формы журнала документов "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/Обработки.feature b/VA-Тесты/Шаблоны/Обработки.feature new file mode 100644 index 0000000..e987efa --- /dev/null +++ b/VA-Тесты/Шаблоны/Обработки.feature @@ -0,0 +1,3 @@ +#report.feature=Обработка "%ИмяОбъекта%" +Сценарий: Открытие основной формы обработки "%ИмяОбъекта%" + Дано Открытие основной формы обработки "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/ОбщиеФормы.feature b/VA-Тесты/Шаблоны/ОбщиеФормы.feature new file mode 100644 index 0000000..8408f54 --- /dev/null +++ b/VA-Тесты/Шаблоны/ОбщиеФормы.feature @@ -0,0 +1,3 @@ +#report.feature=Общая форма "%ИмяОбъекта%" +Сценарий: Открытие общей формы "%ИмяОбъекта%" + Дано Открытие общей формы "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/Отчеты.feature b/VA-Тесты/Шаблоны/Отчеты.feature new file mode 100644 index 0000000..cac7e2d --- /dev/null +++ b/VA-Тесты/Шаблоны/Отчеты.feature @@ -0,0 +1,3 @@ +#report.feature=Отчет "%ИмяОбъекта%" +Сценарий: Формирование отчета "%ИмяОбъекта%" + Дано Формирование отчета "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/Справочники-Открытие-Создание-Печать.feature b/VA-Тесты/Шаблоны/Справочники-Открытие-Создание-Печать.feature new file mode 100644 index 0000000..7c17b8f --- /dev/null +++ b/VA-Тесты/Шаблоны/Справочники-Открытие-Создание-Печать.feature @@ -0,0 +1,19 @@ +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Открытие формы списка справочника "%ИмяОбъекта%" + Дано Открытие формы списка справочника "%ИмяОбъекта%" + +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Открытие формы существующего элемента справочника "%ИмяОбъекта%" + Дано Открытие формы существующего элемента справочника "%ИмяОбъекта%" + +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Открытие формы нового элемента справочника "%ИмяОбъекта%" + Дано Открытие формы нового элемента справочника "%ИмяОбъекта%" + +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Перезапись существующего элемента справочника "%ИмяОбъекта%" + Дано Перезапись существующего элемента справочника "%ИмяОбъекта%" + +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Печать существующего элемента справочника "%ИмяОбъекта%" + Дано Печать существующего элемента справочника "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/Справочники-Открытие-Создание.feature b/VA-Тесты/Шаблоны/Справочники-Открытие-Создание.feature new file mode 100644 index 0000000..9b1bd29 --- /dev/null +++ b/VA-Тесты/Шаблоны/Справочники-Открытие-Создание.feature @@ -0,0 +1,15 @@ +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Открытие формы списка справочника "%ИмяОбъекта%" + Дано Открытие формы списка справочника "%ИмяОбъекта%" + +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Открытие формы существующего элемента справочника "%ИмяОбъекта%" + Дано Открытие формы существующего элемента справочника "%ИмяОбъекта%" + +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Открытие формы нового элемента справочника "%ИмяОбъекта%" + Дано Открытие формы нового элемента справочника "%ИмяОбъекта%" + +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Перезапись существующего элемента справочника "%ИмяОбъекта%" + Дано Перезапись существующего элемента справочника "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/Справочники-Открытие.feature b/VA-Тесты/Шаблоны/Справочники-Открытие.feature new file mode 100644 index 0000000..4f9b26e --- /dev/null +++ b/VA-Тесты/Шаблоны/Справочники-Открытие.feature @@ -0,0 +1,7 @@ +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Открытие формы списка справочника "%ИмяОбъекта%" + Дано Открытие формы списка справочника "%ИмяОбъекта%" + +#report.feature=Справочник "%ИмяОбъекта%" +Сценарий: Открытие формы существующего элемента справочника "%ИмяОбъекта%" + Дано Открытие формы существующего элемента справочника "%ИмяОбъекта%" diff --git a/VA-Тесты/Шаблоны/Шапка.feature b/VA-Тесты/Шаблоны/Шапка.feature new file mode 100644 index 0000000..114aa94 --- /dev/null +++ b/VA-Тесты/Шаблоны/Шапка.feature @@ -0,0 +1,10 @@ +#language: ru + +@tree + +#report.story=Пользователь "%ПредставлениеПользователя%" +Функциональность: Тесты под пользователем "%ПредставлениеПользователя%" + +Контекст: + Дано я подключаю TestClient "%ПредставлениеПользователя%" логин "%ИмяПользователя%" пароль "%ПарольПользователя%" + И я закрыл все окна клиентского приложения diff --git a/VA-Тесты/Шаги/kapral.epf b/VA-Тесты/Шаги/kapral.epf new file mode 100644 index 0000000000000000000000000000000000000000..25370d0e4bf1aa46849c1bbc93a6e988dcfb33af GIT binary patch literal 10793 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 literal 0 HcmV?d00001 diff --git a/VA-Тесты/Шаги/Документы.feature b/VA-Тесты/Шаги/Документы.feature new file mode 100644 index 0000000..ab85298 --- /dev/null +++ b/VA-Тесты/Шаги/Документы.feature @@ -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" + И для каждого значения "СсылкаДокумента" из массива "$СписокДокументов$" + Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаДокумента$)' в переменную "НавигационнаяСсылкаДокумента" + Затем я открываю навигационную ссылку "$НавигационнаяСсылкаДокумента$" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаДокумента$" + И для каждого значения "ПечатнаяФормаОбъекта" из массива "$СписокПечатныхФорм$" + Тогда я запоминаю значение выражения '$ПечатнаяФормаОбъекта$.Представление' в переменную "НаименованиеПечатнойФормы" + Если элемент с заголовком "$НаименованиеПечатнойФормы$" присутствует на форме тогда + Тогда я нажимаю на кнопку "$НаименованиеПечатнойФормы$" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось напечатать форму $НаименованиеПечатнойФормы$ для документа $НавигационнаяСсылкаДокумента$" + И я закрываю текущее окно + И я закрыл все окна клиентского приложения diff --git a/VA-Тесты/Шаги/ЖурналыДокументов.feature b/VA-Тесты/Шаги/ЖурналыДокументов.feature new file mode 100644 index 0000000..2943702 --- /dev/null +++ b/VA-Тесты/Шаги/ЖурналыДокументов.feature @@ -0,0 +1,17 @@ +#language: ru + +@tree +@ExportScenarios + +Функциональность: Проверка Журналов документов + +Сценарий: Открытие формы журнала документов "ИмяЖурналаДокументов" + Дано я закрыл все окна клиентского приложения + + Если нет права "Просмотр" к объекту "ЖурналДокументов.[ИмяЖурналаДокументов]" тогда + Тогда я останавливаю выполнение сценария "Skipped" + + Дано я открываю основную форму журнала документов "ИмяЖурналаДокументов" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть форму журнала документов [ИмяЖурналаДокументов]" + И я закрыл все окна клиентского приложения diff --git a/VA-Тесты/Шаги/Обработки.feature b/VA-Тесты/Шаги/Обработки.feature new file mode 100644 index 0000000..6c011ca --- /dev/null +++ b/VA-Тесты/Шаги/Обработки.feature @@ -0,0 +1,17 @@ +#language: ru + +@tree +@ExportScenarios + +Функциональность: Проверка Обработок + +Сценарий: Открытие основной формы обработки "ИмяОбработки" + Дано я закрыл все окна клиентского приложения + + Если нет права "Использование" к объекту "Обработка.[ИмяОбработки]" тогда + Тогда я останавливаю выполнение сценария "Skipped" + + Дано я открываю основную форму обработки "ИмяОбработки" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть форму основную обработки [ИмяОбработки]" + И я закрыл все окна клиентского приложения diff --git a/VA-Тесты/Шаги/ОбщиеФормы.feature b/VA-Тесты/Шаги/ОбщиеФормы.feature new file mode 100644 index 0000000..8023da5 --- /dev/null +++ b/VA-Тесты/Шаги/ОбщиеФормы.feature @@ -0,0 +1,17 @@ +#language: ru + +@tree +@ExportScenarios + +Функциональность: Проверка Общих форм + +Сценарий: Открытие общей формы "ИмяОбщейФормы" + Дано я закрыл все окна клиентского приложения + + Если нет права "Просмотр" к объекту "ОбщаяФорма.[ИмяОбщейФормы]" тогда + Тогда я останавливаю выполнение сценария "Skipped" + + Дано я открываю общую форму "ИмяОбщейФормы" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть общую форму [ИмяОбщейФормы]" + И я закрыл все окна клиентского приложения diff --git a/VA-Тесты/Шаги/Отчеты.feature b/VA-Тесты/Шаги/Отчеты.feature new file mode 100644 index 0000000..3ac8582 --- /dev/null +++ b/VA-Тесты/Шаги/Отчеты.feature @@ -0,0 +1,21 @@ +#language: ru + +@tree +@ExportScenarios + +Функциональность: Проверка Отчетов + +Сценарий: Формирование отчета "ИмяОтчета" + Дано я закрыл все окна клиентского приложения + + Если нет права "Использование" к объекту "Отчет.[ИмяОтчета]" тогда + Тогда я останавливаю выполнение сценария "Skipped" + + Дано я открываю основную форму отчета "ИмяОтчета" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть форму отчета [ИмяОтчета]" + И я нажимаю на кнопку "Сформировать" + И я жду заполнение табличного документа 'ОтчетТабличныйДокумент' в течение 10 секунд + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось сформировать отчет [ИмяОтчета]" + И я закрыл все окна клиентского приложения diff --git a/VA-Тесты/Шаги/Справочники.feature b/VA-Тесты/Шаги/Справочники.feature new file mode 100644 index 0000000..e63a02a --- /dev/null +++ b/VA-Тесты/Шаги/Справочники.feature @@ -0,0 +1,91 @@ +#language: ru + +@tree +@ExportScenarios + +Функциональность: Проверка Справочников + +Сценарий: Открытие формы списка справочника "ИмяСправочника" + Дано я закрыл все окна клиентского приложения + + Если нет права "Просмотр" к объекту "Справочник.[ИмяСправочника]" тогда + Тогда я останавливаю выполнение сценария "Skipped" + + Дано я открываю основную форму списка справочника "ИмяСправочника" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть форму списка справочника [ИмяСправочника]" + И я закрыл все окна клиентского приложения + +Сценарий: Открытие формы существующего элемента справочника "ИмяСправочника" + Дано я закрыл все окна клиентского приложения + + Если нет права "Просмотр" к объекту "Справочник.[ИмяСправочника]" тогда + Тогда я останавливаю выполнение сценария "Skipped" + + Дано я ищу последние 5 элементов объекта "Справочник.[ИмяСправочника]" в переменную "СписокЭлементов" + Если '$СписокЭлементов$.Количество() = 0' Тогда + Тогда я останавливаю выполнение сценария "Skipped" + И для каждого значения "СсылкаСправочника" из массива "$СписокЭлементов$" + Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаСправочника$)' в переменную "НавигационнаяСсылкаСправочника" + Затем я открываю навигационную ссылку "$НавигационнаяСсылкаСправочника$" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаСправочника$" + И я закрыл все окна клиентского приложения + +Сценарий: Открытие формы нового элемента справочника "ИмяСправочника" + Дано я закрыл все окна клиентского приложения + + Если нет права "ИнтерактивноеДобавление" к объекту "Справочник.[ИмяСправочника]" тогда + Тогда я останавливаю выполнение сценария "Skipped" + + Дано я открываю основную форму справочника "ИмяСправочника" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть основную форму элемента справочника [ИмяСправочника]" + И я закрыл все окна клиентского приложения + +Сценарий: Перезапись существующего элемента справочника "ИмяСправочника" + Дано я закрыл все окна клиентского приложения + + Если нет права "ИнтерактивноеДобавление" к объекту "Справочник.[ИмяСправочника]" тогда + Тогда я останавливаю выполнение сценария "Skipped" + + Дано я ищу последние 5 элементов объекта "Справочник.[ИмяСправочника]" в переменную "СписокЭлементов" + Если '$СписокЭлементов$.Количество() = 0' Тогда + Тогда я останавливаю выполнение сценария "Skipped" + И для каждого значения "СсылкаСправочника" из массива "$СписокЭлементов$" + Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаСправочника$)' в переменную "НавигационнаяСсылкаСправочника" + Затем я открываю навигационную ссылку "$НавигационнаяСсылкаСправочника$" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаСправочника$" + И я нажимаю на кнопку "Записать и закрыть" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось перезаписать элемент справочника $НавигационнаяСсылкаСправочника$" + Если в текущем окне есть сообщения пользователю Тогда + Тогда я вызываю исключение с текстом сообщения + И я закрыл все окна клиентского приложения + +Сценарий: Печать существующего элемента справочника "ИмяСправочника" + Дано я закрыл все окна клиентского приложения + + Если нет права "Просмотр" к объекту "Справочник.[ИмяСправочника]" тогда + Тогда я останавливаю выполнение сценария "Skipped" + + Дано я получаю список команд печати для объекта метаданных "Справочник.[ИмяСправочника]" в переменную "СписокПечатныхФорм" + Если '$СписокПечатныхФорм$.Количество() = 0' Тогда + Тогда я останавливаю выполнение сценария "Skipped" + Дано я ищу последние 5 элементов объекта "Справочник.[ИмяСправочника]" в переменную "СписокЭлементов" + Если '$СписокЭлементов$.Количество() = 0' Тогда + Тогда я останавливаю выполнение сценария "Skipped" + И для каждого значения "СсылкаСправочника" из массива "$СписокЭлементов$" + Тогда я запоминаю значение выражения 'ПолучитьНавигационнуюСсылку($СсылкаСправочника$)' в переменную "НавигационнаяСсылкаСправочника" + Затем я открываю навигационную ссылку "$НавигационнаяСсылкаСправочника$" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось открыть навигационную ссылку $НавигационнаяСсылкаСправочника$" + И для каждого значения "ПечатнаяФормаОбъекта" из массива "$СписокПечатныхФорм$" + Тогда я запоминаю значение выражения '$ПечатнаяФормаОбъекта$.Представление' в переменную "НаименованиеПечатнойФормы" + Если элемент с заголовком "$НаименованиеПечатнойФормы$" присутствует на форме тогда + Тогда я нажимаю на кнопку "$НаименованиеПечатнойФормы$" + Если появилось предупреждение тогда + Тогда я вызываю исключение "Не удалось напечатать форму $НаименованиеПечатнойФормы$ для элемента справочника $НавигационнаяСсылкаСправочника$" + И я закрываю текущее окно + И я закрыл все окна клиентского приложения diff --git a/Скрипты/АвтоФичиVA.sbsl b/Скрипты/АвтоФичиVA.sbsl new file mode 100644 index 0000000..7588522 --- /dev/null +++ b/Скрипты/АвтоФичиVA.sbsl @@ -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" +; \ No newline at end of file diff --git a/Скрипты/ГенераторФичVA.sbsl b/Скрипты/ГенераторФичVA.sbsl deleted file mode 100644 index 8d6fd64..0000000 --- a/Скрипты/ГенераторФичVA.sbsl +++ /dev/null @@ -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") - исп потокФичи = файлФичи.ОткрытьПотокЗаписи() - потокФичи.Записать(текстФичи) - ; - ; -; \ No newline at end of file