framework/skills/tool-usage/browser-ui/web-test-1c/SKILL.md
Автоматизация 1С через веб-клиент — навигация по разделам, заполнение форм, чтение таблиц и отчётов, фильтрация списков. Используй когда нужно протестировать, проверить или автоматизировать действия в 1С через браузер.
npx skillsauth add steelmorgan/1c-agent-based-dev-framework web-test-1cInstall 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.
Семантический слой поверх Playwright для DOM 1С:Предприятие веб-клиента.
cd tools/web-test && npm install
Node.js 18+. npm install скачает Playwright и Chromium.
RUN="tools/web-test/run.mjs"
cat <<'SCRIPT' | node $RUN run http://erp-server:8080/mydb -
await navigateSection('Продажи');
await openCommand('Заказы клиентов');
await clickElement('Создать');
await fillFields({ 'Клиент': 'Альфа' });
await clickElement('Провести и закрыть');
SCRIPT
URL из .v8-project.json (поле webUrl) или задаётся явно.
node $RUN run <url> script.js # автономный — выполняет и завершается
node $RUN start <url> # интерактивный — запуск сессии
cat <<'SCRIPT' | node $RUN exec - # выполнить скрипт в сессии
const form = await getFormState();
SCRIPT
node $RUN shot result.png # скриншот
node $RUN stop # logout + закрытие (освобождает лицензию)
| Функция | Описание |
|---------|----------|
| navigateSection(name) | Перейти в раздел (fuzzy match), возвращает { navigated, sections, commands } |
| openCommand(name) | Открыть команду из панели функций → form state |
| navigateLink(url) | Перейти по метаданным (Shift+F11), поддержка русских имён |
| openFile(path) | Открыть EPF/ERF, обработка диалога безопасности |
| Функция | Описание |
|---------|----------|
| getFormState() | Все поля, кнопки, вкладки, таблицы, ошибки одним вызовом |
| readTable({ maxRows?, offset?, table? }) | Таблица с пагинацией: { columns, rows, total }. table выбирает сетку по имени |
| readSpreadsheet() | Отчёт (SpreadsheetDocument) после «Сформировать». Поддерживает text-only и отчёты с числовыми шапками |
getFormState() возвращает: fields (имя, значение, actions, required), table (back-compat: первая сетка), tables[] (все видимые сетки: {name, columns, rowCount, label}), openForms[], formCount, modal, openTabs[], navigation (панель навигации формы), reportSettings (human-readable настройки СКД), errors.stateText (info-bar SpreadsheetDocument), errorModal, confirmation.
Строки дерева помечаются _kind: 'group'|'parent', _tree: 'expanded'|'collapsed', _level, _selected.
| Функция | Описание |
|---------|----------|
| fillFields({ name: value }) | Заполнение полей (fuzzy match, автотип: справочник/чекбокс/радио) |
| fillField(name, value) | Одиночный аналог fillFields |
| selectValue(field, search, opts?) | Выбор из справочника (выпадающий / форма выбора) |
| clickElement(text, opts?) | Клик по кнопке/ссылке/строке. opts: dblclick, table (scope командной панели конкретной сетки), toggle/expand (дерево), modifier: 'ctrl'\|'shift' (multi-select), timeout |
| clickElement(target, opts?) с {row, column} | Drill-down в SpreadsheetDocument: {row: 0, column: 'К6'}, {row: {'К1': 'Материалы'}, column: 'К6'}, {row: 'totals', column: 'К6'} |
| fillTableRow(fields, opts) | Заполнение строки ТЧ ({ tab, add, row, table }) |
| deleteTableRow(row, { tab?, table? }) | Удаление строки |
| filterList(text, opts?) / unfilterList() | Фильтрация списков (простой / { field }) |
| closeForm({ save? }) | Закрытие с обработкой подтверждения |
| switchTab(name) | Переключение вкладки формы или открытой вкладки (tab bar) |
| navigateLink(url) | Открытие объекта по метаданным (Shift+F11), поддержка русских имён |
| openFile(path) | Открытие EPF/ERF через File→Open с обработкой security dialog |
| Функция | Описание |
|---------|----------|
| screenshot() | PNG скриншот |
| wait(seconds) | Ожидание + form state |
| getPage() | Playwright Page (нестандартные сценарии) |
| startRecording(path, opts?) / stopRecording() | Видеозапись (можно отключить на уровне CLI флагом --no-record) |
| addNarration(videoPath, opts?) | Наложение TTS-озвучки (node-edge-tts) |
| showCaption(text, opts?) / hideCaption() | Подпись поверх видео |
| showTitleSlide(text) / hideTitleSlide() | Титульный слайд |
| showImage(path, opts?) / hideImage() | Оверлей картинки |
| highlight(text, opts?) / unhighlight() / setHighlight(on) | Подсветка элементов |
| fetchErrorStack(formNum, hasReport) | Достать call stack из модального окна ошибки 1С |
| getSections() / getCommands() | Панель разделов |
page.fill() — 1С реагирует только на trusted eventsstop → POST /e1cib/logout (освобождает лицензию)fetchErrorStack) и скриншотtables[] перечисляет все; передавай { table: 'Исходящие' } в readTable/clickElement/fillTableRow/deleteTableRow чтобы указать нужную{expand: true} раскрывает/сворачиваетclickElement(..., { modifier: 'ctrl' }) или 'shift'extensionPath в .v8-project.json| Клавиша | Контекст | Действие |
|---------|----------|----------|
| F8 | Ссылочное поле | Создать новый элемент |
| Shift+F4 | Ссылочное поле | Очистить значение |
| F4 | Ссылочное поле | Открыть форму выбора |
| Alt+F | Список/таблица | Расширенный поиск |
Когда нужно покрыть 1С-решение серией автоматизированных тестов — запуск нескольких .test.mjs-сценариев подряд, агрегация результатов, retry на flaky, скриншоты на падениях, отчёты Allure/JUnit — переходи к режиму test. Подробнее: regress.md.
По умолчанию используй run/exec для одноразовой автоматизации — test — специализированный режим для проектного покрытия.
Два пути в порядке приоритета:
1. Vanessa Automation (рекомендуется) — если сценарий описан в .feature-файле. Vanessa пишет видео прогона и генерирует субтитры из шагов Gherkin из коробки. Настраивается через профиль (ЗаписыватьВидео, ГенерироватьСубтитры, ПутьКВидеозаписям). Использовать для демо-видео команде, документирования бизнес-процессов.
2. Playwright fallback — когда Vanessa недоступна, нужен headless или сценарий написан на JS. API: startRecording / stopRecording / showCaption / addNarration (TTS через node-edge-tts, OpenAI или ElevenLabs). Требует ffmpeg.
Подробнее: recording.md — сравнительная таблица, параметры профиля Vanessa, полный API Playwright-записи, примеры, устранение неполадок.
depends_on: [] requires:
tools
Diagnostics for Vanessa Automation runs. Use when a feature scenario failed, artifacts were not created, or you need to classify a failure after launch.
tools
Creating and refining Vanessa Automation feature scenarios based on real project requirements. Use when you need to write or update a scenario test, not just run it.
tools
--- name: v8-session-manager description: Use when working with the 1С session manager (v8-session-manager) - launch, configuration, connecting 1С clients, reading session_list, calling proxied MCP-tools from 1С extensions, diagnostics. Triggers: mention of `v8-session-manager`, `session_list`, 1С extension MCP showcase, error “no active sessions” / “session_id required”, connecting a client to the manager via `mcpMode=ws`. provides_capabilities: # Built-in manager tools — always available whi
tools
Use when Codex needs to manage v8-runner on local 1C projects through the CLI: configure v8project.yaml, initialize infobases or EDT workspaces, build sources from Designer or EDT, run syntax checks and tests, dump infobase changes, convert source formats, load or export artifacts, launch 1C clients, or choose safe 1C automation command sequences.