fix(game-ui): 메인 턴과 장수 상태 표시를 보완

This commit is contained in:
2026-08-29 03:30:50 +00:00
parent fa9fe71539
commit 26952fcdc7
11 changed files with 120 additions and 49 deletions
@@ -946,7 +946,7 @@ const install = async (
return requests;
};
test('offers the Ref repeat range for general turns while keeping the chief range', async ({ page }) => {
test('offers 12 repeat turns and six shift turns for general turns while keeping the chief range', async ({ page }) => {
await install(page);
await page.setViewportSize({ width: 1200, height: 900 });
await page.goto('/');
@@ -957,6 +957,11 @@ test('offers the Ref repeat range for general turns while keeping the chief rang
await expect(generalRepeat.locator('.menu-items > button')).toHaveText(
Array.from({ length: 12 }, (_, index) => `${index + 1}`)
);
const generalPull = generalEditor.locator('.bottom-shift-menu').first();
await generalPull.locator('summary').click();
await expect(generalPull.locator('.menu-items > button')).toHaveText(
Array.from({ length: 6 }, (_, index) => `${index + 1}`)
);
await page.setViewportSize({ width: 500, height: 900 });
const mobileGeneralEditor = page.locator('[data-command-scope="general"]:visible');
+31 -3
View File
@@ -1840,7 +1840,11 @@ test('tournament split main action follows recruitment, betting, finals, and tou
const main = nationMenu.locator('[data-navigation-id="tournament"]');
await expect(main).toHaveText(lifecycle.label);
await expect(main).toHaveAttribute('href', `${basePath}${lifecycle.route}`);
await expect(main).toHaveClass(/highlight/);
if (lifecycle.stage === 1 || lifecycle.stage === 6) {
await expect(main).toHaveClass(/highlight/);
} else {
await expect(main).not.toHaveClass(/highlight/);
}
const toggle = nationMenu.locator('[data-menu-id="tournament-betting"]');
await toggle.click();
@@ -1851,9 +1855,12 @@ test('tournament split main action follows recruitment, betting, finals, and tou
if (lifecycle.stage === 6) {
await expect(tournamentItem).not.toHaveClass(/highlight/);
await expect(bettingItem).toHaveClass(/highlight/);
} else {
} else if (lifecycle.stage === 1) {
await expect(tournamentItem).toHaveClass(/highlight/);
await expect(bettingItem).not.toHaveClass(/highlight/);
} else {
await expect(tournamentItem).not.toHaveClass(/highlight/);
await expect(bettingItem).not.toHaveClass(/highlight/);
}
await page.keyboard.press('Escape');
@@ -1865,9 +1872,12 @@ test('tournament split main action follows recruitment, betting, finals, and tou
if (lifecycle.stage === 6) {
await expect(mobileTournament).not.toHaveClass(/highlight/);
await expect(mobileBetting).toHaveClass(/highlight/);
} else {
} else if (lifecycle.stage === 1) {
await expect(mobileTournament).toHaveClass(/highlight/);
await expect(mobileBetting).not.toHaveClass(/highlight/);
} else {
await expect(mobileTournament).not.toHaveClass(/highlight/);
await expect(mobileBetting).not.toHaveClass(/highlight/);
}
await page.keyboard.press('Escape');
}
@@ -2323,6 +2333,12 @@ test('main general card uses local turn time and command clock tracks corrected
await expect(generalCard).toContainText('7분 남음');
await expect(generalCard).toContainText('백마대');
await expect(generalCard).toContainText('보통 120점(3)');
const leadershipProgress = generalCard.locator('[data-rich-tooltip="stat-leadership"]');
await leadershipProgress.hover();
const statTooltip = page.locator('.tippy-box[data-theme~="sammo-rich"]');
await expect(statTooltip).toBeVisible();
await expect(statTooltip).toContainText('통솔 성장');
await expect(statTooltip).toContainText('5 / 20');
const desktopGeometry = await title.evaluate((element) => {
const rect = element.getBoundingClientRect();
@@ -4239,6 +4255,18 @@ test('all main Lumen button families share the rounded pressed geometry', async
await page.mouse.up();
}
const generalPullMenu = page.locator('[data-main-target="commands"] .bottom-shift-menu').first();
await generalPullMenu.locator('summary').click();
await expect(generalPullMenu.locator('.menu-items > button')).toHaveText([
'1턴',
'2턴',
'3턴',
'4턴',
'5턴',
'6턴',
]);
await generalPullMenu.locator('summary').click();
state.permission = 0;
await page.locator('.main-turn-controls').getByRole('button', { name: '갱 신' }).click();
const disabledSecret = page.locator('.layout-desktop [data-navigation-id="secret-board"]');