Verify release shell readiness

This commit is contained in:
2026-07-05 17:37:07 +09:00
parent 803622bad1
commit 874e07411f

View File

@@ -4,6 +4,7 @@ import { chromium } from 'playwright';
const targetUrl = withDebugParam(process.env.RELEASE_QA_URL ?? 'http://127.0.0.1:4173/');
const screenshotDir = 'dist';
const expectedTitle = '\uC0BC\uAD6D\uC9C0: \uC138 \uD615\uC81C\uC758 \uB9F9\uC138';
let serverProcess;
let browser;
@@ -37,6 +38,7 @@ try {
await page.evaluate(() => window.localStorage.clear());
await page.reload({ waitUntil: 'domcontentloaded' });
await waitForTitle(page);
await assertReleaseShellReady(page);
await page.screenshot({ path: `${screenshotDir}/rc-title-first-run.png`, fullPage: true });
await assertCanvasPainted(page, 'title first run');
@@ -218,6 +220,20 @@ async function waitForTitle(page) {
}, undefined, { timeout: 90000 });
}
async function assertReleaseShellReady(page) {
const state = await page.evaluate(() => ({
title: document.title,
canvasCount: document.querySelectorAll('canvas').length,
debugApiPresent: Boolean(window.__HEROS_DEBUG__),
gameApiPresent: Boolean(window.__HEROS_GAME__)
}));
assert(state.title === expectedTitle, `Expected release page title "${expectedTitle}": ${JSON.stringify(state)}`);
assert(state.canvasCount === 1, `Expected exactly one release game canvas: ${JSON.stringify(state)}`);
assert(state.debugApiPresent === true, `Expected release QA debug API to be enabled: ${JSON.stringify(state)}`);
assert(state.gameApiPresent === true, `Expected release QA game handle to be enabled: ${JSON.stringify(state)}`);
}
async function waitForStoryReady(page) {
await page.waitForFunction(() => {
const activeScenes = window.__HEROS_DEBUG__?.activeScenes() ?? [];