Skip to content

Latest commit

 

History

History
555 lines (381 loc) · 45.8 KB

F.A.Q.MD

File metadata and controls

555 lines (381 loc) · 45.8 KB

FAQ

Проблемы с первичным запуском

1. Появляется ошибка, в которой есть текст: "Неизвестный идентификатор формы".

Это означает, что есть два или более epf файла, у которых совпадает поле Имя (которое находится около Синонима и Комментария).

Решение:

Переименовать один epf файл.

2. При открытии внешних обработок могут появляться окна с предупреждениями безопасности.

Если вы используете версию платформы 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 в список библиотек
    • И далее обязательно нажмите Сохранить настройки

5. При пакетном запуске не загружаются и не выполняются фичи, открывается только форма bddRunner

У Вас неверный/устаревший/ 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 (или другим) серверам, когда вы хотите использовать кнопконажималку.

Запуск из командной строки

1. Как решать проблемы при автоматическом запуске тестов\фич\сценариев

Автоматический запуск рекомендуется выполнять с помощью команд инструмента Vanessa-Runner.

  • 'vrunner vanessa' - для запуска фич и сценариев
  • 'vrunner xunit' - для запуска тестов, в т.ч. и дымовых тестов

Простой чек-лист проверки правильности

  • убедитесь в правильности указания строки подключения
    • правильная строка подключения к ИБ формируется по ключам запуска 1С - или '/FfilePath' или '/SserverPath'
      • Например, для файловых баз --ibconnection /FC:\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1
      • Или для серверных баз --ibconnection /Sservername\basename
  • убедитесь, что указана необходимая версия платформы 1С
    • проверьте строковый ключ --v8version вида "8.3", "8.3.15", "8.3.10.2650"
    • убедитесь, что указанная платформа 1С установлена на машине
  • включите полный отладочный лог при выполнение пакетов OneScript
    • выполните 'SET LOGOS_LEVEL=DEBUG' перед выполнением нужной команды
    • посмотрите лог команды и определите правильность указания платформы 1С, строки соединения с ИБ и другие параметров
    • выключение полного лога выполняется через 'SET LOGOS_LEVEL='

2. Как быстро выполнить одну фичу или фичи из одного каталога?

Правильнее запускать фичи из командной строки с помощью инструмента Vanessa-Runner.

Для прогона одной фичи используйте команду

vrunner vanessa --settings tools\vrunner.json --path ПутьКФиче

или

vrunner vanessa --settings tools\vrunner.json --path ПутьККаталогуФич

где

3. Каким образом увидеть лог выполнения фич, сценариев и шагов или подробный лог при выполнении в командной строке, например, в логе CI-сервера - Jenkins, Gitlab и т.п.

  • Для этого нужно настроить файл настройки в json-формате и указать его использование при запуске в командной строке с помощью vanessa-runner или в командной строке запуска 1С

  • В файле настройки нужно включить 2 параметра

    • включить "ДелатьЛогВыполненияСценариевВТекстовыйФайл": true
    • установить путь к логу выполнения. Например, "ИмяФайлаЛогВыполненияСценариев": "$workspaceRoot/build/log.txt"
  • После включения данных настроек в логе выполнения будут видны пути выполняемых фич и названия выполняемых сценариев

  • Также можно включить более подробный лог с показом выполнения каждого шага, а не только сценариев

    • в файле настройки нужно включить параметр "ВыводитьВЛогВыполнениеШагов": true
  • Также можно включить намного более подробный лог с показом всех отладочных сообщений

    • в файле настройки нужно включить параметр "DebugLog": true

BDD

1. Как мне удалить в транзакции созданные данные?

  • В BDD не обязательно их удалять за собой.
  • Если всё же хотите, Вы можете гарантированно удалить их в процедуре ПередОкончаниемСценария(). Она срабатывает в любом случае, даже если сценарий упал.
  • Если создавались данные из макета (Данные = Ванесса.СоздатьДанныеПоТабличномуДокументу(Макет)), то можно использовать метод Ванесса.УдалитьСозданныеДанные(Данные).
  • Лучше стремиться к тому, чтобы сценарий сам обеспечивал себе окружение, чтобы успешно выполниться.

2. Где мне лучше создавать служебные данные для выполнения сценария?

  • В секции Контекст feature файла
  • В процедуре ПередНачаломСценария()

3. Если в сценарии возникла ошибка, модальное окно и т.д., как мне гарантированно закрыть все эти окна, чтобы следующий сценарий не падал?

В секции контекст надо добавить шаг И Я закрыл все окна клиентского приложения.

А ещё лучше создать экспортный сценарий и в него добавить этот шаг. А в секции Контекст вызывать экспортный сценарий.

4. Как проверять поведение системы под разными ролями?

Надо запустить несколько TestClient на разных портах и переключаться между ними.

5. Почему у меня не работает тэг @tree?

Для работы тега @tree надо использовать либо только табы, либо только пробелы. В пределах одной фичи нельзя в отступах строк использовать и пробелы, и табы.

6. Я вызвал метод Ванесса.ЗапретитьВыполнениеШагов(), затем я подключаю свой таймер, и мне надо сделать, чтобы шаг упал.

В этом случае вместо вызова исключения надо сделать Ванесса.ПродолжитьВыполнениеШагов(Истина)

7. Как использовать Sikuli-скрипты?

8. Как для УФ (управляемой формы) и ОФ (обычной формы) шаги сделать общими?

  • Разместить код шага в модуле объекта обработки,
  • В коде управляемой формы в клиентском методе шага нужно вызвать серверный метод, в котором
    • выполнить ОбъектНаСервере = ЗначениеФормыВОбъект("Объект") и
    • вызвать код из модуля обработки ОбъектНаСервере.НужныйМетод(...)
  • Сигнатуры методов в УФ и ОФ должны совпадать соответственно

9. Что нужно сделать, чтобы увидеть собственные шаги в форме Известные шаги?

  • В строке описания шага нужно заполнить последние параметры (4 и 5 параметры) в процедуре ДобавитьШагВМассивТестов. Там как раз задается развернутое описание шага и место в дереве.
  • Место в группе можно задавать с учетом иерархии.
    • Указание группы как UI.Формы.Кнопки.Мой шаг расположит шаг в иерархии дерева UI - Формы - Кнопки
  • Например,
Ванесса.ДобавитьШагВМассивТестов(ВсеТесты, "Пауза(Парам01)","Пауза", "И     Пауза 1",
	"Позволяет сделать паузу нужной длительности.", "Прочее.Сделать паузу");

10. Не удается выполнить шаги для выбора типа метаданного в форме "Выбор типа данных".

  • В последних версиях Vanessa.ADD реализована автоматическая генерация правильных шагов выбора метаданного на основе записи действий пользователя с необходимыми подсказками.

  • Важно использовать правильную последовательность шагов, например, вместо созданных на старых версиях Vanessa.ADD

     # И я нажимаю кнопку выбора у поля "Реквизит1"
     Тогда открылось окно 'Выбор типа данных'
     И В форме "Выбор типа данных" в таблице "" я перехожу к строке:
     	| ''       |
     	| 'Нужное метаданное' |
     И В форме "Выбор типа данных" в ТЧ "" я выбираю текущую строку

11. Не удается установить поле отбора.

Проблема:

Если пытаться установить поле отбора (колонка «поле») у динамического списка, используя шаг «И в таблице "Source" я разворачиваю строку:», то 1С почему-то не хочет выполнять этот шаг (не разворачивает ветку).

Например: мне нужен отбор по Юр. или Физ.Лиц у контрагента.

Решение:

Можно просто установить текст в поле отбора:

И в таблице "КомпоновщикНастроекПользовательскиеНастройкиЭлемент0Отбор" из выпадающего списка с именем "КомпоновщикНастроекПользовательскиеНастройкиЭлемент0ОтборЛевоеЗначение" я выбираю по строке 'Контрагент.Юр/Физлицо'

12. Как правильно заполнить каталоги библиотечных шагов в json-файле настройки bdd-части Ванесса-АДД?

Важно правильно указать каталог библиотек Ванесса-АДД.

Если у вас Linux, регистр имен каталогов также важен - используйте имена в нижнем регистре.

В json-файл нужно добавить следующие строки

"КаталогиБиблиотек": [
			"$instrumentsRoot/./features/libraries"
	]

также можно использовать устаревший вариант ./features/libraries

Если есть собственные каталоги библиотечных шагов, их нужно добавить после библиотек Ванесса-АДД.

Например, следующим образом

"КаталогиБиблиотек": [
		"$instrumentsRoot/./features/libraries",
		"$workspaceRoot/feature-libs"
	]

13. Как пропустить сценарий, чтобы он не падал?

  • Можно его закомментировать в тексте фичи (символ #).
  • Можно поставить сценарию тег - и использовать фильтры по тегу.
  • Да пусть падает. Тем более если он не реализован, то он будет желтым, а если реализован - тогда почему он падает?

14. Можно ли использовать быстрый выбор из списков 1С в полях ссылочных реквизитов?

Опасно использовать следующие варианты шагов

  • И из выпадающего списка "Принял" я выбираю точное значение 'Иванов Иван Иванович'
  • И из выпадающего списка с именем "ПлательщикМестоОплаты" я выбираю точное значение 'Москва'

Проблема в том, что подобный "быстрый выбор" актуален только для текущей базы и вашего пользователя.

При запуске на другой базе в списке "быстрого выбора" наверняка не будет этих значений, а будет пусто или будут какие-то другие значения (

Вместо этих шагов нужно

  • использовать кнопку "Показать все" (или кнопка с тремя точками)
  • далее искать в форме выбора
  • и затем выбирать найденный элемент в форме выбора

Плагины

1. Как вызвать код плагина на сервере при запуске в управляемой форме?

Практически любой плагин можно подключать на сервере. Например:

ЗапросыИзБД = ВнешниеОбработки.Создать("ЗапросыИзБД");
ЗапросыИзБД.ПолучитьКоличествоЭлементовСправочникаПоОтбору(...);

Ожидаем = ВнешниеОбработки.Создать("УтвержденияBDD");
Ожидаем.Что(Значение, "Должно быть равно 5, а это не так!").
	Равно(5);
  • Небольшое ограничение: нужно помнить, что на сервере нет состояний, поэтому плагины запускаются без состояния.

2. Как работать с файлами внутри тестов/шагов? Как получить путь к текущему файлу или к файлу рядом с ним?

Возможные варианты:

  • Используйте организацию файлов через рабочий каталог проекта (рекомендуемый путь)

    • В BDD – Ванесса.Объект.КаталогПроекта
    • В TDD - КонтекстЯдра.Объект.КаталогПроекта
    • Эта настройка задается
      • либо через командную строку (например, через vanessa-runner)
      • либо интерактивно, через форму настроек (Сервис)
  • В TDD можно использовать Получить полный путь к текущему файлу теста

    • В тесте нужно определить свойство «ПутьКФайлуПолный»
      • это или Глобальная публичная переменная модуля,
      • или реквизит обработки (для серверных модулей)
    • В этой переменной будет клиентский путь к файлу теста
    • Переменная доступна как на этапе заполнения набора/списка тестов, так и при выполнении
  • В BDD также можно использовать шаг И я буду выбирать внешний файл "ИмяФайла" для подмены интерактивных действий пользователя по выбору файла/каталога в окне выбора файлов/каталогов

3. Описание плагинов

  • Проверка орфографиии. Плагин использует сервис YaSpeller и позволяет проверять наличие орфографических ошибок в тексте.

    • Подключение и использование плагина:
ПроверкаОрфографии = КонтекстЯдра.Плагин("ПроверкаОрфографии");
Результат = ПроверкаОрфографии.ВыполнитьПроверкуТекста(ТекстНаПроверку); // локальная проверка. Результат - массив с ошибками
ПроверкаОрфографии.ОжидаемЧтоНетОшибок(ТекстНаПроверку); // выбрасывает исключение если были ошибки с подробным описанием
  • Настройки:

    • Пропускать слова с цифрами:
ПроверкаОрфографии.ПропускатьСловаСЦифрами(Истина);
- Пропускать url и интернет адреса
ПроверкаОрфографии.ПропускатьУРЛ(Истина);
- Словарь слов исключений
ПроверкаОрфографии.ИспользоватьШаблонДляСловаря(Истина); // проверка вхождения в словарь по рег. выражению
ПроверкаОрфографии.ИспользоватьСловарьИсключений(Словарь); // список слов или текстовый документ с словами-исключениями
                                                      // каждое слово с новой строки

Скриншоты

1. Как сохранять скриншоты при ошибках сценариев?

Интерактивная настройка:
	+ Закладка `Сервис`
	+ далее `Автоинструкции`
	+ поле `Консольная команда создания скриншотов`
	  + после строки команды вставляется имя файла и в таком виде команда запускается!

Можно устанавливать
+ как `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=",

2. На CI сервере скриншот формируется, но вместо изображения чёрный экран. Как настроить сервер CI?

Возможные причины и решения:

  • Нельзя запускать джоб Jenkins в режиме сервиса. На CI надо настроить автовход под какой-либо учётной записью и в автозагрузку поместить команду запуска джоба Jenkins.
  • Нельзя использовать для доступа к CI RDP. Вообще. Надо использовать другой софт для удаленного доступа к нему, например TightVNC. RDP полностью гасит видеокарту (виртуальную или настоящую) при отключении.
  • Надо посмотреть схему энергосбережения в Панели управления, там может стоять отключение дисплея через пару минут. Это надо выключить.

3. Как при возникновении ошибки на CI получить скриншоты всех окон 1С?

Пока эта фича работает только под Windows.

  • В json-файле, в котором указываются параметры запуска Vanessa-ADD, указать строку: "СниматьСкриншотКаждогоОкна1С": "Истина".
  • Установить на CI сервер java 8 (если у вас Jenkins, то скорее всего она у вас уже есть).
  • Установить SikuliX версии 1.1 или выше. Брать отсюда. Там надо скачать sikulixsetup-1.1.1.jar.
  • Прописать в переменной PATH файл runsikulix.cmd.

Отчет Allure

1. Как получить отчет Allure у себя на компьютере под Windows?

  • Скачать дистрибутив Allure отсюда и установить.
  • Прописать в переменную Path путь к каталогу, где лежит allure.bat

Далее для получения отчета используйте один из трех вариантов:

  • Для использования через командную строку:
    • Вызвать команду call allure generate {каталог, где лежат ваши xml в формате Allure}
    • Вызвать команду call allure open
  • или установить флаг "Показать отчет Allure в браузере" на закладке Сервис > Отчет о запуске сценариев и сохранить настройки.
    • В этом случае после выполнения тестов и формирования отчетов Allure BDDRunner самостоятельно выполнит обе команды и покажет отчет Allure в браузере
  • или выполнить команду Внешние инструменты > Отобразить отчет Allure в браузере.

2. Можно в отчет Аллюр передавать дополнительные данные для отображения в шаге?

Можно.

Решение:

Использовать шаг:

И Я подключаю файл '$instrumentsRoot/features/libraries/manually/setlabelsallure.feature' к шагу
ПлагинАллюра = Ванесса.Плагин("Аллюр2Отчет");
ПлагинАллюра.ДобавитьФайлКТекущемуШагу(ПутьКФайлу);
ПлагинАллюра.ДобавитьJSONКТекущемуШагу(ТекстДляДобавления, ИмяФайла);
ДобавитьXMLКТекущемуШагу(ТекстXML, Наименование);

Если необходимо прикрепить данные, тогда:

ПлагинАллюра.ДобавитьДвоичныеДанныеКТекущемуШагу(...)
ПлагинАллюра.ДобавитьТекстКТекущемуШагу(ТекстДляДобавления, ИмяФайла)

Общие вопросы работы

1. Как поставить точку останова (брейкпоинт) во внешней обработке для отладки?

  • Используйте штатный механизм отладки 1С, если у вас
    • файловая база
    • или клиент 1С и сервер 1С находятся на одной машине.
  • Если это не так, тогда более сложный путь:
    • Закрыть сеанс TestManager.
    • Открыть сеанс TestManager.
    • Открыть через меню Файл > Открыть файл обработку, в которой стоит точка останова.
    • Только после этого открыть bddRunner.epf.
    • Теперь остановка на точке остановки во внешней обработке будет работать. Но до первого изменения кода в ней. Если изменили код, то надо повторить все действия с начала.

Доработка ADD

1. Как запустить фичу из поставки Vanessa.ADD у себя в базе?

Большинство фич, которые идут в поставке Vanessa.ADD, требуют, чтобы их запускали в специальной служебной базе. Т.е. надо собрать служебную базу и подготовить другие файлы.

Самый простой способ

2. Как быстро написать проверочную фичу для новой возможности, реализуемой внутри самого Vanessa.ADD или его плагина?

Для этого нужно выполнить самотестирование Ванесса-АДД. Самый простой способ - использовать режим тест-клиент и специальные шаги для самотестирования.

Чек-лист:

  • создаются 2 фичи
    • служебная фича
      • назначение фичи - выполнить шаги с новыми возможностями внутри Ванесса-АДД, подключенной внутри тест-клиента
      • в служебном каталоге features/Support/Templates
      • обязательно установить тег @IgnoreOnCIMainBuild для исключения выполнения этой фичи
    • основная проверочная фича
      • назначение фичи - протестировать результаты служебной фичи в Ванесса-АДД, подключенной внутри тест-клиента
        • например, проверить состояние формы, полей, посмотреть служебные сообщения c обычных шагов тест-клиента и других шагов Ванесса-АДД
      • ее можно создать в этом же служебном каталоге
        • или в любом другом подкаталоге features/libraries
      • В этой фиче рекомендуется использовать специальный шаг `Когда Я выполняю служебную фичу "ИнформаторСлужебнаяФича" в VanessaADD в режиме TestClient'
      • а далее обращаться к шагам работы с тест-клиентом

Примеры таких фич:

TDD

Дымовые тесты