diff --git a/.claude/skills/web-test/regress.md b/.claude/skills/web-test/regress.md index 5f8e058e..806e14a7 100644 --- a/.claude/skills/web-test/regress.md +++ b/.claude/skills/web-test/regress.md @@ -5,9 +5,11 @@ Use this when the user asks to cover a 1C solution with automated regression tes The runner is the same `run.mjs`. The mode is `test`: ```bash -node $RUN test [url] [flags] +node $RUN test ... [flags] ``` +Positional args are test paths (files and/or dirs, multiple allowed). URL is NOT positional — it comes from `webtest.config.mjs`; override with `--url=`. + Tests live next to the project they cover (not inside the skill). Convention: `tests/` at the project root, with `_hooks.mjs` and `webtest.config.mjs` at the suite root. Tests are ES modules with `*.test.mjs` suffix. ## When to choose `test` over `exec` @@ -362,6 +364,7 @@ Each `params` entry becomes its own test in the report. `{key}` placeholders in node $RUN test tests// # full app suite node $RUN test tests//03-goods-receipt/ # one feature folder node $RUN test tests//02-counterparties/01-create.test.mjs # one file +node $RUN test tests//02-x.test.mjs tests//05-y.test.mjs # several files node $RUN test tests// --tags=smoke # by tag (intersection) node $RUN test tests// --grep='накладн' # by name regex node $RUN test tests// --bail --retry=1 # stop on first fail, allow 1 retry diff --git a/docs/web-test-regression-spec.md b/docs/web-test-regression-spec.md index 35a745a6..17494831 100644 --- a/docs/web-test-regression-spec.md +++ b/docs/web-test-regression-spec.md @@ -12,11 +12,14 @@ ## 1. Командная строка ``` -node run.mjs test [url] [флаги] +node run.mjs test ... [флаги] ``` +Позиционные аргументы — это пути к тестам (файлы `*.test.mjs` и/или каталоги), можно указать несколько: `node run.mjs test a.test.mjs b.test.mjs dir/`. Файлы из каталогов обходятся рекурсивно; итоговый набор дедуплицируется и сортируется (порядок по числовым префиксам `00-`, `01-`, … сохраняется независимо от порядка аргументов). Путь, которого нет на диске, → ранняя понятная ошибка (аргумент, похожий на URL, подскажет про `--url=`). + | Флаг | По умолчанию | Описание | |------|-------------|----------| +| `--url=URL` | (из конфига) | Переопределить базовый URL дефолтного контекста | | `--tags=smoke,crud` | (все) | Фильтр тестов по тегам (пересечение) | | `--grep=pattern` | (все) | Фильтр тестов по имени (регулярное выражение) | | `--bail` | false | Остановиться при первом падении | @@ -30,7 +33,7 @@ node run.mjs test [url] [флаги] | `--record` | false | Записывать видео для каждого теста (mp4 в `--report-dir`) | | `-- ` | — | Всё после `--` пробрасывается в `_hooks.mjs` как `hookArgs` (см. §6.1) | -URL необязателен, если в каталоге тестов есть `webtest.config.mjs`. CLI URL переопределяет URL дефолтного контекста. +URL не передаётся позиционно — он берётся из `webtest.config.mjs` в каталоге тестов, а флаг `--url=` переопределяет URL дефолтного контекста. `webtest.config.mjs` и `_hooks.mjs` резолвятся от каталога **первого** пути, поэтому перечисляемые файлы должны лежать в одной папке сьюта. ### Валидация CLI @@ -876,6 +879,7 @@ tests/myapp/ |--------|-----------| | Обход | Рекурсивный; файлы и каталоги, имя которых начинается на `_` или `.`, пропускаются | | Шаблон имени | Только `*.test.mjs` | +| Несколько путей | `node run.mjs test a.test.mjs b.test.mjs dir/` — наборы объединяются, дублируются и сортируются | | Порядок | Сортировка по полному относительному пути (`sales/01` идёт до `warehouse/01`) | | `file` в отчёте | `relative(testDir, file)` с разделителем `/`, например `sales/01-order-create.test.mjs` | | Фильтр по пути с CLI | `node run.mjs test tests/myapp/sales/` запустит только подкаталог | diff --git a/tests/web-test/README.md b/tests/web-test/README.md index 3fc0226b..d0db42a9 100644 --- a/tests/web-test/README.md +++ b/tests/web-test/README.md @@ -11,6 +11,9 @@ node .claude/skills/web-test/scripts/run.mjs test tests/web-test/ # Один файл node .claude/skills/web-test/scripts/run.mjs test tests/web-test/02-crud.test.mjs +# Несколько файлов (позиционные = пути к тестам, можно сколько угодно) +node .claude/skills/web-test/scripts/run.mjs test tests/web-test/04-selectvalue.test.mjs tests/web-test/11-report.test.mjs + # Несколько по фильтру тегов node .claude/skills/web-test/scripts/run.mjs test tests/web-test/ --tags=table,smoke @@ -18,7 +21,7 @@ node .claude/skills/web-test/scripts/run.mjs test tests/web-test/ --tags=table,s node .claude/skills/web-test/scripts/run.mjs test tests/web-test/ --grep=multi ``` -URL не указываем — берётся из `webtest.config.mjs` (`contexts.a.url` = `http://localhost:9191/webtest-runner/ru_RU`). +URL не передаём позиционно — берётся из `webtest.config.mjs` (`contexts.a.url` = `http://localhost:9191/webtest-runner/ru_RU`). Переопределить можно флагом `--url=`. Exit code: 0 = все прошли, 1 = есть падения. @@ -26,6 +29,7 @@ Exit code: 0 = все прошли, 1 = есть падения. | Флаг | Описание | |---|---| +| `--url=URL` | Переопределить базовый URL (по умолчанию — из `webtest.config.mjs`) | | `--tags=A,B` | Запустить только тесты с одним из тегов | | `--grep=regex` | Фильтр по имени теста | | `--bail` | Остановиться на первой ошибке |