Skill v1.0.1
Automated scan100/100+4 new
version: "1.0.1" name: vanessa-authoring description: "Use for создания и доработки feature-сценариев Vanessa Automation по реальным требованиям проекта." uses_capabilities:
- run_vanessa
- build_project
Авторинг сценариев Vanessa Automation
Алгоритм написания
- Определи источник требования — спецификация или бизнес-кейс (
vanessa-scenario-policy). - Определи под каким пользователем выполняется сценарий (см. «Пользовательский контекст»).
- Найди подходящие шаги: сначала в библиотеке Vanessa, затем в сценариях проекта.
- Напиши один smoke-сценарий: открыть → одно действие → одно наблюдаемое следствие.
- Если шага нет — пометь
# unknown_step_candidate, не изобретай BSL-шаг. - Передай сценарий на прогон через
v8-runner(v8-runner test va).
Анатомия feature-файла
# 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-файле. Тестовые пользователи должны иметь простой или пустой пароль (пароль "").
Двухсессийный сплит (MUST)
.feature-файл логически делится на две части:
- Setup / инфраструктура — выполняется под техническим пользователем (
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:
- framework/rules/vanessa-scenario-policy.mdc
- framework/rules/vanessa-test-isolation-policy.mdc
- framework/rules/vanessa-tests-location.mdc
- framework/rules/vanessa-run-loop.mdc
- framework/skills/tool-usage/vanessa/vanessa-diagnostics/SKILL.md
- framework/skills/tool-usage/platform-data/xml-generation/SKILL.md
requires:
- tools