-
- Появляется ошибка, в которой есть текст: "Неизвестный идентификатор формы".
- При открытии внешних обработок могут появляться окна с предупреждениями безопасности.
- При открытии
bddRunner
илиxddTestRunner
появляются сообщенияНеизвестный идентификатор плагина: <ЗагрузчикКаталога> при попытке загрузить тесты
- При интерактивном запуске не загружаются и не выполняются фичи, открывается только форма
bddRunner
. - При пакетном запуске не загружаются и не выполняются фичи, открывается только форма
bddRunner
. - Я подключаюсь по RDP к серверу. И фича выполняется нормально. Но если свернуть окно RDP, то возникает ошибка.
-
1. Как решать проблемы при автоматическом запуске тестов\фич\сценариев
2. Как быстро выполнить одну фичу или фичи из одного каталога?
-
- Как мне удалить в транзакции созданные данные?
- Где мне лучше создавать служебные данные для выполнения сценария?
- Если в сценарии возникла ошибка, модальное окно и т.д., как мне гарантированно закрыть все эти окна, чтобы следующий сценарий не падал?
- Как проверять поведение системы под разными ролями?
- Почему у меня не работает тэг
@tree
? - Я вызвал метод Ванесса.ЗапретитьВыполнениеШагов(), затем я подключаю свой таймер, и мне надо сделать, чтобы шаг упал.
- Как использовать Sikuli-скрипты?
- Как для УФ (управляемой формы) и ОФ (обычной формы) шаги сделать общими?
- Что нужно сделать, чтобы увидеть собственные шаги в форме
Известные шаги
? - Не удается выполнить шаги для выбора типа метаданного в форме "Выбор типа данных".
- Не удается установить поле отбора.
- Как правильно заполнить каталоги библиотечных шагов в json-файле настройки bdd-части Ванесса-АДД?
- Как пропустить сценарий, чтобы он не падал?
- Можно ли использовать быстрый выбор из списков 1С в полях ссылочных реквизитов?
Это означает, что есть два или более epf файла, у которых совпадает поле Имя (которое находится около Синонима и Комментария).
Решение:
Переименовать один epf файл.
Если вы используете версию платформы 8.3.9.2033 или новее, тогда может появиться окно Предупреждение безопасности.
Подробно этот механизм описан здесь.
Решение описано по ссылке
Кратко: Если хотите выключить этот механизм для всех баз, пропишите в файле conf.cfg строку: DisableUnsafeActionProtection=.*
3. При открытии bddRunner
или xddTestRunner
появляются сообщения Неизвестный идентификатор плагина: <ЗагрузчикКаталога> при попытке загрузить тесты
Возможно, запущено 1С:Предприятие без пользователей. В этом случае 1С не применяет настройки безопасного режима.
Решение:
- нужно создать хотя бы одного пользователя,
- снять у него флаг "Защита от опасных действий" и
- запустить 1С:Предприятие для этого пользователя.
4. При интерактивном запуске не загружаются и не выполняются фичи, открывается только форма bddRunner
Возможные причины:
-
У Вас не задан список библиотек на закладке
Библиотеки
Решение:
- Сначала очистите список библиотек - например, кнопкой
Очистить
- Далее Перезапустите
bddRunner
- Автоматически подставится путь к системным библиотекам
Vanessa.ADD
-$instrumentsRoot/features/libraries
- Новые настройки будут сохранены автоматически
- Сначала очистите список библиотек - например, кнопкой
-
У Вас заданы неверные библиотеки, например, используются библиотеки от нашего старого продукта
vanessa-behavior
Решение:
- Или примените решение выше с полной очисткой библиотек
- Или добавьте системную библиотеку
$instrumentsRoot/features/libraries
в список библиотек - И далее обязательно нажмите
Сохранить настройки
У Вас неверный/устаревший/ json-файл настроек, несовместимый формат со штатным json, например, что читает 1С 😦
Например:
- одинарный слеш
\
не разрешен - используйте или\\
или/
- или одинарные кавычки ` или ’ не разрешены - используйте
\"
- Пример правильной настройки
"КомандаСделатьСкриншот": "\"C:\\Program Files (x86)\\IrfanView\\i_view32.exe\" /capture=1 /convert=",
Разбор проблемы в https://xdd.silverbulleters.org/t/pri-paketnom-zapuske-ne-zagruzhayutsya-i-ne-vypolnyayutsya-fichi-otkryvaetsya-tolko-bddrunner/2132
6. Я подключаюсь по RDP к серверу. И фича выполняется нормально. Но если свернуть окно RDP, то возникает ошибка.
Это связано с особенностью платформы 1С. Некоторые методы платформы (кнопконажималки) не работают, когда погашена видеокарта (а RDP клиент её гасит, когда вы его сворачиваете). Поэтому не надо использовать RDP для доступа к CI (или другим) серверам, когда вы хотите использовать кнопконажималку.
Автоматический запуск рекомендуется выполнять с помощью команд инструмента Vanessa-Runner.
- 'vrunner vanessa' - для запуска фич и сценариев
- 'vrunner xunit' - для запуска тестов, в т.ч. и дымовых тестов
Простой чек-лист проверки правильности
- убедитесь в правильности указания строки подключения
- правильная строка подключения к ИБ формируется по ключам запуска 1С - или '/FfilePath' или '/SserverPath'
- Например, для файловых баз --ibconnection /FC:\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1
- Или для серверных баз --ibconnection /Sservername\basename
- правильная строка подключения к ИБ формируется по ключам запуска 1С - или '/FfilePath' или '/SserverPath'
- убедитесь, что указана необходимая версия платформы 1С
- проверьте строковый ключ --v8version вида "8.3", "8.3.15", "8.3.10.2650"
- убедитесь, что указанная платформа 1С установлена на машине
- включите полный отладочный лог при выполнение пакетов OneScript
- выполните 'SET LOGOS_LEVEL=DEBUG' перед выполнением нужной команды
- посмотрите лог команды и определите правильность указания платформы 1С, строки соединения с ИБ и другие параметров
- выключение полного лога выполняется через 'SET LOGOS_LEVEL='
Правильнее запускать фичи из командной строки с помощью инструмента Vanessa-Runner.
Для прогона одной фичи используйте команду
vrunner vanessa --settings tools\vrunner.json --path ПутьКФиче
или
vrunner vanessa --settings tools\vrunner.json --path ПутьККаталогуФич
где
-
tools\vrunner.json
- путь к файлу настройки запуска, документированный в -
ПутьКФиче
илиПутьККаталогуФич
- прямые или относительные пути к конкретной фиче или каталогу с фичами
3. Каким образом увидеть лог выполнения фич, сценариев и шагов или подробный лог при выполнении в командной строке, например, в логе CI-сервера - Jenkins, Gitlab и т.п.
-
Для этого нужно настроить файл настройки в json-формате и указать его использование при запуске в командной строке с помощью vanessa-runner или в командной строке запуска 1С
-
В файле настройки нужно включить 2 параметра
- включить
"ДелатьЛогВыполненияСценариевВТекстовыйФайл": true
- установить путь к логу выполнения. Например,
"ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/log.txt"
- включить
-
После включения данных настроек в логе выполнения будут видны пути выполняемых фич и названия выполняемых сценариев
-
Также можно включить более подробный лог с показом выполнения каждого шага, а не только сценариев
- в файле настройки нужно включить параметр
"ВыводитьВЛогВыполнениеШагов": true
- в файле настройки нужно включить параметр
-
Также можно включить намного более подробный лог с показом всех отладочных сообщений
- в файле настройки нужно включить параметр
"DebugLog": true
- в файле настройки нужно включить параметр
- В BDD не обязательно их удалять за собой.
- Если всё же хотите, Вы можете гарантированно удалить их в процедуре ПередОкончаниемСценария(). Она срабатывает в любом случае, даже если сценарий упал.
- Если создавались данные из макета (Данные = Ванесса.СоздатьДанныеПоТабличномуДокументу(Макет)), то можно использовать метод Ванесса.УдалитьСозданныеДанные(Данные).
- Лучше стремиться к тому, чтобы сценарий сам обеспечивал себе окружение, чтобы успешно выполниться.
- В секции Контекст feature файла
- В процедуре ПередНачаломСценария()
3. Если в сценарии возникла ошибка, модальное окно и т.д., как мне гарантированно закрыть все эти окна, чтобы следующий сценарий не падал?
В секции контекст надо добавить шаг И Я закрыл все окна клиентского приложения.
А ещё лучше создать экспортный сценарий и в него добавить этот шаг. А в секции Контекст вызывать экспортный сценарий.
Надо запустить несколько TestClient на разных портах и переключаться между ними.
Для работы тега @tree
надо использовать либо только табы, либо только пробелы. В пределах одной фичи нельзя в отступах строк использовать и пробелы, и табы.
6. Я вызвал метод Ванесса.ЗапретитьВыполнениеШагов(), затем я подключаю свой таймер, и мне надо сделать, чтобы шаг упал.
В этом случае вместо вызова исключения надо сделать Ванесса.ПродолжитьВыполнениеШагов(Истина)
- Установите SikuliX согласно инструкции http://sikulix.com/quickstart/
- Ознакомьтесь с http://sikulix-2014.readthedocs.io/en/latest/faq/010-command-line.html
- Укажите через path путь к каталогу с runsikulix(.cmd)
- Разрабатывайте свои Sikuli-скрипты с помощью SikuiliX IDE (http://sikulix-2014.readthedocs.io/en/latest/index.html) либо используйте имеющиеся
- Выполнение скрипта в реализации шага вызывайте через
Ванесса.ВыполнитьSikuliСкрипт()
- Разместить код шага в модуле объекта обработки,
- В коде управляемой формы в клиентском методе шага нужно вызвать серверный метод, в котором
- выполнить
ОбъектНаСервере = ЗначениеФормыВОбъект("Объект")
и - вызвать код из модуля обработки
ОбъектНаСервере.НужныйМетод(...)
- выполнить
- Сигнатуры методов в УФ и ОФ должны совпадать соответственно
- В строке описания шага нужно заполнить последние параметры (4 и 5 параметры) в процедуре
ДобавитьШагВМассивТестов
. Там как раз задается развернутое описание шага и место в дереве. - Место в группе можно задавать с учетом иерархии.
- Указание группы как
UI.Формы.Кнопки.Мой шаг
расположит шаг в иерархии дереваUI
-Формы
-Кнопки
- Указание группы как
- Например,
Ванесса.ДобавитьШагВМассивТестов(ВсеТесты, "Пауза(Парам01)","Пауза", "И Пауза 1",
"Позволяет сделать паузу нужной длительности.", "Прочее.Сделать паузу");
-
В последних версиях
Vanessa.ADD
реализована автоматическая генерация правильных шагов выбора метаданного на основе записи действий пользователя с необходимыми подсказками. -
Важно использовать правильную последовательность шагов, например, вместо созданных на старых версиях
Vanessa.ADD
# И я нажимаю кнопку выбора у поля "Реквизит1" Тогда открылось окно 'Выбор типа данных' И В форме "Выбор типа данных" в таблице "" я перехожу к строке: | '' | | 'Нужное метаданное' | И В форме "Выбор типа данных" в ТЧ "" я выбираю текущую строку
Проблема:
Если пытаться установить поле отбора (колонка «поле») у динамического списка, используя шаг «И в таблице "Source" я разворачиваю строку:», то 1С почему-то не хочет выполнять этот шаг (не разворачивает ветку).
Например: мне нужен отбор по Юр. или Физ.Лиц у контрагента.
Решение:
Можно просто установить текст в поле отбора:
И в таблице "КомпоновщикНастроекПользовательскиеНастройкиЭлемент0Отбор" из выпадающего списка с именем "КомпоновщикНастроекПользовательскиеНастройкиЭлемент0ОтборЛевоеЗначение" я выбираю по строке 'Контрагент.Юр/Физлицо'
12. Как правильно заполнить каталоги библиотечных шагов в json-файле настройки bdd-части Ванесса-АДД?
Важно правильно указать каталог библиотек Ванесса-АДД.
Если у вас Linux, регистр имен каталогов также важен - используйте имена в нижнем регистре.
В json-файл нужно добавить следующие строки
"КаталогиБиблиотек": [
"$instrumentsRoot/./features/libraries"
]
также можно использовать устаревший вариант ./features/libraries
Если есть собственные каталоги библиотечных шагов, их нужно добавить после библиотек Ванесса-АДД.
Например, следующим образом
"КаталогиБиблиотек": [
"$instrumentsRoot/./features/libraries",
"$workspaceRoot/feature-libs"
]
- Можно его закомментировать в тексте фичи (символ #).
- Можно поставить сценарию тег - и использовать фильтры по тегу.
- Да пусть падает. Тем более если он не реализован, то он будет желтым, а если реализован - тогда почему он падает?
Опасно использовать следующие варианты шагов
И из выпадающего списка "Принял" я выбираю точное значение 'Иванов Иван Иванович'
И из выпадающего списка с именем "ПлательщикМестоОплаты" я выбираю точное значение 'Москва'
Проблема в том, что подобный "быстрый выбор" актуален только для текущей базы и вашего пользователя.
При запуске на другой базе в списке "быстрого выбора" наверняка не будет этих значений, а будет пусто или будут какие-то другие значения (
Вместо этих шагов нужно
- использовать кнопку "Показать все" (или кнопка с тремя точками)
- далее искать в форме выбора
- и затем выбирать найденный элемент в форме выбора
Практически любой плагин можно подключать на сервере. Например:
ЗапросыИзБД = ВнешниеОбработки.Создать("ЗапросыИзБД");
ЗапросыИзБД.ПолучитьКоличествоЭлементовСправочникаПоОтбору(...);
Ожидаем = ВнешниеОбработки.Создать("УтвержденияBDD");
Ожидаем.Что(Значение, "Должно быть равно 5, а это не так!").
Равно(5);
- Небольшое ограничение: нужно помнить, что на сервере нет состояний, поэтому плагины запускаются без состояния.
2. Как работать с файлами внутри тестов/шагов? Как получить путь к текущему файлу или к файлу рядом с ним?
Возможные варианты:
-
Используйте организацию файлов через рабочий каталог проекта (рекомендуемый путь)
- В BDD –
Ванесса.Объект.КаталогПроекта
- В TDD -
КонтекстЯдра.Объект.КаталогПроекта
- Эта настройка задается
- либо через командную строку (например, через
vanessa-runner
) - либо интерактивно, через форму настроек (
Сервис
)
- либо через командную строку (например, через
- В BDD –
-
В TDD можно использовать Получить полный путь к текущему файлу теста
- В тесте нужно определить свойство «ПутьКФайлуПолный»
- это или Глобальная публичная переменная модуля,
- или реквизит обработки (для серверных модулей)
- В этой переменной будет клиентский путь к файлу теста
- Переменная доступна как на этапе заполнения набора/списка тестов, так и при выполнении
- В тесте нужно определить свойство «ПутьКФайлуПолный»
-
В BDD также можно использовать шаг
И я буду выбирать внешний файл "ИмяФайла"
для подмены интерактивных действий пользователя по выбору файла/каталога в окне выбора файлов/каталогов
-
Проверка орфографиии. Плагин использует сервис YaSpeller и позволяет проверять наличие орфографических ошибок в тексте.
- Подключение и использование плагина:
ПроверкаОрфографии = КонтекстЯдра.Плагин("ПроверкаОрфографии");
Результат = ПроверкаОрфографии.ВыполнитьПроверкуТекста(ТекстНаПроверку); // локальная проверка. Результат - массив с ошибками
ПроверкаОрфографии.ОжидаемЧтоНетОшибок(ТекстНаПроверку); // выбрасывает исключение если были ошибки с подробным описанием
-
Настройки:
- Пропускать слова с цифрами:
ПроверкаОрфографии.ПропускатьСловаСЦифрами(Истина);
- Пропускать url и интернет адреса
ПроверкаОрфографии.ПропускатьУРЛ(Истина);
- Словарь слов исключений
ПроверкаОрфографии.ИспользоватьШаблонДляСловаря(Истина); // проверка вхождения в словарь по рег. выражению
ПроверкаОрфографии.ИспользоватьСловарьИсключений(Словарь); // список слов или текстовый документ с словами-исключениями
// каждое слово с новой строки
Интерактивная настройка:
+ Закладка `Сервис`
+ далее `Автоинструкции`
+ поле `Консольная команда создания скриншотов`
+ после строки команды вставляется имя файла и в таком виде команда запускается!
Можно устанавливать
+ как `NirCMD`
+ http://www.nirsoft.net/utils/nircmd.zip
+ команда `nircmd savescreenshot `
+ так и `IrfanView`
+ команда `"C:\Program Files (x86)\IrfanView\i_view32.exe" /capture=1 /convert=`
+ команда
"\"C:\\Program Files (x86)\\IrfanView\\i_view32.exe\" /capture=1 /convert=",
+ Важно только устанавливать 32-разрядные версии !!
Примеры json-файла настройки фиксации скриншотов
для `NirCMD`:
"ДелатьСкриншотПриВозникновенииОшибки": true,
"СниматьСкриншотКаждогоОкна1С": true,
"КаталогOutputСкриншоты": "$workspaceRoot/build/out/ScreenShots",
"КомандаСделатьСкриншот": "nircmd savescreenshot "
или для `IrfanView`:
"ДелатьСкриншотПриВозникновенииОшибки": true,
"СниматьСкриншотКаждогоОкна1С": true,
"КаталогOutputСкриншоты": "$workspaceRoot/build/out/ScreenShots",
"КомандаСделатьСкриншот": "\"C:\\Program Files (x86)\\IrfanView\\i_view32.exe\" /capture=1 /convert=",
Возможные причины и решения:
- Нельзя запускать джоб Jenkins в режиме сервиса. На CI надо настроить автовход под какой-либо учётной записью и в автозагрузку поместить команду запуска джоба Jenkins.
- Нельзя использовать для доступа к CI RDP. Вообще. Надо использовать другой софт для удаленного доступа к нему, например TightVNC. RDP полностью гасит видеокарту (виртуальную или настоящую) при отключении.
- Надо посмотреть схему энергосбережения в Панели управления, там может стоять отключение дисплея через пару минут. Это надо выключить.
Пока эта фича работает только под Windows.
- В json-файле, в котором указываются параметры запуска Vanessa-ADD, указать строку:
"СниматьСкриншотКаждогоОкна1С": "Истина"
. - Установить на CI сервер java 8 (если у вас Jenkins, то скорее всего она у вас уже есть).
- Установить SikuliX версии 1.1 или выше. Брать отсюда. Там надо скачать sikulixsetup-1.1.1.jar.
- Прописать в переменной PATH файл runsikulix.cmd.
- Скачать дистрибутив Allure отсюда и установить.
- Прописать в переменную Path путь к каталогу, где лежит allure.bat
Далее для получения отчета используйте один из трех вариантов:
- Для использования через командную строку:
- Вызвать команду
call allure generate {каталог, где лежат ваши xml в формате Allure}
- Вызвать команду
call allure open
- Вызвать команду
- или установить флаг "Показать отчет Allure в браузере" на закладке
Сервис > Отчет о запуске сценариев
и сохранить настройки.- В этом случае после выполнения тестов и формирования отчетов Allure BDDRunner самостоятельно выполнит обе команды и покажет отчет Allure в браузере
- или выполнить команду
Внешние инструменты > Отобразить отчет Allure в браузере
.
Можно.
Решение:
Использовать шаг:
И Я подключаю файл '$instrumentsRoot/features/libraries/manually/setlabelsallure.feature' к шагу
ПлагинАллюра = Ванесса.Плагин("Аллюр2Отчет");
ПлагинАллюра.ДобавитьФайлКТекущемуШагу(ПутьКФайлу);
ПлагинАллюра.ДобавитьJSONКТекущемуШагу(ТекстДляДобавления, ИмяФайла);
ДобавитьXMLКТекущемуШагу(ТекстXML, Наименование);
Если необходимо прикрепить данные, тогда:
ПлагинАллюра.ДобавитьДвоичныеДанныеКТекущемуШагу(...)
ПлагинАллюра.ДобавитьТекстКТекущемуШагу(ТекстДляДобавления, ИмяФайла)
- Используйте штатный механизм отладки 1С, если у вас
- файловая база
- или клиент 1С и сервер 1С находятся на одной машине.
- Если это не так, тогда более сложный путь:
- Закрыть сеанс TestManager.
- Открыть сеанс TestManager.
- Открыть через меню
Файл > Открыть файл
обработку, в которой стоит точка останова. - Только после этого открыть bddRunner.epf.
- Теперь остановка на точке остановки во внешней обработке будет работать. Но до первого изменения кода в ней. Если изменили код, то надо повторить все действия с начала.
Большинство фич, которые идут в поставке Vanessa.ADD, требуют, чтобы их запускали в специальной служебной базе. Т.е. надо собрать служебную базу и подготовить другие файлы.
Самый простой способ
- выполнить команду
opm run init
согласно Руководству контрибьютора - и немного подождать
2. Как быстро написать проверочную фичу для новой возможности, реализуемой внутри самого Vanessa.ADD или его плагина?
Для этого нужно выполнить самотестирование Ванесса-АДД. Самый простой способ - использовать режим тест-клиент и специальные шаги для самотестирования.
Чек-лист:
- создаются 2 фичи
- служебная фича
- назначение фичи - выполнить шаги с новыми возможностями внутри Ванесса-АДД, подключенной внутри тест-клиента
- в служебном каталоге
features/Support/Templates
- обязательно установить тег
@IgnoreOnCIMainBuild
для исключения выполнения этой фичи
- основная проверочная фича
- назначение фичи - протестировать результаты служебной фичи в Ванесса-АДД, подключенной внутри тест-клиента
- например, проверить состояние формы, полей, посмотреть служебные сообщения c обычных шагов тест-клиента и других шагов Ванесса-АДД
- ее можно создать в этом же служебном каталоге
- или в любом другом подкаталоге
features/libraries
- или в любом другом подкаталоге
- В этой фиче рекомендуется использовать специальный шаг `Когда Я выполняю служебную фичу "ИнформаторСлужебнаяФича" в VanessaADD в режиме TestClient'
- а далее обращаться к шагам работы с тест-клиентом
- назначение фичи - протестировать результаты служебной фичи в Ванесса-АДД, подключенной внутри тест-клиента
- служебная фича
Примеры таких фич:
- основная фича Информатор.feature
- служебная фича ИнформаторСлужебнаяФича.feature
- основная фича РедактированиеТаблицыGherkin.feature
- служебная фича ФичаДляПроверкиРедактораТаблицыGherkin.feature