Files
cc-1c-skills/docs/web-test-guide.md
T
Nick Shirokov 59d223d72b docs: add web-test guide and README entry
- New docs/web-test-guide.md with usage scenarios, API overview, DCS filters
- README: add web-test row to skills table, directory structure, Node.js requirement

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:55:59 +03:00

7.9 KiB
Raw Blame History

Тестирование через веб-клиент 1С

Навык /web-test автоматизирует действия в веб-клиенте 1С через Playwright — навигация по разделам, заполнение форм, чтение таблиц и отчётов, фильтрация списков. Замыкает цикл: правка исходников → загрузка → обновление → публикация → автоматическое тестирование.

Навык

Навык Скрипт Описание
/web-test .mjs (Node.js) Автоматизация 1С через браузер — навигация, формы, таблицы, отчёты

Предусловия

  • База опубликована через Apache (/web-publish)
  • Node.js 18+ установлен
  • Зависимости установлены: cd .claude/skills/web-test/scripts && npm install

Рабочий цикл

/web-publish → /web-test → результат
     ↑                          |
     └── правки → /db-load-xml → /db-update ──┘

Два режима работы

Автономный — одна команда запускает браузер, выполняет сценарий и закрывает:

> Открой список заказов клиентов в ERP, найди заказ КП00-000018, открой и прочитай реквизиты

Claude напишет .js файл со сценарием и запустит node $RUN run <url> script.js.

Интерактивный — пошаговая работа через живую сессию:

> Запусти браузер на базе erp
> Перейди в раздел Продажи
> Открой Заказы клиентов
> Прочитай таблицу

Claude запустит node $RUN start <url>, затем выполнит каждый шаг через node $RUN exec.

Сценарии использования

Навигация и чтение данных

> Открой список контрагентов в ERP и покажи первые 10 записей

Claude перейдёт в нужный раздел, откроет список и прочитает таблицу.

Создание документа

> Создай заказ клиента: организация "Андромеда Плюс", контрагент "Торговый дом Комплексный",
> добавь строку: номенклатура "Вентилятор", количество 5

Claude откроет форму создания, заполнит реквизиты шапки, добавит строку в табличную часть.

Работа с отчётами

> Открой отчёт "Остатки и доступность товаров",
> установи отбор Склад = "Склад бытовой техники", сформируй и прочитай результат

Claude заполнит фильтры отчёта (DCS-настройки) по человекочитаемым именам, нажмёт "Сформировать" и прочитает табличный документ.

Поиск и фильтрация

> Найди в списке номенклатуры товар "Вентилятор" и открой его карточку

Claude отфильтрует список, откроет найденный элемент двойным кликом, прочитает форму.

Проверка после загрузки расширения

> Загрузи расширение ТестОшибки и проверь через браузер, что при создании заказа клиента
> появляется ошибка "Тестовая ошибка из расширения"

Claude загрузит расширение через /db-load-xml, затем через /web-test откроет форму заказа и проверит ожидаемое поведение.

API: что умеет навык

Навигация

Функция Что делает
navigateSection(name) Переход в раздел (Продажи, Склад и доставка, ...)
openCommand(name) Открытие команды из панели функций
navigateLink(url) Открытие по пути метаданных (Документ.ЗаказКлиента)
switchTab(name) Переключение между открытыми вкладками

Чтение

Функция Что делает
getFormState() Структура формы: поля, кнопки, вкладки, фильтры, DCS-настройки отчёта
readTable() Данные таблицы с пагинацией, поддержка дерева и иерархии
readSpreadsheet() Табличный документ отчёта: заголовки, данные, итоги
getSections() Разделы и команды

Действия

Функция Что делает
clickElement(text) Клик по кнопке, ссылке, вкладке, строке таблицы
fillFields({...}) Заполнение полей формы (текст, чекбокс, радио, ссылочные)
selectValue(field, search) Выбор из справочника через форму подбора
fillTableRow({...}) Заполнение строки табличной части
filterList(text) Фильтрация списка (простая и расширенная)
closeForm() Закрытие формы с управлением диалогом подтверждения

DCS-отчёты (фильтры по меткам)

Фильтры отчётов можно задавать человекочитаемыми именами вместо технических:

// Вместо: 'КомпоновщикНастроекПользовательскиеНастройкиЭлемент3Значение'
// Просто:
await fillFields({ 'Склад': 'Склад бытовой техники' });

getFormState() возвращает reportSettings — фильтры в читаемом виде:

[
  { "name": "Склад", "enabled": true, "value": "Склад бытовой техники" },
  { "name": "Номенклатура", "enabled": false, "value": "" }
]

Особенности

  • Headed mode — 1С требует видимый браузер, headless не поддерживается
  • Время запуска — первое подключение к 1С занимает 30-60 секунд
  • Fuzzy matching — все поиски по имени: точное совпадение → начало строки → вхождение
  • Clipboard paste — все поля заполняются через Ctrl+V (единственный способ корректно триггерить события 1С)
  • Anti-loop — если элемент не найден после 2 попыток, навык сообщает что найдено вместо бесконечных ретраев

Связанные навыки