Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save artbear/ccaadb169347287eeb0fb335592b4995 to your computer and use it in GitHub Desktop.
Save artbear/ccaadb169347287eeb0fb335592b4995 to your computer and use it in GitHub Desktop.
&НаКлиенте
Перем КонтекстЯдра;
&НаКлиенте
Перем Утверждения;
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ВнешниеОбработки.Создать("C:\xUnitFor1C\xddTestRunner.epf", Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Инициализация(ОткрытьФорму("ВнешняяОбработка.xddTestRunner.Форма"));
ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию();
Для Каждого Описание Из ОписаниеДобавляемыхТестов(ТестКлиент) Цикл
НоваяСтрока = КнопкиКомандногоИнтерфейса.Добавить();
НоваяСтрока.ПредставлениеТеста = Описание.ПредставлениеТеста;
НоваяСтрока.НавигационнаяСсылка = Описание.НавигационнаяСсылка;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
КонтекстЯдра = КонтекстЯдраПараметр;
Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНаборТестов(НаборТестов, КонтекстЯдра) Экспорт
ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию();
Для Каждого Описание Из ОписаниеДобавляемыхТестов(ТестКлиент) Цикл
НаборТестов.Добавить(
Описание.ИмяТеста,
НаборТестов.ПараметрыТеста(Описание.НавигационнаяСсылка),
Описание.ПредставлениеТеста);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗапускаТеста() Экспорт
ЗакрытьВсеОткрытыеОкна();
КонецПроцедуры
&НаКлиенте
Функция ОписаниеДобавляемыхТестов(ТестКлиент)
Результат = Новый Массив;
ОсновноеОкно = ОсновноеОкно(ТестКлиент);
КомандныйИнтерфейс = ОсновноеОкно.ПолучитьКомандныйИнтерфейс();
ПанельРазделов = КомандныйИнтерфейс.НайтиОбъект(Тип("ТестируемаяГруппаКомандногоИнтерфейса"), НСтр("ru = 'Панель разделов'"));
Для Каждого ТекКнопкаРаздел Из ПанельРазделов.НайтиОбъекты(Тип("ТестируемаяКнопкаКомандногоИнтерфейса")) Цикл
ТекКнопкаРаздел.Нажать();
ДобавитьОписаниеТеста(Результат, КомандныйИнтерфейс, ТекКнопкаРаздел.ТекстЗаголовка);
ТекКнопкаРаздел.Нажать();
КонецЦикла;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ДобавитьОписаниеТеста(ОписаниеТестов, КомандныйИнтерфейс, ТекстЗаголовка)
Для Каждого ТекРаздел Из КомандныйИнтерфейс.НайтиОбъекты(Тип("ТестируемаяГруппаКомандногоИнтерфейса")) Цикл
Если ЭтоСлужебныйРаздел(ТекРаздел) Тогда
Продолжить;
КонецЕсли;
Для Каждого ТекКнопка Из ТекРаздел.ПолучитьПодчиненныеОбъекты() Цикл
ДобавляемоеОписание = Новый Структура;
ДобавляемоеОписание.Вставить("ПредставлениеТеста", СтрШаблон("%1_%2_%3", ТекстЗаголовка, ТекРаздел.ТекстЗаголовка, ТекКнопка.ТекстЗаголовка));
ДобавляемоеОписание.Вставить("НавигационнаяСсылка", ТекКнопка.НавигационнаяСсылка);
ДобавляемоеОписание.Вставить("ИмяТеста", ИмяТеста(ТекКнопка.НавигационнаяСсылка));
ОписаниеТестов.Добавить(ДобавляемоеОписание);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция ИмяТеста(ПараметрНавигационнаяСсылка)
ПропускаемыеНавигационныеСсылки = Новый Массив;
ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаМобильноеПриложениеНаAppStore");
ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаМобильноеПриложениеНаGooglePlay");
ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаПродуктаНаСайте1С");
ПропускаемыеНавигационныеСсылки.Добавить("e1cib/command/ОбщаяКоманда.СтраницаЧтоНовогоВВерсииВидео");
Если ПропускаемыеНавигационныеСсылки.Найти(ПараметрНавигационнаяСсылка) = Неопределено Тогда
Возврат "ТестДолжен_ПерейтиПоКнопкеКомандногоИнтерфейса";
Иначе
Возврат "ТестДолжен_ПропуститьВыполнение";
КонецЕсли;
КонецФункции
&НаКлиенте
Функция ЭтоСлужебныйРаздел(ГруппаКомандногоИнтерфейса)
ЗаголовкиСлужебныхРазделов = Новый Массив;
ЗаголовкиСлужебныхРазделов.Добавить(НСтр("ru = 'Панель разделов'"));
ЗаголовкиСлужебныхРазделов.Добавить(НСтр("ru = 'Панель инструментов'"));
ЗаголовкиСлужебныхРазделов.Добавить(НСтр("ru = 'Панель открытых'"));
ЗаголовкиСлужебныхРазделов.Добавить(НСтр("ru = 'Меню функций'"));
Для Каждого ТекЗаголовок Из ЗаголовкиСлужебныхРазделов Цикл
Если НРег(ГруппаКомандногоИнтерфейса.ТекстЗаголовка) = НРег(ТекЗаголовок) Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура КнопкиКомандногоИнтерфейсаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТестДолжен_ПерейтиПоКнопкеКомандногоИнтерфейса(Элементы.КнопкиКомандногоИнтерфейса.ТекущиеДанные.НавигационнаяСсылка);
ПослеЗапускаТеста();
КонецПроцедуры
&НаКлиенте
Процедура ТестДолжен_ПропуститьВыполнение(ПараметрНавигационнаяСсылка) Экспорт
КонтекстЯдра.ПропуститьТест();
КонецПроцедуры
&НаКлиенте
Процедура ТестДолжен_ПерейтиПоКнопкеКомандногоИнтерфейса(ПараметрНавигационнаяСсылка) Экспорт
ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию();
ОсновноеОкно = ОсновноеОкно(ТестКлиент);
ОсновноеОкно.ВыполнитьКоманду(ПараметрНавигационнаяСсылка);
ИдентифицироватьОкноПредупреждение(ТестКлиент);
КликнутьПоТаблицеФормы(ТестКлиент);
ИдентифицироватьОкноПредупреждение(ТестКлиент);
ЗакрытьВсеОткрытыеОкна();
КонецПроцедуры
&НаКлиенте
Процедура КликнутьПоТаблицеФормы(ТестКлиент)
АктивноеОкно = ТестКлиент.ПолучитьАктивноеОкно();
ТаблицаФормы = АктивноеОкно.НайтиОбъект(Тип("ТестируемаяТаблицаФормы"));
Если ТаблицаФормы = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ТаблицаФормы.ТекущаяДоступность() Тогда
Возврат;
КонецЕсли;
Если Не ТаблицаФормы.ТекущаяВидимость() Тогда
Возврат;
КонецЕсли;
ТаблицаФормы.ПерейтиКПервойСтроке();
Если Не ЗначениеЗаполнено(ТаблицаФормы.ПолучитьВыделенныеСтроки()) Тогда
Возврат;
КонецЕсли;
ТаблицаФормы.Выбрать();
КонецПроцедуры
&НаКлиенте
Процедура ИдентифицироватьОкноПредупреждение(ТестКлиент)
ОкноПредупреждение = ТестКлиент.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), "1С:Предприятие");
Если ТипЗнч(ОкноПредупреждение) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда
Возврат;
КонецЕсли;
ТекстИсключения = ТекстИсключения(ОкноПредупреждение);
ЗакрытьВсеОткрытыеОкна();
ВызватьИсключение ТекстИсключения;
КонецПроцедуры
&НаКлиенте
Функция ТекстИсключения(ОкноПредупреждение)
ТекстыЗаголовков = Новый Массив;
Для Каждого ТекОбъект Из ОкноПредупреждение.НайтиОбъекты(Тип("ТестируемоеПолеФормы")) Цикл
ТекстыЗаголовков.Добавить(ТекОбъект.ТекстЗаголовка);
КонецЦикла;
Возврат СтрСоединить(ТекстыЗаголовков, " ");
КонецФункции
&НаКлиенте
Функция ОсновноеОкно(ТестКлиент)
Для Каждого ТестируемоеОкно Из ТестКлиент.ПолучитьПодчиненныеОбъекты() Цикл
Если ТестируемоеОкно.Основное Тогда
Возврат ТестируемоеОкно;
КонецЕсли;
КонецЦикла;
КонецФункции
&НаКлиенте
Процедура ЗакрытьВсеОткрытыеОкна()
ТестКлиент = КонтекстЯдра.Плагин("ТестКлиенты").ТестКлиентПоУмолчанию();
ОкноПредупреждение = ТестКлиент.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), НСтр("ru = '1С:Предприятие'"));
НажатьПервуюКнопку(ОкноПредупреждение);
ОткрытыеОкна = ТестКлиент.НайтиОбъекты(Тип("ТестируемоеОкноКлиентскогоПриложения"));
Для Каждого ТекОкно Из ОткрытыеОкна Цикл
Если Не ТекОкно.Основное Тогда
Попытка
ТекОкно.Закрыть();
Исключение
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура НажатьПервуюКнопку(ОкноПриложения)
Если ТипЗнч(ОкноПриложения) <> Тип("ТестируемоеОкноКлиентскогоПриложения") Тогда
Возврат;
КонецЕсли;
Кнопки = ОкноПриложения.НайтиОбъекты(Тип("ТестируемаяКнопкаФормы"));
Если ЗначениеЗаполнено(Кнопки) Тогда
Кнопки[0].Нажать();
КонецЕсли;
КонецПроцедуры
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment