Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Сохранение отчета Allure после выполнения сценария #399

Merged
merged 2 commits into from
Feb 1, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10220,6 +10220,15 @@
ВызватьМетодСценарияЕслиОнЕсть(СтрокаСценария, "ПередОкончаниемСценария", , БылаОшибка, ОписаниеОшибки,СлужебныеДанныеСценария);
КонецПроцедуры

&НаКлиенте
Процедура ДействияПослеПолученияРезультатаПрохожденияТестовСценария(Результат)

Если Объект.ДелатьОтчетВФорматеАллюр Тогда
ОтчетАллюр(Результат);
КонецЕсли;

КонецПроцедуры

&НаКлиенте
Функция ПроверитьНаличиеИнструментаДляСозданияСкриншотов()
Если НЕ Объект.СоздаватьИнструкциюHTML и НЕ Объект.ДелатьСкриншотПриВозникновенииОшибки и НЕ Объект.СоздаватьИнструкциюMarkdown Тогда
Expand Down Expand Up @@ -10588,6 +10597,8 @@

ПрекратитьВыполнениШаговТакКакЗакончилсяСценарий = Истина;

ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

Если Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда
СделатьСкриншотВозникновенияОшибки(СтрокаШага, СтрокаСценария, РезультатПрохожденияТестовСценария);
Иначе
Expand Down Expand Up @@ -10851,6 +10862,8 @@

РезультатПрохожденияТестовСценария.Вставить("ВремяОкончания", ТекущаяУниверсальнаяДатаВМиллисекундах());

ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

Если СтрокаСценария.Статус = "Failed" и Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда
СделатьСкриншотВозникновенияОшибки(СтрокаШага, СтрокаСценария, РезультатПрохожденияТестовСценария);
Иначе
Expand Down Expand Up @@ -11262,6 +11275,8 @@

ПроверитьФлагОстановкаПриВозникновенииОшибки();

ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

Если Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда
СделатьСкриншотВозникновенияОшибки(СтрокаШага, СтрокаСценария, РезультатПрохожденияТестовСценария);
Иначе
Expand Down Expand Up @@ -11377,6 +11392,8 @@
ЗаписатьСтрокуВТекстовыйЛог("Failed: " + ОписаниеОшибки);
КонецЕсли;

ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

ОстановитьЗаписьВидеоОдногоШага();

Если СтрокаСценария.Статус = "Failed" и Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда
Expand Down Expand Up @@ -11448,6 +11465,50 @@

КонецПроцедуры

&НаКлиенте
Функция ОтчетАллюр(РезультатПрохожденияТестовСценария)

СтруктураОФ = Новый Структура;

ИДСтроки = МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].СтрокаДерева;

СтруктураОФ.Вставить("РезультатПрохожденияТестовСценария", РезультатПрохожденияТестовСценария);
СтруктураОФ.Вставить("ИДСтрокиДерева", ИДСтроки);

ДвоичныеДанные = Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/vendor/allure-framework/allure.xsd");
СтруктураОФ.Вставить("СхемаAllure", ДвоичныеДанные);
СтруктураОФ.Вставить("ЕстьПоддержкаАсинхронныхВызовов", ЕстьПоддержкаАсинхронныхВызовов);

СформироватьОтчетАллюрСервер(СтруктураОФ);

ПутьКаталогаРодителяОтчетовАллюр = ПреобразоватьПутьСТочкамиКНормальномуПути(Объект.КаталогOutputAllure);
ПутьКаталогаРодителяОтчетовАллюрСоСлешем = ДополнитьСлешВПуть(ПутьКаталогаРодителяОтчетовАллюр);

Если Объект.ДелатьСкриншотПриВозникновенииОшибки
И РезультатПрохожденияТестовСценария.Свойство("МассивСкриншотов") Тогда
Для Каждого СтруктураСкриншот Из РезультатПрохожденияТестовСценария.МассивСкриншотов Цикл
ВременныйФайл = ПолучитьИмяВременногоФайла("png");
СтруктураСкриншот.ДвоичныеДанные.Записать(ВременныйФайл); //TODO подумать об ускорении
КопироватьФайлКомандаСистемы(ВременныйФайл, ПутьКаталогаРодителяОтчетовАллюрСоСлешем + СтруктураСкриншот.ИмяФайла);
КонецЦикла;
КонецЕсли;

Если СтруктураОФ.Свойство("МассивXMLОтчетаAllure") Тогда
МассивXMLОтчетаAllure = СтруктураОФ.МассивXMLОтчетаAllure;
Для каждого Элем Из МассивXMLОтчетаAllure Цикл
ИмяФайлаXML = ПутьКаталогаРодителяОтчетовАллюрСоСлешем + Элем.РеальноеИмяФайла;
ФайлXMLДвоичныеДанные = Элем.ФайлXMLДвоичныеДанные;
ФайлXMLДвоичныеДанные.Записать(ИмяФайлаXML);

ТекстСообщения = "Файл отчета Allure-report (%1) записан.";
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайлаXML);
Отладка(ТекстСообщения);
ЗаписатьСтрокуВТекстовыйЛог(ТекстСообщения);
КонецЦикла;
КонецЕсли;

КонецФункции

&НаКлиенте
Процедура ДобавитьШагиВРезультатПрохожденияТестовШаговКоторыеНеВыполнялись(Шаги, ТекИД, РезультатПрохожденияТестовШагов)
Ид = ТекИД;
Expand Down Expand Up @@ -11998,56 +12059,9 @@
КонецЕсли;

СделатьСообщениеВсеСценарииОбработаны();
Если Объект.ДелатьОтчетВФорматеАллюр Тогда
СтруктураОФ = Новый Структура;
СтруктураОФ.Вставить("МассивРезультатПрохожденияТестовСценария", МассивРезультатПрохожденияТестовСценария);
СтруктураОФ.Вставить("МассивИДСтрокиДерева", МассивИДСтрокиДерева);

ДвоичныеДанные = Новый ДвоичныеДанные(Объект.КаталогИнструментов + "/vendor/allure-framework/allure.xsd");
СтруктураОФ.Вставить("СхемаAllure", ДвоичныеДанные);
СтруктураОФ.Вставить("ЕстьПоддержкаАсинхронныхВызовов", ЕстьПоддержкаАсинхронныхВызовов);

СформироватьОтчетАллюрСервер(СтруктураОФ);

ПутьКаталогаРодителяОтчетовАллюр = ПреобразоватьПутьСТочкамиКНормальномуПути(Объект.КаталогOutputAllure);
ПутьКаталогаРодителяОтчетовАллюрСоСлешем = ДополнитьСлешВПуть(ПутьКаталогаРодителяОтчетовАллюр);

Если Объект.ДелатьСкриншотПриВозникновенииОшибки Тогда
Для каждого РезультатПрохожденияТестовСценария Из МассивРезультатПрохожденияТестовСценария Цикл
Если Не РезультатПрохожденияТестовСценария.Свойство("МассивСкриншотов") Тогда
Продолжить;
КонецЕсли;

Для каждого СтруктураСкриншот Из РезультатПрохожденияТестовСценария.МассивСкриншотов Цикл
ВременныйФайл = ПолучитьИмяВременногоФайла("png");
СтруктураСкриншот.ДвоичныеДанные.Записать(ВременныйФайл);//TODO подумать об ускорении
КопироватьФайлКомандаСистемы(ВременныйФайл, ПутьКаталогаРодителяОтчетовАллюрСоСлешем + СтруктураСкриншот.ИмяФайла);
КонецЦикла;
КонецЦикла;
КонецЕсли;

Если СтруктураОФ.Свойство("МассивXMLОтчетаAllure") Тогда
МассивXMLОтчетаAllure = СтруктураОФ.МассивXMLОтчетаAllure;
Для каждого Элем Из МассивXMLОтчетаAllure Цикл
ИмяФайлаXML = ПутьКаталогаРодителяОтчетовАллюрСоСлешем + Элем.РеальноеИмяФайла;
ФайлXMLДвоичныеДанные = Элем.ФайлXMLДвоичныеДанные;
ФайлXMLДвоичныеДанные.Записать(ИмяФайлаXML);

ТекстСообщения = "Файл отчета Allure-report (%1) записан.";
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ИмяФайлаXML);
Отладка(ТекстСообщения);
КонецЦикла;
КонецЕсли;

ТекстСообщения = "Файлы отчетов Allure-report ( %1 ) записаны.";
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", ПутьКаталогаРодителяОтчетовАллюр);
СделатьСообщение(ТекстСообщения);
ЗаписатьСтрокуВТекстовыйЛог(ТекстСообщения);

Если Объект.ОтображатьОтчетAllureВБраузере Тогда
Если Объект.ДелатьОтчетВФорматеАллюр И Объект.ОтображатьОтчетAllureВБраузере Тогда
СоздатьОткрытьОтчетAllureНачало();
КонецЕсли;
КонецЕсли;

Если Объект.ДелатьОтчетВФорматеjUnit Тогда
СтруктураОФ = Новый Структура;
Expand Down Expand Up @@ -12246,6 +12260,7 @@
КонецЕсли;

РезультатПрохожденияТестовСценария.Вставить("НомерСтрокиВФиче", СтрокаСценария.НомерСтрокиВФиче);
ДействияПослеПолученияРезультатаПрохожденияТестовСценария(РезультатПрохожденияТестовСценария);

ОстановитьЗаписьВидеоОдногоШага();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
Перем РезультатыСравненияТаблиц Экспорт;
Перем СтатусыРезультатаТестирования Экспорт;
Перем ПараметрыОтчетаУФ;
Перем ОтчетВРежимеУФ;
Перем ЭтоLinux;
Перем ИмяТекущейСборки;
Перем ДобавлятьКИмениСценарияУсловияВыгрузки;
Expand All @@ -23,18 +22,11 @@

Функция ПолучитьРезультатПрохожденияТестовСценария(СтрСтроки)

РезультатПрохожденияТестовСценария = Неопределено;

Если ОтчетВРежимеУФ Тогда
ИДВМассиве = ПараметрыОтчетаУФ.МассивИДСтрокиДерева.Найти(СтрСтроки.ИДСтроки);
Если ИДВМассиве <> Неопределено Тогда
РезультатПрохожденияТестовСценария = ПараметрыОтчетаУФ.МассивРезультатПрохожденияТестовСценария[ИДВМассиве];
КонецЕсли;
Иначе
РезультатПрохожденияТестовСценария = СтрСтроки.РезультатПрохожденияТестовСценария;
Если СтрСтроки.ИДСтроки = ПараметрыОтчетаУФ.ИДСтрокиДерева Тогда
Возврат ПараметрыОтчетаУФ.РезультатПрохожденияТестовСценария;
КонецЕсли;

Возврат РезультатПрохожденияТестовСценария;
Возврат Неопределено;

КонецФункции

Expand Down Expand Up @@ -563,13 +555,10 @@

Перем СтарыйКаталог, ИмяФайла;

ОтчетВРежимеУФ = Ложь;

Если СтруктураОФ = Неопределено Тогда
ВызватьИсключение "Не поддерживаем ОФ";
Иначе
ИмяТекущейСборки = ИмяСборки;
ОтчетВРежимеУФ = Истина;
ПараметрыОтчетаУФ = СтруктураОФ;
ДобавлятьКИмениСценарияУсловияВыгрузки = ДобавлятьКСценариюУсловияВыгрузки;

Expand Down