From 874e07411f2c6390ec3dffde8033ef13ae9387de Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sun, 5 Jul 2026 17:37:07 +0900 Subject: [PATCH] Verify release shell readiness --- scripts/verify-release-candidate.mjs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/scripts/verify-release-candidate.mjs b/scripts/verify-release-candidate.mjs index 2f39bca..a0e2ad2 100644 --- a/scripts/verify-release-candidate.mjs +++ b/scripts/verify-release-candidate.mjs @@ -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() ?? [];