Files
2026-05-04 12:20:17 +03:00
..
2026-05-04 12:20:17 +03:00
2026-05-04 12:20:17 +03:00
2026-05-04 12:20:17 +03:00
2026-05-04 12:20:17 +03:00

README: UI Testing Infrastructure

Быстрый старт

1. Установить окружение на mva154 (один раз)

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 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.jstests/my-project.js
  2. Заменить CONFIG.url на нужный URL
  3. Добавить тест-кейсы в функцию runTests(page)
  4. Запустить: bash scripts/run-tests.sh my-project my-project

API хелперов

// Скриншот
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-элементы вокруг карты, не саму карту