test: tolerate low-fps WebGL combat presentation

This commit is contained in:
2026-07-29 09:21:40 +09:00
parent 624eb2c219
commit 5f99f7d628

View File

@@ -500,15 +500,68 @@ try {
(unitId) => {
const battle = window.__HEROS_DEBUG__?.battle();
return (
battle?.actedUnitIds?.includes(unitId) &&
battle?.firstBattleTutorial?.active === false &&
battle.firstBattleTutorial.completion === 'completed' &&
battle.commandMenuKeyboard?.visible === false &&
battle.firstBattleTutorial?.active === false &&
battle.firstBattleTutorial.completion === 'completed'
(
battle.phase === 'animating' ||
battle.actedUnitIds?.includes(unitId)
)
);
},
tutorialPath.unitId,
{ timeout: 30000 }
{ timeout: 10000 }
);
try {
await page.waitForFunction(
(unitId) => {
const battle = window.__HEROS_DEBUG__?.battle();
return (
battle?.actedUnitIds?.includes(unitId) &&
battle.commandMenuKeyboard?.visible === false &&
battle.firstBattleTutorial?.active === false &&
battle.firstBattleTutorial.completion === 'completed'
);
},
tutorialPath.unitId,
{ timeout: 90000 }
);
} catch (error) {
const diagnostic = await page.evaluate((unitId) => {
const battle = window.__HEROS_DEBUG__?.battle();
const qa = window.__HEROS_KEYBOARD_COMMAND_QA__;
return {
expectedUnitId: unitId,
activeScenes:
window.__HEROS_DEBUG__?.activeScenes?.() ?? [],
phase: battle?.phase ?? null,
selectedUnitId: battle?.selectedUnitId ?? null,
actedUnitIds: battle?.actedUnitIds ?? [],
commandMenuKeyboard:
battle?.commandMenuKeyboard ?? null,
tutorial:
battle?.firstBattleTutorial ?? null,
lockedTargetPreview:
battle?.lockedTargetPreview ?? null,
combatExchangePreview:
battle?.combatExchangePreview ?? null,
pendingBattleEvents:
battle?.eventPresentation ?? null,
keyboardInputs:
qa?.keyboardInputs?.slice(-12) ?? []
};
}, tutorialPath.unitId);
await page
.screenshot({
path: `dist/verification-battle-keyboard-attack-timeout-${renderer}.png`,
fullPage: true
})
.catch(() => {});
throw new Error(
`Timed out after confirming the tutorial attack: ${JSON.stringify(diagnostic)}`,
{ cause: error }
);
}
const completed = await page.evaluate((unitId) => {
const state = window.__HEROS_DEBUG__?.battle();