/**
* Смоук-тест игры в реальном браузере (системный Chromium).
* Запуск: node tools/smoke.mjs [url] [файл-скриншота]
* Открывает страницу, ждёт загрузки/меню, печатает консоль браузера и делает скриншот.
*/
import puppeteer from 'puppeteer-core';
const url = process.argv[2] ?? 'http://localhost:5199/';
const shot = process.argv[3] ?? '/tmp/rpg_smoke.png';
const browser = await puppeteer.launch({
executablePath: '/usr/bin/chromium',
headless: true,
args: ['--no-sandbox', '--enable-unsafe-swiftshader', '--use-angle=swiftshader', '--window-size=960,540']
});
const page = await browser.newPage();
await page.setViewport({ width: 960, height: 540 });
page.on('console', (msg) => console.log(`[консоль] ${msg.text()}`));
page.on('pageerror', (err) => console.log(`[ошибка страницы] ${err.message}`));
await page.goto(url, { waitUntil: 'networkidle2', timeout: 20000 });
await new Promise((r) => setTimeout(r, 4000));
// Клик в центр экрана: в меню это «Новая игра», в локации — шаг героя.
await page.mouse.click(480, 283);
await new Promise((r) => setTimeout(r, 2500));
await page.screenshot({ path: shot });
console.log(`Скриншот: ${shot}`);
await browser.close();