framework/skills/tool-usage/vanessa/vanessa-authoring/SKILL.md
Use for создания и доработки feature-сценариев Vanessa Automation по реальным требованиям проекта.
npx skillsauth add steelmorgan/1c-agent-based-dev-framework vanessa-authoringInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
vanessa-scenario-policy).# unknown_step_candidate, не изобретай BSL-шаг.v8-runner (v8-runner test va).# language: ru
# encoding: utf-8
# Задача: task-103 — Оформление заказа клиента через портфель
@task-103 @тег-фичи
Функциональность: Краткое название
Как <роль пользователя>
Я хочу <что сделать>
Чтобы <бизнес-польза>
Контекст:
Дано Я запускаю тест-клиент для пользователя "Логин" с паролем "Пароль" или подключаю уже существующий
Сценарий: Название сценария
Когда <действие>
И <следующее действие>
Тогда <ожидаемый результат>
Контекст: выполняется перед каждым сценарием файла.Дано, Когда, Тогда, И, Затем — взаимозаменяемы синтаксически.\', \", \\.Структура сценария: + Примеры: — запускает сценарий по каждой строке таблицы параметров.@tree в заголовке — включает Turbo Gherkin: отступы Tab задают дерево шагов (пробелы недопустимы!).@exportscenarios — делает сценарий доступным как подсценарий из другого feature-файла.MUST: каждый сценарий выполняется под конкретным бизнес-пользователем, а не под admin/AgentAI. Исключение — только если проверяемая функция доступна исключительно администратору.
Как определить пользователя:
Один пользователь (в секции Контекст:):
Дано Я запускаю тест-клиент для пользователя "SalesManager" с паролем "123" или подключаю уже существующий
Несколько пользователей (в теле сценария — именованные TestClient):
И я подключаю TestClient "Менеджер" логин "SalesManager" пароль "123"
И я подключаю TestClient "Руководитель" логин "Director" пароль "456"
И я активизирую TestClient "Менеджер"
# ... шаги от имени менеджера ...
И я активизирую TestClient "Руководитель"
# ... шаги от имени руководителя ...
И я закрываю TestClient "Менеджер"
И я закрываю TestClient "Руководитель"
Пароль — plain text в feature-файле. Тестовые пользователи должны иметь простой или пустой пароль (
пароль "").
.feature-файл логически делится на две части:
AgentAI в этом проекте): подготовка тестовых данных (создание документов, элементов справочников, записей регистров), шаги VAExtension (Расширение), BSL-фикстуры из vanessa-tests/support/, всё что требует технических ролей вне нормального доступа бизнес-пользователя.Gavrilova Natalia для OC-23400): только шаги, проверяющие пользовательское поведение под тестом. Бизнес-пользователь НЕ должен получать технические роли (например роли из VAExtension.cfe) лишь ради прохождения шага.Переключение сессий:
И я закрываю сеанс TESTCLIENT
или
И я закрываю TestClient "<имя>"
после чего открывается новая сессия:
Дано я подключаю TestClient "<роль>" логин "<пользователь>" пароль "<пароль>"
Обоснование (Infostart id=249957, id=249958): если бизнес-флоу выполняется с полными правами, тест перестаёт проверять реальные ролевые ограничения и даёт ложное ощущение правильности. Выдача бизнес-пользователю технических ролей ради удовлетворения инфраструктурного шага — это тот же антипаттерн в другой форме.
Антипаттерн: помещать шаги (Расширение) / фикстуры в сессию бизнес-пользователя, а потом «починить» падение выдачей ему технических ролей. Вместо этого — переместить шаг в блок setup под техническим пользователем.
Библиотека: /opt/onescript/2.0.0/lib/add/features/libraries/
| Категория | Файл библиотеки |
|-----------|-----------------|
| Интерфейс, поля, кнопки, закладки | UITestRunner/РаботаСИнтерфейсом.feature |
| Таблицы (ТЧ) | UITestRunner/РаботаСТаблицами.feature |
| Состояние элементов формы | UITestRunner/СостояниеЭлементаФормы.feature |
| Флаги / переключатели | UITestRunner/РаботаСФлагами.feature |
| Сообщения пользователю | UITestRunner/РаботаСОкномСообщений.feature |
| Данные в БД, справочники | Данные/ЗапросыКБД.feature |
| Один / несколько TestClient | UITestRunner/ОткрытьTestClient.feature, UITestRunner/ПодключениеНесколькихКлиентовТестирования.feature |
| Условия, переменные | Условие/Условие.feature |
| Пауза | Пауза/СделатьПаузу.feature |
Шпаргалка частых шагов с синтаксисом → references/steps-cheatsheet.md.
Полная библиотека: references/steps.json (1116 шагов). Не читай целиком — используй grep для поиска по ключевым словам из задачи. Структура каждой записи:
ИмяШага — пример вызова с параметрамиОписаниеШага — что делает шагПолныйТипШага — категория (UI, Прочее, Файлы, Переменные и т.д.)| Тег | Смысл |
|-----|-------|
| @task-<ID> | Привязка к задаче трекера (MUST, vanessa-scenario-policy) |
| @draft / @Draft@ | Исключить из прогона при запуске каталога |
| @manual-data | Сценарий зависит от данных, созданных вручную |
| @regression | Регрессионный тест |
| @ui | UI-тест через TestClient |
| @tree | Turbo Gherkin: отступы Tab = вложенность (пробелы запрещены) |
| @exportscenarios | Сценарий вызывается как подсценарий из другого файла |
| @IgnoreOnXxx | Системный: пропустить в указанном окружении |
| Антипаттерн | Последствие | |-------------|-------------| | Сценарий под admin без обоснования | Не проверяет реальные права пользователя | | Шаг проверяет внутреннюю деталь (вызов метода, прямой запрос в БД) | Хрупкий: нет наблюдаемого UI-поведения | | Изобретённый шаг вместо поиска в библиотеке | Не резолвится при запуске | | Длинный сценарий (7+ действий) | Сложно локализовать падение | | Подготовка данных смешана с проверкой | Нарушает Given/Then разделение |
depends_on:
testing
MUST use BEFORE making a judgment about the cause of a conflict, a test failure, or an artifact dispute. Defines the end-to-end verification method L1→L6 and the classification of the first broken link.
development
MUST use AFTER a work cycle with ≥2 iterations (wrote → error → fixed → success). Provides the retrospective procedure and the format for recording practice/anti-patterns in references/learned-patterns.md or {project}/.context/learned-patterns.md.
tools
MUST use WHEN you are writing reusable knowledge into RLM (pattern / architectural decision / stable domain fact) OR reading it before a non-trivial task/solution in the domain. Provides the breakdown of native-push vs RLM-pull, tools for writing and reading RLM, H-MEM levels, and hygiene.
testing
MUST use WHEN the task is classified as simple (< 20 lines, 1 file, no new metadata objects, no architectural decisions). Provides a short cycle of 3 steps with a guard on the self path and mandatory verify.