auto-sync: 2026-05-04 12:20:01
This commit is contained in:
83
tasks/ui-testing/README.md
Normal file
83
tasks/ui-testing/README.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# README: UI Testing Infrastructure
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
### 1. Установить окружение на mva154 (один раз)
|
||||
|
||||
```bash
|
||||
SKILL=~/.openclaw/skills/installer/scripts
|
||||
$SKILL/ssh_exec.sh --host mva154 --cmd "bash -s" --timeout 300 < tasks/ui-testing/scripts/setup-mva154.sh
|
||||
```
|
||||
|
||||
### 2. Запустить тесты
|
||||
|
||||
```bash
|
||||
bash tasks/ui-testing/scripts/run-tests.sh enduro-phase3 enduro-trails
|
||||
```
|
||||
|
||||
Скриншоты появятся в `tasks/enduro-trails/screenshots/`.
|
||||
|
||||
### 3. Проанализировать скриншоты
|
||||
|
||||
Стрим анализирует каждый скриншот через `image` tool с моделью Qwen 3.6 Plus.
|
||||
|
||||
---
|
||||
|
||||
## Структура
|
||||
|
||||
```
|
||||
tasks/ui-testing/
|
||||
├── PROJECT.md — описание проекта, требования, варианты реализации
|
||||
├── README.md — этот файл
|
||||
├── scripts/
|
||||
│ ├── setup-mva154.sh — установка Chromium + puppeteer на mva154
|
||||
│ └── run-tests.sh — запуск тестов, копирование скриншотов
|
||||
└── tests/
|
||||
├── template.js — шаблон теста (копировать для нового проекта)
|
||||
└── enduro-phase3.js — тесты Enduro Trails Фаза 3 (56 TC)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Написать новый тест
|
||||
|
||||
1. Скопировать `tests/template.js` → `tests/my-project.js`
|
||||
2. Заменить `CONFIG.url` на нужный URL
|
||||
3. Добавить тест-кейсы в функцию `runTests(page)`
|
||||
4. Запустить: `bash scripts/run-tests.sh my-project my-project`
|
||||
|
||||
### API хелперов
|
||||
|
||||
```js
|
||||
// Скриншот
|
||||
const snap = await screenshot(page, 'TC-01-step-name');
|
||||
|
||||
// Проверки
|
||||
pass('TC-01', 'описание что прошло');
|
||||
fail('TC-01', 'что не так', snap); // snap — путь к скриншоту
|
||||
blocked('TC-01', 'почему заблокировано');
|
||||
|
||||
// Действия
|
||||
await waitAndClick(page, '#btn-route');
|
||||
await sleep(500); // ждать 500ms
|
||||
const text = await getText(page, '#route-status');
|
||||
const visible = await isVisible(page, '#route-panel');
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Требования к окружению
|
||||
|
||||
| Компонент | Версия | Где |
|
||||
|-----------|--------|-----|
|
||||
| Node.js | 20+ | mva154 |
|
||||
| chromium-browser | любая | mva154 |
|
||||
| puppeteer-core | 22+ | mva154 (/home/slin/ui-tests/) |
|
||||
|
||||
---
|
||||
|
||||
## Известные ограничения
|
||||
|
||||
- **Playwright не работает в OpenClaw-контейнере** — нет системных библиотек (libglib, libnss и др.)
|
||||
- **SSH-бинарник в контейнере** требует glibc 2.38+, контейнер на 2.36 → используем installer skill
|
||||
- **MapLibre GL** рендерит карту через WebGL — скриншоты карты могут быть пустыми в headless без GPU. Решение: `--use-gl=swiftshader` или проверять UI-элементы вокруг карты, не саму карту
|
||||
Reference in New Issue
Block a user