From 8ddc3f344f3f968e37f553c09a4164abf3473e22 Mon Sep 17 00:00:00 2001 From: hided62 Date: Wed, 19 Aug 2026 11:46:34 +0000 Subject: [PATCH] =?UTF-8?q?test(game-ui):=20=EC=8B=A4=EC=A0=9C=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=EA=B3=A0=EC=B9=A8=20=EB=B6=84=EB=A5=98=20=EB=B3=B5?= =?UTF-8?q?=EC=9B=90=EC=9D=84=20=EA=B2=80=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 개인턴과 사령턴 모두 page.reload() 경계에서 저장된 카테고리를 복원하는지 production Chromium으로 고정한다. --- .../e2e/commandArguments.spec.ts | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/app/game-frontend/e2e/commandArguments.spec.ts b/app/game-frontend/e2e/commandArguments.spec.ts index 86fab917..e10f6fba 100644 --- a/app/game-frontend/e2e/commandArguments.spec.ts +++ b/app/game-frontend/e2e/commandArguments.spec.ts @@ -730,6 +730,11 @@ const install = async (page: Page, rejectGeneral = false, commandTableResponse: let generalRevision = 0; let nationRevision = 0; let dashboardLoaded = false; + page.on('framenavigated', (frame) => { + if (frame === page.mainFrame()) { + dashboardLoaded = false; + } + }); await page.addInitScript((profile) => { localStorage.setItem('sammo-game-token', 'ga_commands'); localStorage.setItem('sammo-game-profile', profile); @@ -1151,18 +1156,15 @@ test('keeps general and chief command categories after input and across page rel .poll(() => page.evaluate(() => localStorage.getItem('core2026:general:1:category'))) .toBe(JSON.stringify('general:군사')); - const reloadedGeneralPage = await context.newPage(); - await install(reloadedGeneralPage); - await reloadedGeneralPage.goto('/'); - const reloadedGeneralEditor = reloadedGeneralPage.locator('[data-command-scope="general"]'); + await page.reload(); + const reloadedGeneralEditor = page.locator('[data-command-scope="general"]'); await reloadedGeneralEditor.getByRole('button', { name: '1턴 명령 입력', exact: true }).click(); - const reloadedGeneralPicker = reloadedGeneralPage.getByTestId('command-picker'); + const reloadedGeneralPicker = page.getByTestId('command-picker'); await expect(reloadedGeneralPicker.getByRole('button', { name: '군사', exact: true })).toHaveClass(/active/); await expect(reloadedGeneralPicker.getByRole('button', { name: '출병', exact: true })).toBeVisible(); await reloadedGeneralPicker.screenshot({ path: test.info().outputPath('general-category-after-reload-desktop-1200.png'), }); - await reloadedGeneralPage.close(); const chiefPage = await context.newPage(); await install(chiefPage, false, refChiefCommandTable); @@ -1184,15 +1186,10 @@ test('keeps general and chief command categories after input and across page rel await expect .poll(() => chiefPage.evaluate(() => localStorage.getItem('core2026:nation:1:5:category'))) .toBe(JSON.stringify('nation:전략')); - await chiefPage.close(); - - const reloadedChiefPage = await context.newPage(); - await install(reloadedChiefPage, false, refChiefCommandTable); - await reloadedChiefPage.setViewportSize({ width: 500, height: 900 }); - await reloadedChiefPage.goto('/che/chief-center'); - const reloadedChiefEditor = reloadedChiefPage.locator('[data-command-scope="nation"]'); + await chiefPage.reload(); + const reloadedChiefEditor = chiefPage.locator('[data-command-scope="nation"]'); await reloadedChiefEditor.getByRole('button', { name: '1턴 명령 입력', exact: true }).click(); - const reloadedChiefPicker = reloadedChiefPage.getByTestId('command-picker'); + const reloadedChiefPicker = chiefPage.getByTestId('command-picker'); await expect(reloadedChiefPicker.getByRole('button', { name: '전략', exact: true })).toHaveClass(/active/); await expect(reloadedChiefPicker.getByRole('button', { name: '필사즉생', exact: true })).toBeVisible(); await expect.poll(() => reloadedChiefPicker.evaluate((element) => element.getBoundingClientRect().height)).toBeGreaterThan(200);