- 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>
7.9 KiB
Тестирование через веб-клиент 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 попыток, навык сообщает что найдено вместо бесконечных ретраев
Связанные навыки
- Веб-публикация —
/web-publish,/web-info,/web-stop,/web-unpublish - Базы данных —
/db-load-xml,/db-update,/db-run - Расширения —
/cfe-init,/cfe-borrow,/cfe-patch-method