Skip to content

Latest commit

 

History

History
296 lines (229 loc) · 26.3 KB

F.A.Q.MD

File metadata and controls

296 lines (229 loc) · 26.3 KB

FAQ

  1. Появляется ошибка, в которой есть текст: "Неизвестный идентификатор формы". Это означает, что есть два или более 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
  1. Как поставить точку останова (брейкпоинт) во внешней обработке для отладки?

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

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

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

Два варианта:

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

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

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

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

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

    • Большинство фич, которые идут в поставке Vanessa.ADD, требуют, чтобы их запускали в специальной служебной базе.
    • Надо собрать служебную базу. Для этого надо загрузить CF из (.\add\lib\CF\83)
    • Надо руками в базе установить константу Путь к Vanessa ADD - это полный путь к обработке bddRunner.epf включая имя файла
    • Надо открыть в базе Vanessa.ADD
    • Надо указать тег исключение IgnoreOnCIMainBuild (список исключаемых тегов)
    • Для ОФ надо ещё указать тег IgnoreOnOFBuilds
    • После этого можно загружать все фичи из каталога фич и запускать на выполнение.
  3. Как мне удалить в транзакции созданные данные?

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

    • В секции Контекст feature файла
    • В процедуре ПередНачаломСценария()
  5. Если в сценарии возникла ошибка, модальное окно и т.д. - как мне гарантированно закрыть все эти окна, чтобы следующий сценарий не падал?

    • В секции контекст надо добавить шаг И Я закрыл все окна клиентского приложения. А ещё лучше создать экспортный сценарий и в него добавить этот шаг. А в секции Контекст вызывать экспортный сценарий.
  6. Как проверять поведение системы под разными ролями?

    • Надо запустить несколько TestClient на разных портах и переключаться между ними.
  7. Как сохранять скриншоты при ошибках сценариев?

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

    Можно устанавливать

    • как 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=",
  1. На CI сервере скриншот формируется, но вместо изображения чёрный экран. Как настроить сервер CI?

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

    • Для работы тега @tree надо использовать либо только табы, либо только пробелы. В пределах одной фичи нельзя в отступах строк использовать и пробелы и Табы.
  3. Я подключаюсь по RDP к серверу. И фича выполняется нормально, но если свернуть окно RDP, то возникает ошибка.

    • Это связано с особенностью платформы 1С. Некоторые методы платформы (кнопконажималки) не работают, когда погашена видеокарта (а RDP клиент её гасит, когда вы его сворачиваете). Поэтому не надо использовать RDP для доступа к CI (или другим) серверам, когда вы хотите использовать кнопконажималку.
  4. Я вызвал метод Ванесса.ЗапретитьВыполнениеШагов(), затем я подключаю свой таймер, и мне надо сделать, чтобы шаг упал.

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

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

    • Надо скачать дистрибутив Allure отсюда
    • Надо прописать в Path каталог где лежит allure.bat
    • Для использования через командную строку можно использовать строки ниже
      • Вызвать команду call allure generate {каталог где лежат ваши xml в формате Allure}
      • Вызвать команду call allure open
    • или установить флаг "Показать отчет Allure в браузере" на закладке Сервис - отчет о запуске сценариев и сохранить настройки
      • в этом случае после выполнения тестов и формирования отчетов Allure BDDRunner самостоятельно выполнит обе команды и покажет отчет Allure в браузере
    • или выполнить команду Внешние инструменты - Отобразить отчет Allure в браузере
  7. Как при возникновении ошибки на CI получить скриншоты всех окон 1С?

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

  • Разместить код шага в модуле объекта обработки,
  • В коде управляемой формы в клиентском методе шага нужно вызвать серверный метод,
    • в котором выполнить ОбъектНаСервере = ЗначениеФормыВОбъект("Объект")
    • и вызвать код из модуля обработки ОбъектНаСервере.НужныйМетод(...)
  • Сигнатуры методов в УФ и ОФ должны совпадать соответственно
  1. Что нужно сделать, чтобы увидеть собственные шаги в форме Известные шаги ?
  • В строке описания шага нужно заполнить последние параметры (4 и 5 параметры) в процедуре ДобавитьШагВМассивТестов. Там как раз задается развернутое описание шага и место в дереве.
  • Место в группе можно задавать с учетом иерархии.
    • Указание группы как UI.Формы.Кнопки.Мой шаг расположит шаг в иерархии дерева UI - Формы - Кнопки
  • Например,
	Ванесса.ДобавитьШагВМассивТестов(ВсеТесты, "Пауза(Парам01)","Пауза", "И     Пауза 1",
		"Позволяет сделать паузу нужной длительности.", "Прочее.Сделать паузу");
  1. Как быстро выполнить одну фичу или фичи из одного каталога?
  • Правильнее запускать фичи из командной строки с помощью инструмента Vanessa-Runner
  • Для прогона одной фичи используйте команду
	vrunner vanessa --settings tools\vrunner.json --path ПутьКФиче

или

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

где

  • tools\vrunner.json - путь к файлу настройки запуска, документированный в readme.md
  • а ПутьКФиче или ПутьККаталогуФич - прямые или относительные пути к конкретной фиче или каталогу с фичами
  1. Каким образом увидеть лог выполнения фич, сценариев и шагов или подробный лог при выполнении в командной строке, например, в логе CI-сервера - Jenkins, Gitlab и т.п.
  • Для этого нужно настроить файл настройки в json-формате и указать его использование при запуске в командной строке с помощью vanessa-runner или в командной строке запуска 1С

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

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

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

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

    • В файле настройки нужно включить параметр "DebugLog": true
  1. Не удается выполнить шаги для выбора типа метаданного в форме "Выбор типа данных"

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

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

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

    • Проблема - если пытаться установить поле отбора (колонка «поле») у динамического списка, используя шаг «И в таблице "Source" я разворачиваю строку:», то 1С почему-то не хочет выполнять этот шаг (не разворачивает ветку).
    • Например: мне нужен отбор по Юр. или Физ.Лиц у контрагента.
    • Решение-
      • Можно просто установить текст в поле отбора:
      • И в таблице "КомпоновщикНастроекПользовательскиеНастройкиЭлемент0Отбор" из выпадающего списка с именем "КомпоновщикНастроекПользовательскиеНастройкиЭлемент0ОтборЛевоеЗначение" я выбираю по строке 'Контрагент.Юр/Физлицо'
  3. Можно в отчет аллюр передавать дополнительные данные для отображения в шаге?

    Решение

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

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

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

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