- Add tests/scripts/lib/gitea-client.js: Gitea API client with auth, comments,
attachments, and Markdown report formatters for visual and console reports
- Add tests/scripts/lib/browser-launcher.js: shared Playwright launch config with
--dns-resolution-order=hostname-first, realistic UA, and navigateTo() helper
using waitUntil:'commit' + waitForLoadState('domcontentloaded')
- Add tests/scripts/e2e-booking-flow-v2.js: full E2E scenario for irina-vik.ru
(register → book service → login → personal cabinet) with Gitea reporting
- Update visual-test-pipeline.js: GITEA_ISSUE env var, Gitea comment+attachment
posting, browser-launcher integration, waitUntil:'commit' navigation
- Update console-error-monitor-standalone.js: same Gitea + DNS fixes
- Update capture-screenshots.js: browser-launcher integration, DNS fix
- Update docker-compose.web-testing.yml: NETWORK_MODE env var (bridge),
DNS_RESOLUTION_ORDER, GITEA_USER/PASSWORD env passthrough, e2e-booking service
- Update tests/package.json: pin playwright to exact 1.52.0 (matches Docker image)
- Update .gitignore: add tests/visual/e2e/ for E2E screenshots
- Update .kilo/agents/visual-tester.md: Docker networking note, Gitea scripts,
e2e-booking service, updated script table
- Update .kilo/commands/web-test.md: Docker Networking section, --issue flag,
Gitea Integration section, e2e-booking service
- Update .kilo/commands/e2e-test.md: complete rewrite — Docker-based Playwright,
no more MCP dependency, proper service table, Gitea integration docs
- Update .kilo/capability-index.yaml: add gitea_integration, e2e_booking_flow,
docker_networking capabilities to visual-tester; add routing entries
Web Testing Suite — APAW
Автоматическое тестирование веб-приложений. Запускается целиком в Docker без зависимостей на хосте.
Возможности
| Тест | Скрипт | Описание |
|---|---|---|
| Visual Regression | visual-test-pipeline.js |
Скриншоты + pixelmatch + извлечение UI-элементов с bbox |
| Screenshot Capture | capture-screenshots.js |
Захват baseline/current скриншотов в 3 viewport |
| Screenshot Compare | compare-screenshots.js |
Сравнение PNG через pixelmatch |
| Console Errors | console-error-monitor-standalone.js |
Ловит JS ошибки, network 4xx/5xx, request failures |
| Link Checking | link-checker.js |
Проверка ссылок на 404/500 |
Быстрый старт
Вариант 1: Docker Compose (рекомендуется)
# Полный визуальный пайплайн (захват + сравнение + элементы + ошибки)
docker compose -f docker/docker-compose.web-testing.yml run --rm \
-e TARGET_URL=https://example.com \
-e PAGES=/ \
visual-tester
# Только захват baseline-скриншотов
docker compose -f docker/docker-compose.web-testing.yml run --rm \
-e TARGET_URL=https://example.com \
screenshot-baseline
# Только захват текущих скриншотов
docker compose -f docker/docker-compose.web-testing.yml run --rm \
-e TARGET_URL=https://example.com \
screenshot-current
# Только сравнение (pixelmatch)
docker compose -f docker/docker-compose.web-testing.yml run --rm visual-compare
# Мониторинг консольных ошибок
docker compose -f docker/docker-compose.web-testing.yml run --rm \
-e TARGET_URL=https://example.com \
console-monitor
Вариант 2: Прямой docker run
docker run --rm \
--add-host=host.docker.internal:host-gateway \
--shm-size=2g \
-v $(pwd)/tests:/app/tests \
-e TARGET_URL=https://example.com \
-e PAGES=/ \
mcr.microsoft.com/playwright:v1.52.0-noble \
sh -c "cd /app/tests && npm install --ignore-scripts && node scripts/visual-test-pipeline.js"
Структура
tests/
├── scripts/
│ ├── visual-test-pipeline.js # Полный пайплайн (захват + сравнение + элементы)
│ ├── capture-screenshots.js # Захват скриншотов (baseline|current)
│ ├── compare-screenshots.js # Сравнение PNG (pixelmatch)
│ ├── console-error-monitor-standalone.js # Мониторинг console/network ошибок
│ ├── console-error-monitor.js # Мониторинг через Playwright MCP
│ └── link-checker.js # Проверка ссылок
├── visual/
│ ├── baseline/ # Эталонные скриншоты (git-tracked)
│ ├── current/ # Текущие скриншоты (gitignored)
│ └── diff/ # Diff-изображения (gitignored)
├── reports/ # JSON-отчёты (gitignored)
│ ├── visual-test-report.json
│ └── console-error-report.json
├── package.json
└── README.md
Переменные окружения
| Переменная | По умолчанию | Описание |
|---|---|---|
TARGET_URL |
http://host.docker.internal:3000 |
URL тестируемого приложения |
PAGES |
/,/admin/login |
Список путей через запятую |
PIXELMATCH_THRESHOLD |
0.05 |
Допустимый % отличий (5%) |
REPORTS_DIR |
./reports |
Папка для отчётов |
Visual Regression — как работает
- Захват скриншотов — Playwright открывает страницу в 3 viewport (mobile 375x667, tablet 768x1024, desktop 1280x720)
- Извлечение элементов — обходит DOM, собирает bbox, tag, className, text, href для каждого видимого элемента
- Сравнение — pixelmatch сравнивает текущие PNG с baseline, генерирует diff-изображение
- Отчёт — JSON с результатами: элементы, console/network ошибки, diff-процент
Baseline-скриншоты
При первом запуске без baseline скрипт автоматически создаёт их. Для обновления:
docker compose -f docker/docker-compose.web-testing.yml run --rm \
-e TARGET_URL=https://example.com screenshot-baseline
Обнаруживаемые проблемы
- Наложение элементов (кнопка вне viewportа)
- Сдвиг шрифтов / неверные цвета
- Отсутствующие / лишние элементы
- Микро-кнопки (width < 10px)
- Console JS errors
- Network errors (4xx/5xx)
Пример отчёта
{
"summary": {
"screenshotsCaptured": 3,
"totalElements": 702,
"comparisonsPassed": 3,
"comparisonsFailed": 0,
"totalConsoleErrors": 0,
"totalNetworkErrors": 25
},
"elements": {
"homepage_desktop": [
{ "tag": "button", "text": "Buy Now", "bbox": {"x":318,"y":349,"width":644,"height":47} }
]
}
}
Docker-образ
Используется mcr.microsoft.com/playwright:v1.52.0-noble — предустановленный Playwright с Chromium.
See Also
docker/docker-compose.web-testing.yml— Docker Compose конфигурация.kilo/agents/visual-tester.md— Агент визуального тестирования.kilo/commands/e2e-test.md— E2E workflow