mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 08:04:56 +03:00
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>
This commit is contained in:
@@ -35,12 +35,14 @@
|
||||
| Командный интерфейс (CI) | 2 навыка `/interface-*` | Редактирование и валидация CommandInterface.xml подсистем | [Подробнее](docs/subsystem-guide.md) |
|
||||
| Базы данных (DB) | 9 навыков `/db-*` | Создание баз, загрузка/выгрузка конфигураций, обновление БД, загрузка из Git | [Подробнее](docs/db-guide.md) |
|
||||
| Веб-публикация (Web) | 4 навыка `/web-*` | Публикация баз через Apache, статус, остановка, удаление публикаций | [Подробнее](docs/web-guide.md) |
|
||||
| Тестирование (Web) | `/web-test` | Автоматизация 1С через браузер — навигация, формы, таблицы, отчёты, фильтры | [Подробнее](docs/web-test-guide.md) |
|
||||
| Утилиты | `/img-grid` | Наложение сетки на изображение для определения пропорций колонок | — |
|
||||
|
||||
## Требования
|
||||
|
||||
- **Windows** с PowerShell 5.1+ (входит в Windows)
|
||||
- **1С:Предприятие 8.3** — для сборки/разборки EPF/ERF (навыки генерации XML работают без платформы)
|
||||
- **Node.js 18+** — для `/web-test` (тестирование через браузер)
|
||||
|
||||
## Спецификации
|
||||
|
||||
@@ -133,6 +135,7 @@
|
||||
├── web-info/ # Статус Apache и публикаций
|
||||
├── web-stop/ # Остановка Apache
|
||||
├── web-unpublish/ # Удаление публикации
|
||||
├── web-test/ # Тестирование через браузер (Playwright)
|
||||
└── img-grid/ # Сетка для анализа изображений
|
||||
docs/
|
||||
├── epf-guide.md # Гайд: внешние обработки и отчёты
|
||||
@@ -146,6 +149,7 @@ docs/
|
||||
├── subsystem-guide.md # Гайд: подсистемы и командный интерфейс
|
||||
├── db-guide.md # Гайд: базы данных 1С
|
||||
├── web-guide.md # Гайд: веб-публикация через Apache
|
||||
├── web-test-guide.md # Гайд: тестирование через веб-клиент
|
||||
├── 1c-epf-spec.md # Спецификация XML-формата (EPF)
|
||||
├── 1c-erf-spec.md # Спецификация XML-формата (ERF)
|
||||
├── 1c-form-spec.md # Спецификация управляемых форм
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
# Тестирование через веб-клиент 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-отчёты (фильтры по меткам)
|
||||
|
||||
Фильтры отчётов можно задавать человекочитаемыми именами вместо технических:
|
||||
|
||||
```js
|
||||
// Вместо: 'КомпоновщикНастроекПользовательскиеНастройкиЭлемент3Значение'
|
||||
// Просто:
|
||||
await fillFields({ 'Склад': 'Склад бытовой техники' });
|
||||
```
|
||||
|
||||
`getFormState()` возвращает `reportSettings` — фильтры в читаемом виде:
|
||||
```json
|
||||
[
|
||||
{ "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-guide.md) — `/web-publish`, `/web-info`, `/web-stop`, `/web-unpublish`
|
||||
- [Базы данных](db-guide.md) — `/db-load-xml`, `/db-update`, `/db-run`
|
||||
- [Расширения](cfe-guide.md) — `/cfe-init`, `/cfe-borrow`, `/cfe-patch-method`
|
||||
Reference in New Issue
Block a user