From 6ccbd3962b951da20edea5ebff28d7925eab5582 Mon Sep 17 00:00:00 2001 From: Dmitry Sherstobitov Date: Thu, 4 Jul 2024 17:51:16 -0600 Subject: [PATCH 1/2] =?UTF-8?q?#2170=20Smart=20=D1=81=D0=BE=D0=BE=D0=B1?= =?UTF-8?q?=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20TeamCity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/Form/Module.bsl" | 141 +++++++++++++++++- 1 file changed, 134 insertions(+), 7 deletions(-) diff --git "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 67c09862f0..fe16ec76d4 100644 --- "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -768,6 +768,9 @@ &НаКлиенте Перем ЭтоМенеджерТестирования; +&НаКлиенте +Перем НастройкиTeamCity; + #КонецОбласти #КонецОбласти @@ -20937,7 +20940,7 @@ ЗаписатьЛогВЖРОшибка("VanessaAutomation.ПрикладыватьКОтчетуAllureДанныеОЗначенияхПеременных", ОписаниеОшибки()); КонецПопытки; КонецЕсли; - + #КонецЕсли КонецПроцедуры @@ -31570,9 +31573,13 @@ КонецЕсли; - КонецЕсли; - + КонецЕсли; + КонецЕсли; + + Если НастройкиTeamCity.Используется Тогда + ЗавершитьТестTeamCity(СтрокаСценария, РезультатПрохожденияТестовСценария); + КонецЕсли; Если Объект.ИспользоватьРедакторVanessaEditor Тогда ЭкземплярVanessaEditor = ПолучитьVanessaEditor(); @@ -33399,8 +33406,12 @@ КонецЕсли; Если Объект.ДелатьЛогВыполненияСценариевВЖР Тогда - ЗаписатьЛогВЖРПередВыполнениемСценария(МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].Имя); - КонецЕсли; + ЗаписатьЛогВЖРПередВыполнениемСценария(МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].Имя); + КонецЕсли; + + Если НастройкиTeamCity.Используется Тогда + НачатьТестTeamCity(СтрокаСценария); + КонецЕсли; ИмяФичаФайла = ОпределитьИмяФичаФайлаПоСтрокеДерева(СтрокаСценария); Если НЕ СравнитьПутиФайлов(ТекущийИсполняемыйФичаФайл, ИмяФичаФайла) Тогда @@ -33423,7 +33434,7 @@ КонецЕсли; - КонецЕсли; + КонецЕсли; Если Объект.ПодробныйЛогВыполненияСценариев И Объект.ДелатьЛогВыполненияСценариевВТекстовыйФайл Тогда @@ -43522,6 +43533,10 @@ КонецЕсли; НужноОчиститьВременныйКаталогVanessaEditor = Ложь; + НастройкиTeamCity = НастройкиTeamCity(); + НастройкиTeamCity.Используется = ЗначениеПараметраЗапуска("RunFromTeamCity", Ложь); + НастройкиTeamCity.IDПотока = ЗначениеПараметраЗапуска("TeamCityTag", ""); + // Реквизит формы сохраняетс в глобальной переменной, чтобы не сериализоваться глРеквизитТекстStopVideoRec = ПолучитьЗначениеДополнительногоПараметраИУдалить("РеквизитТекстStopVideoRec"); @@ -51633,7 +51648,7 @@ ТаблицаИменНоваяСтрока("ДымовыеТестыТолькоИзмененныеОтностительноКонфигурацииПоставщика", "SmokeTestsOnlyChangedRelativeToVendorConfiguration", ТаблицаИмен, НижнийРегистр); ТаблицаИменНоваяСтрока("ДымовыеТестыИмяКонфигурацииПоставщика", "SmokeTestsVendorConfigurationName", ТаблицаИмен, НижнийРегистр); ТаблицаИменНоваяСтрока("ДымовыеТестыПутьКФайлуНастроекСценариев", "SmokeTestsPathToFileSettingsScripts", ТаблицаИмен, НижнийРегистр); - + // Удалить. Обратная совместимость ТаблицаИменНоваяСтрока("КаталогOutputAllure", "allurepath", ТаблицаИмен, НижнийРегистр); ТаблицаИменНоваяСтрока("КаталогOutputAllureБазовый", "allurepathbase", ТаблицаИмен, НижнийРегистр); @@ -56001,4 +56016,116 @@ КонецФункции +#КонецОбласти + +#Область TeamCity + +&НаКлиенте +Функция НастройкиTeamCity() + + Структура = Новый Структура(); + + Структура.Вставить("Используется", Ложь); + Структура.Вставить("ЭтоПервыйЗапуск", Истина); + Структура.Вставить("IDПотока", ""); + Структура.Вставить("ТекущийФичаФайл", ""); + Структура.Вставить("ТекущийСценарий", ""); + Структура.Вставить("ДлительностьТеста", 0); + Структура.Вставить("ТекстОшибки", ""); + + Шаблоны = Новый Структура; + Шаблоны.Вставить("НачалоГруппы", "##teamcity[flowStarted flowId='$Tag$']"); + Шаблоны.Вставить("ОкончаниеГруппы", "##teamcity[flowFinished flowId='$Tag$']"); + + Шаблоны.Вставить("НачалоФичаФайла", "##teamcity[testSuiteStarted name='$Tag$.$CurrentFeatureFile$' flowId='$Tag$']"); + Шаблоны.Вставить("ОкончаниеФичаФайла", "##teamcity[testSuiteFinished name='$Tag$.$CurrentFeatureFile$' flowId='$Tag$']"); + + Шаблоны.Вставить("НачалоТеста", "##teamcity[testStarted name='$Tag$.$CurrentTest$' flowId='$Tag$']"); + Шаблоны.Вставить("ОшибкаТестаНаСравнение", "##teamcity[testFailed type='comparisonFailure' name='$Tag$.$CurrentTest$' details='$Details$' flowId='$Tag$' expected='$expected$' actual='$actual$']"); + Шаблоны.Вставить("ОшибкаТеста", "##teamcity[testFailed name='$Tag$.$CurrentTest$' details='$Details$' flowId='$Tag$']"); + Шаблоны.Вставить("ВыводСообщенияВГруппу", "##teamcity[testStdOut name='$Tag$.$CurrentTest$' out='$line$' flowId='$Tag$']"); + Шаблоны.Вставить("ОкончаниеТеста", "##teamcity[testFinished name='$Tag$.$CurrentTest$' duration='$TotalMilliseconds$' flowId='$Tag$']"); + + Структура.Вставить("Шаблоны", Шаблоны); + Возврат Структура; +КонецФункции + +&НаКлиенте +Процедура НачатьТестTeamCity(СтрокаСценария) + + Файл = Новый Файл(МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].ПолныйПутьКФиче); + ТекущийФичаФайл = Файл.ИмяБезРасширения; + Если НастройкиTeamCity.ЭтоПервыйЗапуск Тогда + НастройкиTeamCity.ЭтоПервыйЗапуск = Ложь; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.НачалоГруппы); + КонецЕсли; + + Если НастройкиTeamCity.ТекущийФичаФайл = "" Тогда + НастройкиTeamCity.ТекущийФичаФайл = ТекущийФичаФайл; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.НачалоФичаФайла); + ИначеЕсли НЕ НастройкиTeamCity.ТекущийФичаФайл = ТекущийФичаФайл Тогда + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеФичаФайла); + НастройкиTeamCity.ТекущийФичаФайл = ТекущийФичаФайл; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.НачалоФичаФайла); + КонецЕсли; + + НастройкиTeamCity.ТекущийСценарий = СтрокаСценария.Имя; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.НачалоТеста); +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьТестTeamCity(СтрокаСценария, РезультатПрохожденияТестовСценария) + Т2 = ТекущаяУниверсальнаяДатаВМиллисекундах(); + НастройкиTeamCity.ДлительностьТеста = РезультатПрохожденияТестовСценария.ВремяОкончания - РезультатПрохожденияТестовСценария.ВремяНачала; + + Если СтрокаСценария.ТекстОшибки = "" Тогда + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеТеста); + Иначе + НастройкиTeamCity.ТекстОшибки = СтрокаСценария.ТекстОшибки; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОшибкаТеста); + НастройкиTeamCity.ТекстОшибки = ""; + КонецЕсли; + + НастройкиTeamCity.ДлительностьТеста = 0; + + Если МассивРезультатПрохожденияТестовСценария.Количество() = МассивСценариевДляВыполнения.Количество() Тогда + НастройкиTeamCity.ЭтоПервыйЗапуск = Истина; + + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеФичаФайла); + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеГруппы); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ЭкранированиеСообщенияTeamCity(Стр) + Стр = СтрЗаменить(Стр, "|", "||"); + Стр = СтрЗаменить(Стр, "'", "|'"); + Стр = СтрЗаменить(Стр, "[", "|["); + Стр = СтрЗаменить(Стр, "]", "|]"); + Стр = СтрЗаменить(Стр, Символы.ВК, "|r"); + Стр = СтрЗаменить(Стр, Символы.ПС, "|n"); + Возврат Стр; +КонецФункции + +&НаКлиенте +Функция ПодготовитьСообщениеTeamCity(Знач ТекстСообщения) + + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$Tag$", НастройкиTeamCity.IDПотока); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$CurrentFeatureFile$", ЭкранированиеСообщенияTeamCity(НастройкиTeamCity.ТекущийФичаФайл)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$CurrentTest$", ЭкранированиеСообщенияTeamCity(НастройкиTeamCity.ТекущийСценарий)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$TotalMilliseconds$", Формат(НастройкиTeamCity.ДлительностьТеста, "ЧГ=")); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$Details$", ЭкранированиеСообщенияTeamCity(НастройкиTeamCity.ТекстОшибки)); + Возврат ТекстСообщения; + +КонецФункции + +&НаКлиенте +Процедура ВывестиВКонсольTeamCity(Знач Стр) + Стр = ПодготовитьСообщениеTeamCity(Стр); + Если Объект.ИспользоватьКомпонентуVanessaExt И ВнешняяКомпонентаДляСкриншотов <> Неопределено И НЕ ЗапрещеныСинхронныеВызовы Тогда + ВнешняяКомпонентаДляСкриншотов.ВывестиВКонсоль(Стр + Символы.ПС, 866); + КонецЕсли; +КонецПроцедуры + #КонецОбласти From 8c31d727c009e1f204478efbfd385825ee917a10 Mon Sep 17 00:00:00 2001 From: Dmitry Sherstobitov Date: Wed, 10 Jul 2024 14:46:33 -0600 Subject: [PATCH 2/2] =?UTF-8?q?#2170=20Smart=20=D1=81=D0=BE=D0=BE=D0=B1?= =?UTF-8?q?=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20TeamCity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/Form/Module.bsl" | 1 + 1 file changed, 1 insertion(+) diff --git "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index fe16ec76d4..5570d931be 100644 --- "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -56083,6 +56083,7 @@ Иначе НастройкиTeamCity.ТекстОшибки = СтрокаСценария.ТекстОшибки; ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОшибкаТеста); + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеТеста); НастройкиTeamCity.ТекстОшибки = ""; КонецЕсли;