Vanessa не удалось прочитать файл настроек json
Консольное приложение проекта oscript.io для автоматизации различных операции для работы с cf/cfe/epf файлами, а также автоматизация запуска сценариев поведения (BDD) и тестов из фреймворка Vanessa-ADD.
Предназначено для организации разработки 1С в режиме, когда работа в git идет напрямую с исходниками или работаем через хранилище 1С.
Позволяет обеспечить единообразный запуск команд "локально" и на серверах сборки CI-CD
используйте пакетный менеджер opm из стандартной поставки дистрибутива oscript.io
при установке будет создан исполняемый файл vrunner в каталоге bin интерпретатора oscript .
После чего доступно выполнение команд через командную строку vrunner <имя команды>
Ключ help покажет справку по параметрам.
или внутри батника (ВАЖНО) через call
Основной принцип - запустили bat файл с настроенными командами и получили результат.
С помощью команды init-project можно создать структуру проекта следующими командами:
Команда клонирует шаблон vanessa-bootstrap и предложит для установки три библиотеки для проекта:
Примеры создания проекта
1. Создание проекта по указанному шаблону
--template cсылка на шаблон, из которого будет клонироваться проект.
При использовании ключа --template клонируется указанный шаблон, считываются пакеты из env файла шаблона, если пакеты не заданы предлагаются библиотеки по умолчанию.
2. Создание проекта по файлу настроек
Добавлены следующие настройки:
Для установки пакетов gitrules и precommit1c последовательно выполняются указанные команды.
При использовании ключа --settings считываются пакеты из указанного файла env, если пакеты не заданы предлагаются библиотеки по умолчанию.
3. Сборка обработок при создании проекта
Вы можете объединить несколько команд в файл cmd / bat и указать его как пакет:
В данном примере будут собраны обработки при создании проекта. Содержимое файла compileEpf.cmd :
Сборка обработок и конфигураций
Для сборки обработок необходимо иметь установленный oscript в переменной PATH и платформу выше 8.3.8
В командной строке нужно перейти в каталог с проектом и выполнить tools\compile_epf.bat , по окончанию в каталоге build\epf должны появиться обработки. Вся разработка в конфигураторе делается в каталоге build, по окончанию доработок запускаем tools\decompile_epf.bat
Обязательно наличие установленного v8unpack версии не ниже 3.0.38 в переменной PATH.
Примеры настройки и вызова
1. Создание ИБ из последней конфигурации хранилища 1С, обновление в режиме Предприятия и первоначальное заполнение ИБ
2. Вызов модульных тестов через Vanessa-ADD (TDD)
запуск vrunner xunit tests --settings tools/vrunner.json
- или внутри батника
- call vrunner xunit --settings tools/vrunner.json
Формат файла настройки (в примере xUnitParams.json) для тестов смотрите в справке Vanessа-ADD
Подсказка из командной строки
3. Вызов проверки поведения через Vanessa-ADD (BDD)
запуск vrunner vanessa --settings tools/vrunner.json
- или внутри батника
- call vrunner vanessa --settings tools/vrunner.json
Формат файлов настройки и других параметров запуска BDD смотрите в справке Vanessа-ADD
Подсказка из командной строки
4. Переопределение аргументов запуска
В случае необходимости переопределения параметров запуска используется схема приоритетов.
Приоритет в порядке возрастания (от минимального до максимального приоритета)
- env.json (в корне проекта)
- --settings ../env.json (указание файла настроек вручную)
- RUNNER_* (из переменных окружения)
- --* (ключи командной строки)
- На первоначальном этапе читаются настройки из файла настроек, указанного в ключе команды --settings tools/vrunner.json
- Потом, если настройка есть в переменной окружения, тогда берем из неe.
- Если же настройка есть, как в файле json, так и в переменной окружения и непосредственно в командной строке, то берем настройку из командной строки.
Переопределение переменной окружения
Допустим, в файле vrunner.json указана настройка
а нам для определенного случая надо переопределить имя пользователя, тогда можно установить переменную: set RUNNER_DBUSER=Иванов и в данный параметр будет передано значение Иванов
Очистка значения после установки
в данном случае установлено полностью пустое значение и имя пользователя будет взято из tools/vrunner.json, если оно там есть.
Установка пустого значения:
Если необходимо установить в поле пустое значение, тогда указываем кавычки и в параметр --db-user будет установлена пустая строка.
Переопределение через параметры командной строки.
Любое указание параметра в командной строке имеет наивысший приоритет.
При указании значений параметров внутри строки с параметром можно использовать шаблонные переменные. Список таких переменных:
- workspaceRoot - означает каталог текущего проекта
- runnerRoot - означает каталог установки Vanessa-Runner
- addRoot - означает каталог установки библиотеки Vanessa-ADD
Вывод отладочной информации
Управление выводом логов выполняется с помощью типовой для oscript-library настройки логирования через пакет logos.
Основной лог vanessa-runner имеет название oscript.app.vanessa-runner .
Включение всех отладочных логов:
Включит отладочный лог только для библиотеки cmdline, которая анализирует параметры командной строки.
Дополнительные обработки для режима 1С:Предприятие
В папке epf есть несколько обработок, позволяющих упростить развертывание/тестирование для конфигураций, основанных на БСП.
Основной пример (см. ниже пример вызова) - это передача через параметры /C команды "ЗапуститьОбновлениеИнформационнойБазы;ЗавершитьРаботуСистемы" и одновременная передача через /Execute "ЗакрытьПредприятие.epf" .
При запуске с такими ключами подключается обработчик ожидания, который проверяет наличие формы с заголовком обновления и при окончании обновления завершает 1С:Предприятие. Данное действие необходимо для полного обновления информационной базы 1С:Предприятия, пока действует блокировка на фоновые задачи и запуск пользователей.
также выполняется отключение запроса при завершении работы программы для БСП-конфигураций
ЗагрузитьРасширение позволяет подключать расширение в режиме предприятия и получать результат ошибки. Предназначено для подключения в конфигурациях, основанных на БСП. В параметрах /C передается путь к расширению и путь к файлу лога подключения.
ЗагрузитьВнешниеОбработки позволяет загрузить все внешние обработки и подключить в справочник "Дополнительные отчеты и обработки", т.к. их очень много то первым параметром идет каталог, вторым параметром путь к файлу лога. Все обработки обновляются согласно версиям.
СозданиеПользователей позволяет создать первого пользователя-администратора, если в ИБ еще не существует пользователей. Администратор назначается роль ПолныеПрава , если она существует в ИБ.
также выполняется отключение запроса при завершении работы программы для БСП-конфигураций
код запуска для создания пользователя с именем Администратор
Дополнительная настройка различных команд
Настройка синтаксической проверки
Для управления режима синтаксической проверки рекомендуется использовать json-файл настройки. Для его использования нужно
- установить путь к нему в параметре VRUNNER_CONF
- внутри json-файла нужно добавить секцию syntax-check
- список всех используемых параметров можно уточнить, выполнив команду vrunner help syntax-check
- ссылка на подготовленный файл examples\example.env.json
- также можно передавать параметры синтакс-проверки через командную строку
- в этом случае режимы проверки должны быть указаны последним параметров ком.строки последовательно, через пробел
- например, vrunner syntax-check --groupbymetadata --mode -ExtendedModulesCheck -Server -ThinClient -ExternalConnection
Пример настройки в файле
Настройка режимов реструктуризации при обновлении конфигурации БД
Возможно использование специальных режимов реструктуризации -v1 и -v2 .
- В режиме командной строки
- указываются ключи --v1 и --v2 . Важно: указать двойной знак -- , а не одиночный!
- 3 команды поддерживают эти ключи
- init-dev
- update-dev
- updatedb
- например,
Contributors
Stargazers
Watchers
Forkers
vanessa-runner's Issues
Портировать bootstrap
ну и конечно incorporate alien techs
Неработоспособность сборки при наличии неуправляемых форм
Если исходная конфигурация содержит неуправляемые формы, то после сборки из исходников формы перестают открываться с ошибкой формата потока.
Для понимания причины рекомендую ознакомиться с этой статьей о структуре формата CF. В текущей ситуации файлы неуправляемых форм form.bin являются вложенными по отношению к исходной конфигурации и их содержимое не должно быть сжато zlib при упаковке. Vanessa-runner же вызывает v8unpack с параметром - build , которая всегда зажимает файлы zlib'ом.
Возможные варианты решения:- Допилить v8unpack. Благо есть активный разработчик.
- Замена v8unpack другой реализацией. Со своей стороны, очевидно, предлагаю python реализацию через onec_dtools. Собственно ей я и проверил факт корректной сборки, если не применять сжатие. Либо перспективный вариант на go. Но на сколько мне ясно, он пока толком не был протестирован.
Настройки проекта, в котором используется vanessa-runner
Сейчас при составлении различных батников для выполнения задач раннера для собственных продуктов приходится сильно дублировать код настроек базы.
Например, в 4 батниках (init, compile,decompile,watch) нужно указывать путь к базе, логин/пароль пользователя, пути к служебным данным и прочее.
Хотелось бы соединить все настройки проекта в едином файле настроек.
И при запуске передавать раннеру указанный файл.Предлагаю использовать формат json, как простой и удобный.
Нужно договориться о приоритетах между файлом настроек и переменными окружениями.
ИМХО переменные окружения должны быть более приоритетными, чем настройки из файла настроек. Это важно для CI, хотя на CI-серверах можно вообще отключить использование файла настроек.Подключить анализ SonarQube
Добавить возможность указания формата вывода отчёта xunit
Сейчас для выполнения unit тестов можно/нужно указать каталог с тестами, путь к обработке тестирования и путь, по которому будет выведен результат тестирования.
Возможности вывести отчёт в формате, отличном от "ГенераторОтчетаJUnitXML" (указано непосредственно в коде) сейчас нет. Но иногда требуется отчёт в ином формате.
Нужно добавить возможность указания формата генерируемого xunit-отчёта. По умолчанию пусть будет "ГенераторОтчетаJUnitXML".
Синхронизировать с git исходники из файла базы.
Приветствую коллеги.
Я только начинаю интересоваться темой групповой разработки через git , но хранилища использую довольно давно (накушался по полной ну вы в курсе . ).
Интересует функция быстрой выгрузки исходников прямо из базы. Суть в том, что в процессе работы над проектами бывает необходимо внести мелки правки в проект и часто это происходит в режиме онлайн прямо на продуктиве. Хотелось бы иметь утилиту которая сделает синхронизацию исходников с git желательно без участия специалиста выполняющего правки, если есть возможность как то отловить факт изменения конфигурации и по этому событию запустить синхронизацию.
Подскажите какие инструменты сообщества лучше использовать для решения задачи ? И как это лучше сделать ?При клонировании репозитария возникают изменённые файлы
В итоге рабочий каталог в каталоге ./build/out является не полностью рабочим.
Например, если в каталог ./build/out поместить любой файл (обработка или текстовый файл), следилка не перенесет его в выходной каталог :(В итоге автоматический перенос файлов из рабочего каталога в каталог репозитария работает только при декомпиляции, а дальнейшее добавление файлов нужно делать вручную!
ИМХО это критическая ошибка, из-за которой работа с продуктом и его концепцией сильно усложняется :(
Документировать использование настроек из json-файла
- привести пример файла (examples/example.env.json)
- вставить текст этого файла
init-dev и update-dev - обновление конфигурации базы данных
Было бы круто, если бы init-dev и update-dev сразу обновлял конфигурацию БД
xUnit: Проверять наличие каталога для файлов отчетов перед запуском тестирования в режиме 1С
Удобно заранее, до запуска 1С, проверять наличие каталогов для файлов отчетов jUnit и Allure.
Сейчас- если каталога не существует, выдается ошибка в режиме Предприятия, ошибка пишется только в ЖР, и ванесса-раннер не узнает об этой ошибке
- запуск 1С - это долгий процесс,
в итоге из-за простейшей ошибки приходится долго разбираться :(
Перенести функционал скрипта init.os в головной скрипт
Перенести 2 команды
- "ИнициализацияОкружения", "init-dev"
- "ОбновлениеОкружения", "update-dev"
В epf папка ЗагрузитьПердприятие выглядит неблагозвучно
Надеюсь, что это просто опечатка, в боевом проекте иметь такое некрасиво 😄
Не формируются файлы отчёта, если в пути есть пробелы.
При выполнении юнит тестов, если путь к файлам отчётов содержит пробелы, файлы отчёта не формируются.
Фича проверки тестирования через xUnitFor1C
Неверная сборка 0.8.0
Часть команд после установки не выполняется, например, 'runner vanessa'
- в качестве исполняемого файла указан tools\runner.os , а не src\main.os
'runner version' возвращает старую версию, 0.6.0
Создать чат в gitter для обсуждения
Блокировки выполнения из-за того, что файл лога раннера всегда один
Перенести изменения из vanessa-behavior-new
Разнести логику команд продукта по разным классам вместо одного единого файла
ИМХО будет проще поддерживать, ревьюить, мержить, тестировать.
Во многих типовых конфигурациях при первом запуске вылезает форма "Начальное заполнение данных". Было бы хорошо, если бы обработка ждала пока эта форма отработает.
У нас в скриптах есть специальный шаг, который запускает приложение и ждет пока начальное заполнение данных отработает. Хотел бы перевести и его на VRПроверить конвертацию файлов для разных платформ вниз
Существует режим /ConvertFiles, необходимо проверить сборку на 8.3.10 и последующую конфертацию до 8.2.19
Встроенная справка врет
Запуск xunit по документации и по файлу examples/xunit.bat невозможен.
В командной строке выводятся параметры запуска. Для xunit они некорректные. Пример в каталоге examples также некорректен.
Ошибка сборки обработки
Когда исходники обработки лежат по пути, содержащем точку возникает ошибка.
Имя каталога исходников определяется некорректно.Пример:
"Z:\MaxA\Work\CI. 0. MaxA\vanessa-runner" -- каталог, содержащий инструмент vanessa-runner
"Z:\MaxA\Work\CI. 0. MaxA\build\ibservice" -- каталог с сервисной базой
"Z:\MaxA\Work\CI. 0. MaxA\build\epf" -- каталог, в который следует положить скомпилированную обработкуПри выполнении команды oscript vanessa-runner\tools\runner.os compileepf vanessa-runner\epf\ЗакрытьПредприятие build\epf --ibname /F""build\ibservice"" --v8version 8.3.9 из каталога "Z:\MaxA\Work\CI. 0. MaxA" получаем ошибку:
На заглавной странице упомянута deployka
Этот инструмент, во-первых, не опубликован, во-вторых, запускаться должен не через технический файл console-entry-point, а через deployka.bat(sh)
Т.е. задумано вот так:
Цель issue - выработать идеологию правильного использования deployka
decompileepf - сообщать об ошибке в случае отсутствия внешних обработок во входном каталоге
Важно для начального старта.
updatedb и dbupdate
В хелпе параметр назван по одному, а в процедуре по другому.
Использование v8unpack
Сейчас нигде в документации не сказано про v8unpack
В итоге запуск decompileepf завершается со странной ошибкой.- или каким-то образом положить v8unpack в репозитарий продукта
- или документировать, что v8unpack должен быть установлен ранее и д.находиться по пути из Path
Флаг --managedapp для управления запуском тонкого клиента
Сейчас у нас есть параметр --ordinaryapp , который служит для запуска тонкого (УФ)/толстого (ОФ) клиента.
Но им пользоваться не очень удобно.- если он не задан, запускается всегда толстый клиент ОФ
- неудобное задание этого параметра
- --ordinaryapp 1 запускает толстый клиент
- --ordinaryapp 0 (или любое другое значение) запускает тонкий
Совсем не прозрачно и неудобно. Нужно постоянно помнить об использовании этого параметра
Предлагаю добавить один простой параметр-флаг --managedapp
Если его нет, тогда всегда запускается толстый клиент ОФ.
Если он задан (как флаг) runner xunit --managedapp , то запускается тонкий клиентПросто, удобно, легко запомнить.
/cc @nixel2007 @pumbaEOВыгрузить обработки
В целях быстрого перехода людей к миграции нужен скрипт миграции из конфигурации - чтобы сразу можно было из целевой системы забрать текущую актуальную версию обработок
P.S. Наверное нужно выгружать даже в отдельный бранч - но это уже врядли скриптом, скорее в документации отразить
Добавить версию продукта и показать ее при запуске
Сейчас этот параметр считается выходным путем.
При запуске команды compileext src/cf sb
в 1С передается следующая команда
/LoadConfigFromFiles "C:\projects\sb\project\src\cfe" -Extension "C:\projects\sb\project\sb"А в доке (например, на сайте ИТС) написано, что в -Extension передается имя конфигурации
описание этого параметра
реализацию передачи параметра - убрать формирование полного пути
При прогоне xUnit использовать файл кода возврата для определения правильного кода возврата
Запуск в обычном приложении
Хотелось бы иметь возможность запускать xunit и VB в обычном приложении, чтобы тестировать конфигурации на обычных формах
Интерактивная настройка: + Закладка Сервис + далее Автоинструкции + поле Консольная команда создания скриншотов + после строки команды вставляется имя файла и в таком виде команда запускается!
так и IrfanView
- команда "C:\Program Files (x86)\IrfanView\i_view32.exe" /capture=1 /convert=
Важно только устанавливать 32-разрядные версии !!
Примеры json-файла настройки фиксации скриншотов для NirCMD :
- На CI сервере скриншот формируется, но вместо изображения чёрный экран. Как настроит сервер CI?
- Запускать джоб Jenkins в режиме сервиса нельзя. На CI надо настроить автовход под какой либо учётной записью и в автозагрузку надо поместить команду запуска джоба Jenkins.
- Нельзя использовать для доступа к CI RDP. Вообще. Надо использовать другой софт для удаленного доступа к нему, например TightVNC. RDP полностью гасит видеокарту (виртуальную или настоящую) при отключении.
- Надо посмотреть схему энерго сбережения в панели управления, там может стоять отключение дисплея через пару минут. Это надо выключить.
- Почему у меня не работает тэг @tree
- Для работы тега @tree надо использовать либо только табы, либо только пробелы. В пределах одной фичи нельзя в отступах строк использовать и пробелы и Табы.
- Как поставить брейкпоинт во внешней обработке.
- Для файловых баз брейпоинты работают сразу
- Для серверных баз, когда сервер 1С и сеанс TestManager расположены на разных ПК
- Надо закрыть сеанс TestManager.
- Надо открыть сеанс TestManager.
- Надо открыть через меню файл/открыть обработку, в которой стоит брейкпоинт.
- Только после пункта 3 надо открыть Vanessa-Behavior.
- Нужно ли запускать сеанс TestManager из конфигуратора для отладки? * Да. Лучше запускать из конфигуратора, а не подключаться потом, т.к. в платформе есть ошибка, из-за которой могут не работать брейкпонты в серверном коде, если конфигуратор был подключен к уже ранее запущенному сеансу TestManager.
- Я подключаюсь по RDP к серверу. И фича выполняется нормально, но если свернуть окно RPD, то возникает ошибка.
- Это связано с особенностью платформы 1С. Некоторые методы платформы (кнопконажималки) не работают, когда погашена видеокарта (а RDP клиент её гасит, когда вы его сворачиваете). Поэтому не надо использовать RDP для доступа к CI (или другим) серверам, когда вы хотите использовать кнопконажималку.
- Я вызвал метод Ванесса.ЗапретитьВыполнениеШагов(), затем я подключаю свой таймер, и мне надо сделать, чтобы шаг упал.
- в этом случае вместо вызова исключения надо сделать Ванесса.ПродолжитьВыполнениеШагов(Истина)
- Появляется ошибка, в которой есть текст: "Неизвестный идентификатор формы". Это означает, что есть два или более epf файла, у которых совпадает поле Имя (это которое находится около Синонима и Комментария).
- Если вы используете версию платформы 8.3.9.2033 или новее, тогда может появиться окно Предупреждение безопасности.
-
.
- Если хотите выключить этот механизм для всех баз - пропишите в файле conf.cfg строку: DisableUnsafeActionProtection=.*
- Как использовать Sikuli-скрипты.
- Установите 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Скрипт().
- Как получить отчет Allure у себя на компьютере под Windows
- Надо прописать в Path каталог где лежит allure.bat
- Вызвать команду call allure generate
- Вызвать команду call allure report open
- Как при возникновении ошибки на CI получить скриншоты всех окон 1С?
- Пока эта фича работает только под Windows.
- Надо в json файле, в котором указываются параметры запуска Vanessa-Behavior, указать строку: "СниматьСкриншотКаждогоОкна1С": "Истина"
- Надо установить на CI сервер java 8 (если у вас Jenkins - то скорее всего она у вас уже есть)
- Надо установить SikuliX версии 1.1 или выше. Там надо скачать sikulixsetup-1.1.1.jar.
- Надо чтобы файл runsikulix.cmd был прописан в переменной PATH.
- Как вызвать ассерт в серверной процедуре/функции Надо создать экземпляр объекта обработки VanessaAutomation. Например так: ВанессаСервер = Новый(Тип("ВнешняяОбработкаОбъект.VanessaAutomation")); ВанессаСервер.ПроверитьИстину(ПроверяемоеЗначение);
- Не срабатывает шаг И я нажимаю на кнопку выбора у поля "ИмяПоля" Такие шаги сначала пытаются активизировать поле, а затем нажимают на кнопку выбора у поля. Если у поля назначен обработчик при активизации поля, то шаг может не сработать и его надо заменить на шаг активизации поля.
- Как сделать в подсценарии необязательный параметр? Вот пример, когда в сценарии объявлен параметр "ДопПараметр" и он является необязательным. Далее переданное значение сохраняется в парметр "ЗначениеПараметра" и затем идёт проверка его значения.
- Чтобы запустить тесты в браузере надо:
- Опубликовать базу
- Задать любое имя подключения.
- Указать тип подключения WEB.
- В строке соединения указать правильную ссылку, которая начинается на http или ws.
- Для файловой базы надо указать порт web сервера (обычно это 1538). Для серверной базы надо указать имя сервера и порт кластера (обычно 1541).
- Т.е. TestManager общается с браузером либо через веб сервер для файловых баз, либо через сервер кластера для серверных баз.
- Как запомнить навигационную ссылку
- Для окон, находящихся в панели открытых окон: Gherkin И я сохраняю навигационную ссылку текущего окна в переменную "ИмяПеременной"
- Также можно использоват внешнюю компоненту, например, так: Gherkin И я закрыл все окна клиентского приложения И В командном интерфейсе я выбираю 'Основная' 'Справочник1' Тогда открылось окно 'Справочник1' И в таблице "Список" я выбираю текущую строку И я нажимаю сочетание клавиш "Ctrl+F11" И я нажимаю на кнопку с именем "BtnCopy" И я жду закрытия окна "Получение ссылки" в течение 20 секунд И Я запоминаю значение выражения 'Ванесса.БуферОбмена.Текст' в переменную "НавСсылка"
Как отключить появление окна, при падении в дамп процесса 1С на windows?
Нужно в рестре установить значения параметров
DontShowUI Ключ: HKLM:\Software\Microsoft\Windows\Windows Error Reporting Имя: DontShowUI Значение: 1 Тип: dword
ShutdownReasonOn Ключ: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Reliability Имя: ShutdownReasonOn Значение: 0 Тип: dword
ShutdownReasonUI Ключ: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Reliability Имя: ShutdownReasonUI Значение: 0 Тип: dword
Как настроить сбор дампов на раннере?
Надо в каталоге C:\Program Files (x86)\1cv8\conf создать файл logcfg.xml с таким содержимым (если его нет) или дополнить файл, если он есть. xml <config xmlns="http://v8.1c.ru/v8/tech-log"> <dump location="КаталогДляДампов" create="1" type="2"/> </config>
Для проверки формирования дампов достаточно создать обработку с бесконечным рекурсивным вызовом. Пример кода: ``` 1C &НаКлиенте Процедура ВызватьПроцедуру() ВызватьПроцедуру(); КонецПроцедуры
&НаКлиенте Процедура ПриОткрытии(Отказ) ВызватьПроцедуру(); КонецПроцедуры ``` 26. Как сделать из обычного шага шаг-условие?
И я нажимаю на кнопку с именем "ИмяКнопки"
Если И я нажимаю на кнопку с именем "ИмяКнопки" Тогда ``` 27. Как сделать, чтобы при запуске тестов на CI сервере отключить инициализацию редактора в процедуре ПриСозданииНаСервере()
Для этого надо в базе, где запускается Vanessa Automation добавить константу "ИнициализироватьVanessaEditor", тип булево и установить её в Ложь.
Как ускорить работу Vanessa Automation при локальной работе.
- Если в конфигурации, в которой происходит локальный запуск Vanessa Automation запрещены синхронные вызовы, то лучше запускать сеанс 1С не из конфигуратора. Конфигуратор предаёт дополнительные ключи сеансу 1С при запуске, которые полностью запрещают использование синхронных вызовов. Из-за этого Vanessa Automation будет использовать более медленные алгоритмы при работе с файлами. Если же запустить сеанс не из конфигуратора, то Vanessa Automation сможет использовать синхронные вызовы, несмотря на то, что в настройках конфигурации они запрещены. При этом можно подключиться конфигуратором в данному сеансу 1С отладчиком.
Как передавать сложные строки через переменные для использования во встроенном языке? Примеры:
```Gherkin // Первый вариант И я запоминаю содержимое файла "C:\Temp\Untitled-2.xml" в переменную "ИмяПеременной1" И Я запоминаю значение выражения 'СтрЗаменить($ИмяПеременной1$, """", """""")' в переменную "ИмяПеременной1" И Я запоминаю значение выражения 'СтрЗаменить($ИмяПеременной1$, Символы.ПС, Символы.ПС + "|")' в переменную "ИмяПеременной1" И я выполняю код встроенного языка на сервере """bsl Сообщить("$ИмяПеременной1$"); """
// Второй вариант И я запоминаю содержимое файла "C:\Temp\Untitled-2.xml" в переменную "ИмяПеременной2" И я выполняю код встроенного языка """bsl Ванесса.Объект.ЗначениеНаСервере = Контекст.ИмяПеременной2; """ И я выполняю код встроенного языка на сервере """bsl Сообщить(Объект.ЗначениеНаСервере); """ ```
Инструмент «vanessa-sonar» – тонкая настройка анализа файлов
-
Формирование блока («модулей») исходников с группировкой по подсистемам конфигурации 1С
В т.ч. с группировкой по некоторым подсистемами, а не по всем подсистемам
Первичное формирование файла анализа «sonar-project.properties» для текущего проекта
«vanessa-sonar» — это консольное приложение, написанное в виде пакета скриптов для языка OneScript.
Выполняем установку пакета «vanessa-sonar-1.1.0.ospx» через командную строку (с правами Администратора) из каталога, в котором расположен сам пакет:
После установки проверяем, что приложение доступно в командной строке
В версии 1.1.0 доступна одна полезная команда:
- configure, c – команда, осуществляющая настройку файла «sonar-project.properties» для группировки исходников на сервере SonarQube по подсистемам 1С.
Более подробно ознакомиться с командой и ее аргументами, можно выполнив команду
Создание базового файла настроек
Для создания базового конфигурационного файла необходимо выполнить команду:
Теперь в текущем каталоге появится файл настроек «sonar-project.properties».
Данный конфигурационный файл содержит все требуемые настройки для анализа с помощью плагина «SonarQube 1C (BSL) Plugin».
В большинстве случае не предполагается последующее ручное изменение этого файла.
Дальнейшие действия стандартны, указанный файл помещается в git-репозиторий проекта и уже при анализе анализатор «Sonar-Scanner» извлекает из него требуемые настройки анализа.
Создание файла настроек с группировкой по подсистемам 1C
Для создания расширенного конфигурационного файла необходимо выполнить команду с ключом «--group».
В этом случае код будет разбит на модули согласно списку верхнеуровневых подсистем из конфигурации 1С, находящейся по указанному пути исходников.
На сервере SonarQube фильтрация по модулям проекта будет доступна в группировке «Модуль»
Создание файла настроек с фильтрацией и группировкой по отдельным подсистемам
Существует дополнительная функциональность - использовать фильтрацию/отбор по нужным подсистемам, например, для анализа только «своих» подсистем без анализа подсистем поставщика основной конфигурации
Указание списка подсистем выполняется через настроечный json-файл
Пример передачи через командную строку:
Импорт замечаний от сторонних статических анализаторов
В версии 1.16 нашего плагина появилась замечательная возможность по импорту замечаний от сторонних статических анализаторов, таких, как 1С:АПК («Автоматизированная проверка конфигураций») или 1C:EDT («Enterprise Development Tools») или каких-то других, например, собственных.
Важно, что после импорта подобные «внешние» замечания остаются полностью управляемы. Их статус можно изменить, например, отметить замечание как исправленное или как неактуальное. Можно назначать ответственных за исправление замечаний и т.д.
Для выполнения импорта подобных внешних замечаний необходимо
- Подготовить файл описания правил от внешнего анализатора
- Подготовить файл замечаний от внешнего анализатора
- Настроить сервер SonarQube для автоматической загрузки файла описания правил при загрузке сервера
- Указать использование соответствующего файла замечаний при анализе исходных кодов
Подготовка файла описания правил от внешнего анализатора
В файле описания правил должно быть описано каждое правило от стороннего анализатора, замечания по которому должно быть показано на сервере SonarQube.
Важно понимать, что ключ правила должен быть уникальным для всех правил на сервере SonarQube.
Поэтому проще всего добавлять уникальный префикс или суффикс по наименованию. Например, «edt_bug» или «acc_func_124».
Файл описания правил должен иметь формат и расширение xml.
В файле должен быть корневой узел «rules» и его потомки «rule».
У узла «rule» могут быть следующие поля:
- key – ключ правила, по которому будет выполняться связь замечания из файла замечаний с замечанием на сервере SonarQube
- name – имя правила, которое будет отображаться в описании правила на сервере
- severity – важность правила. Возможные значения - INFO, MINOR, MAJOR (по умолчанию), CRITICAL, BLOCKER
- cardinality – возможные значения: SINGLE (по умолчанию) and MULTIPLE (для шаблонных правил)
- remediationFunctionBaseEffort – время исправления. Например, «5min»
- status – статус правила. Возможные значения - BETA, READY (по умолчанию), DEPRECATED
- type – тип правила. Возможные значения - CODE_SMELL (по умолчанию), BUG and VULNERABILITY
- tag – набор произвольных тегов правила. Несколько тегов можно указать через запятую.
- description – расширенное описание правила. Можно указать простой набор строк или строки в формате HTML. HTML-описание нужно заключить в рамки «<![CDATA[<» и «]», как в примере ниже.
Подготовка файла замечаний от внешнего анализатора
Файл замечаний от сторонних анализаторов должен быть в формате json.
В файле должен быть корневой узел «issues» и массив описаний замечаний.
Каждое замечание должно иметь следующие поля
- engineId – строка. Ключ стороннего анализатора.
- ruleId – строка. Ключ правила. Должен совпадать с полем «key» из описания правила.
- primaryLocation – объект «Размещение»
- type - строка. Тип замечания. Варианты - BUG, VULNERABILITY, CODE_SMELL
- severity - строка. Важность. Варианты - BLOCKER, CRITICAL, MAJOR, MINOR, INFO
- effortMinutes - число, необязательный. Время на исправления. По умолчанию 0
- secondaryLocations – массив дополнительных размещений. Необязательный.
Поля объекта «Размещение»:
- message - строка. Текст замечания, который будет показан пользователю
- filePath - строка. Путь к модулю. Должен быть относительным от корня исходников.
- textRange – объект «Диапазон текста», Необязательный, используется только для дополнительных размещений
Поля объекта «Диапазон текста»:
- startLine - число. Нумерация с 1.
- endLine - число, необязательный. Нумерация с 1.
- startColumn - число, необязательный. Нумерация с 0.
- endColumn - число, необязательный. Нумерация с 0.
ВАЖНО: при формировании файла замечаний ключ правила для замечания должен совпадать с ключом правила из файла настройки правил, который подключается на сервере SonarQube.
Настройка сервера SonarQube для загрузки файла описания правил
Подготовленный файл правил должен загружаться при старте сервера SonarQube, т.к. правила, их описания и профили качества загружаются всегда при старте сервера SonarQube.
- Файл правил нужно поместить на компьютер, на котором запускается сервер SonarQube.
- Далее в веб-интерфейсе сервера открыть настройки администрирования «1C (BSL)»
- Затем нужно указать все файлы описания правил в параметре «External rules definitions path». Указывается полный или относительный путь файла на машине, на которой запускается сервер SonarQube.
Сохранить указанный параметр
Перезапустить сервер SonarQube для вступления настроек в силу.
Важно: если по каким-то причинам не удалось загрузить файл внешних правил, автоматически будет загружен внутренний файл описания правил от 1С:АПК.
Если при загрузке сервера SonarQube не удается загрузить внешний файл правил, то в лог сервера пишется следующий текст
а если удалось загрузить, то пишется только
И загрузка внутренних правил уже не происходит.
Указание файла замечаний при анализе исходников
После настройки правил на сервере SonarQube можно подключать файлы замечаний от сторонних анализаторов, основанные на указанных правилах.
Для этого нужно задать путь к файлам замечаний при выполнении анализа через sonar-scanner.
Это можно выполнить 3-мя способами:
(рекомендуем) В файле настроек проекта для параметра «sonar.bsl.acc.externalRulesPath» нужно задать пути к файлам замечаний. Например, «edt-validate.json,ext-issues.json»
В настройках своего проекта выберите «Administration – General Settings – 1C (BSL)» и задайте параметр «External result path»
В настройках сервера «Administration – General Settings– 1C (BSL)» нужно задать параметр «External result path»
Можно задавать как путь к одному файлу, так и путь к нескольким файлам, указав их через запятую.
После указания путей к файлам замечаний можно выполнять анализ через «sonar-scaner».
Интеграция «АПК» и SonarQube
Для интеграции «АПК» и «SonarQube» используется описанный выше механизм «Импорт замечаний от сторонних статических анализаторов» с единственным отличием – файл замечаний должен быть в формате «xml», а не «json».
Для подготовки файла правил и получения результатов от 1С:АПК используется поставляемое расширение из состава плагина – это доработка конфигурации АПК, позволяющее сформировать отчет об ошибках для последующего экспорта в «SonarQube», в виде расширения конфигурации 1С. Расширение протестировано на версиях АПК 1.2.2.56, 1.2.1.53 и ниже.
Также в поставке идет файл «acc_rules.xml», находящийся в папке «extresults» архива поставки. Этот файл – описания файлов правил, полученный для версии АПК 1.2.2.
-
Формирование файла правил из АПК для загрузки описания «внешних» правил на сервере SonarQube
Предварительно изучите раздел – «Подготовка файла описания правил от внешнего анализатора»
Запуск в командном режиме проверки АПК и формирование файла результатов/замечаний в формате xml для передачи анализатору sonar-scaner.
Установка расширения
Расширение подключается к версии АПК штатными средствами 1С:Предприятия - через Предприятие или Конфигуратор.
Установка расширения в режиме 1С:Предприятие
Для установки в режиме Предприятия нужно запустить АПК в управляемом приложении.
Установка расширения в режиме 1С:Конфигуратор
Для установки через Конфигуратор потребуется зайти в Конфигуратор и вызвать меню «Расширения конфигурации».
Далее в открывшемся окне нажать кнопку «Добавить» и согласиться с предложенными системой настройками. Будет добавлена строка в таблицу расширений.
Эту строку необходимо выделить мышью в списке и выбрать в командной панели окна «Расширения конфигурации» подменю «Конфигурация/Загрузить конфигурацию из файла».
Далее необходимо выбрать файл расширения «AccExporter.cfe» и снова согласиться со всеми предупреждениями системы.
Настройка расширения
После этого имя расширения в таблице должно будет измениться на «спИнтеграцияSonarQube». В строке с этим расширением также потребуется снять флажки:
Защита от опасных действий.
Расширение предназначено для формирования файлов (правил и результатов проверки), поэтому возможность формировать файлы на диске (которую запрещает безопасный режим) должна быть включена.
По возникающим проблемам при подключении расширения обращайтесь к документации «1С:Предприятие 8.3».
Формирование файла правил
После установки расширения появляется возможность выгрузки файла правил из базы 1С:АПК.
Также есть возможность указывать собственные настройки правил, отличные от настроек 1С:АПК. Например, среднее время исправления замечаний по правилу, важность, тип правила и т.п.
Для этого выполните следующие действия:
Откройте меню «Операции» - «Обработки»
Далее в списке найдите и откройте «Подготовка описания правил АПК для интеграции с SonarQube (SilverBulleters,LLC)»
Из-за особенностей использования толстого клиента обычного приложения обработку приходится открывать через меню «Операции».
В открывшейся форме можно выполнить следующее:
- Указать имя выходного файла правил, который нужно будет установить на сервере SonarQube
- Не устанавливать отбор по правилам, т.е. выгрузить абсолютно все правила АПК.
Или, напротив, выполнить отбор по коллекции выбранных правил/требований
Указать файл предыдущих правил с оценкой времени для переноса ранее установленной информации о ручных настройках правил – времени исправления, серьезности и т.п.
Формат файла правила задокументирован в разделе «Подготовка файла описания правил от внешнего анализатора».
После установки необходимых настроек выполните создание файла правил, нажав на кнопку «Создать файл правил из правил АПК».
Далее полученный файл правил нужно перенести и установить на сервере SonarQube, как описано в разделе «Настройка сервера SonarQube для загрузки файла описания правил».
- Вопрос: При запуске 1С:АПК на платформе 1С 8.3.10.ХХХ нельзя открыть обработку, находящуюся внутри расширения, через интерфейс толстого клиента обычного приложения.
- Ответ: Это баг платформы 1С. Используется платформы 8.3.11 и выше для запуска 1С:АПК.
Запуск проверки АПК и формирование файла результатов
После подключения расширения к базе АПК можно запускать конфигурацию АПК с ключом вида:
- NameVerifiableConfiguration - наименование проверяемой конфигурации
- NameOfResponsible - имя ответственного пользователя
- PathToVerifiableConfiguration - путь к ИБ проверяемой конфигурации
- IBUsername - имя пользователя ИБ проверяемой конфигурации
- IBPassword - пароль пользователя ИБ проверяемой конфигурации
- PathToFileResult - путь к файлу с отчетом о результатах
- NameVerificationVariant - имя варианта проверки в АПК
- Ключи «NameVerifiableConfiguration», «PathToVerifiableConfiguration» и «PathToFileResult» являются обязательными. При этом сама проверяемая конфигурация может не существовать в 1С-базе АПК. Она будет создана автоматически при запуске проверки.
Пример командной строки запуска проверки с помощью «vanessa-runner»
Импорт результатов проверки в SonarQube
(рекомендуем) В файле настроек анализа «sonar-project.properties» в свойстве «sonar.bsl.acc.resultsPath» нужно указать путь к полученному из АПК xml-отчету с замечаниями.
Или можно это сделать в свойствах проекта на сервере SonarQube и заполнить параметр «1C:ACC result path»
После выполнения одной из данных настроек можно запускать анализ качества кода через «sonar-scaner».
Интеграция результатов EDT и SonarQube
Для решения это задачи нужно воспользоваться инструментом «sonar-edt-result».
«sonar-edt-result» - это конвертер результатов проверки 1C:Enterprise Development Tools (EDT) в формат json для SonarQube.
Назначение
Результаты валидации проекта от EDT конвертируются в json-файл, который можно импортировать с помощью нашего плагина.
Формат выгрузки в json-файл для SonarQube документирован в разделе «Подготовка файла замечаний от внешнего анализатора».
Необходимое ПО
Установка
- Скопируйте файл «sonar-edt-result.ospx» из поставки
- Выполните команду
Использование
Получение файла валидации из EDT
Выполните команду с необходимыми настройками.
Получение json-файла для SonarQube из файла валидации EDT
ключ edt_result - Путь файла с результатами валидации из EDT в формате tsv/csv. Например, ./edt-result.csv
ключ sonarqube_json - Путь файла результата для SonarQube. Например, ./edt-json.json`
Все указанные аргументы можно задавать и через одноименные параметры окружения.
Текущий релиз в ветке Master: 1.2.017 Разработка ведется в ветке Develop.
В данном репозитории хранятся только исходники. Вы можете собрать необходимые файлы сами, либо скачать готовую сборку в релизах. При первом скачивании репозитория необходимо собрать файлы обработок.
- Чтобы работала сборка epf надо установить OneScript версии 1.0.20 или выше.
- Также, чтобы работала сборка epf надо установить платформу 1С:Предприятие 8.3.10.
- Для запуска сборки epf из исходников надо запустить Compile.bat
- Скрипты по сборке/разборке файлов взяты отсюда
Чтобы зафиксировать изменения epf файлов, нужно запустить Decompile.bat.
Проект использует принцип формирования автодокументации в формате Markdown и видео:
- Видео инструкции лежат здесь
- Прочие инструкции сгруппированы в этом плейлисте YouTube
- Также рекомендуется посмотреть вот этот вебинар
- Возможно вам поможет этот FAQ
Чтобы у вас работало автосоздание видеоинструкций необходимо установить дополнительный софт. Инструкция здесь Также по автовидеоинструкциям есть вот это замечательное видео
Список отличий проекта Vanessa-automation от проекта ADD можно посмотреть тут
Порядок установки Vanessa-Automation под Windows:
- интерпретатор 1Script - для работы с иходными файлами 1С с помощью проекта Precommit1C
- утилита Allure - для формирования отчётов о результатах прохождения тестов
Все должно быть установлено так, чтобы быть доступным через переменную %PATH%
Клонируйте данный репозиторий с помощью ms-git
Инициализируйте подмодули репозитория с помощью ms-git
При использовании SourceTree используйте команду Clone (Клонировать)
Обязательно ознакомьтесь с:
- руководством контрибьютора CONTRIBUTING.md
- моделью спонсорства DONATIONS.md
- известные проблемы KNOWN-PROBLEMS.md
Описание простого использования
- пишем feature файлы в формате Gherkin - обычно используется редактор Notepad++, Sublime IDE (Vanessa Extension) или связанный проект vanessa-bdd-editor
Классический вариант использования (без интерактивного режима)
Фактически классический вариант использования представляет собой следующий рутинный порядок:
- зафиксировали требования к информационной системе;
- создали автоматизированные сценарии проверки в виде epf файлов;
- наполнили шаги сценариев (сниппеты) кодом проверки поведения;
- запустили сценарии проверки поведения и убедились, что они НЕ работают;
- разработали функционал;
- запустили сценарии проверки поведения;
- убедились что сценарии проверки работают и отчет о проверки показывает "Зелёный" статус.
Использование в режиме проверки поведения пользовательского интерфейса
Для команд уже имеющих функционал или производящих доработку типовых конфигураций в интерфейсе Taxi, действует упрощенный порядок использования:
- зафиксировали требования к информационной системе;
- создали автоматизированные сценарии проверки в виде epf файлов;
- разработали управляемые формы или рабочие столы конфигурации в режиме прототипирования;
- запустили запись интерактивных действий пользователя в режиме менеджера тестирования;
- получившимся кодом наполнили обработки проверки поведения;
- дополнили код проверки, кодом проверки данных если это необходимо;
- разработали основной функционал;
- запустили сценарии проверки поведения;
- убедились что сценарии проверки работают и отчет о проверки показывает "Зелёный" статус.
Кто пишет feature файлы ?
Обратите внимание, что фактически feature файлы могут писать все участники команды:
- менеджер проекта - если обнаружил что заказчику необходимо новое поведение;
- бизнес или системный аналитик - на основе собранных требований и технических заданий;
- ведущий разработки - если обнаружил, что требования недостаточно структурированы;
- архитектор или эксперт 1С - если текущие сценарии некорректно спроектированы с точки зрения метаданных.
- тестироровщик - когда пишет сценарии для проверки поведения
Если вы не уверены в правильности ожидаемого поведения, используйте для этого системы тэгов, как то:
- "@Draft@" - черновик требования
- "@Предварительно" - начальные заметки
и подобные им обозначения
Файл профиля запуска обработки
Для запуска в консольном режиме используется понятие профиль консольного запуска. Профиль консольного запуска предназначен для удобной передачи параметров. Профиль запуска представляет собой текстовый файл в формате JSON.
Текущие параметры запуска:
- Каталог фич - каталог где собраны требования заказчика описанные на языке Gherkin
- ВыполнитьСценарии - признак того, что необходимо запустить выполнение сценариев
- ДелатьОтчетВФорматеАллюр - признак того, что необходимо формировать HTML отчёт о результатах проверки
- КаталогOutputAllureБазовый - адрес каталога для где будет формироваться HTML отчёт
- ЗавершитьРаботуСистемы - признак того, что окончанию работы необходимо завершить работу 1С предприятия
- ВыгружатьСтатусВыполненияСценариевВФайл - признак, что необходимо формировать файл с финальным статусом проверки
- ПутьКФайлуДляВыгрузкиСтатуасВыполненияСценариев - по данному пути будет сформирован файл со статусом проверки (обычно используется на серверах сборки для автоматизированного указания статуса сборки)
- СписокТеговИсключение - массив текстовых тэгов, для исключения из проверки (используется например для черновиков сценариев и требований)
- СписокТеговОтбор - массив текстовых тэгов для запуска проверки поведения по сценариям, содержащим любой из указанных тэгов
Пример подобного JSON файла можно найти здесь
Профиль запуска предназначен для простого консольного запуска, пример подобной командной строки выглядит так:
Примеры запуска можно увидеть в данном каталоге
Загрузка глобальных переменных из внешнего файла
Чтобы не зашивать в тесты все плавающие пользовательские переменные, такие как имена баз, строки подключения, логины, пароли и др., имеется возможность вынести эти переменные во внешний файл user_settings.json. Это может быть особенно полезно, когда над фичами работает команда, и у каждого участника существуют свои настройки подключения к базам.
Чтобы воспользоваться этой функциональности, нужно выполнить следующее:
- У себя в каталоге с обработкой ванессы создать файл user_settings.json. Сам файл user_settings.json должен отвечать специальному формату:
В свойства user поставить доменное (локальное) имя пользователя, для которого должны применяться настройки. Именно по этому свойству будет определяться, какие пользовательские настройки нужно загружать.
В свойстве settings прописать конкретные настройки для каждого пользователя. Состав настроек необязательно должен совпадать между пользователями, для какого-то пользователя настройки могут отсутствовать.
Открыть обработку AD - файл user_settings.json подтянется автоматически из каталога, в котором находится AD (поле каталог инструментов на вкладке Сервис). Если такого файла нет, то загрузка молча игнорируется. Имеется возможность указать свой каталог загрузки настроек, он подчиняется свойству Каталог проекта на вкладке Сервис.
Читайте также:
- в этом случае режимы проверки должны быть указаны последним параметров ком.строки последовательно, через пробел