merge: 최신 로컬 main을 정보 화면 버튼 통일에 재통합
This commit is contained in:
@@ -299,12 +299,16 @@ test('resource auction preserves the legacy desktop structure, geometry, and int
|
||||
const bidInput = page.getByRole('spinbutton', { name: '1번 경매 입찰가' });
|
||||
await bidInput.fill('800');
|
||||
await page.getByRole('button', { name: '입찰', exact: true }).click();
|
||||
await expect(page.getByRole('alert')).toContainText('금이 부족합니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="error"]')).toContainText(
|
||||
'금이 부족합니다.'
|
||||
);
|
||||
await page.screenshot({ path: 'test-results/auction/resource-desktop-error.png', fullPage: true });
|
||||
expect(state.resourceBidCount).toBe(0);
|
||||
|
||||
await page.getByRole('button', { name: '입찰', exact: true }).click();
|
||||
await expect(page.getByRole('status')).toContainText('입찰했습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="success"]')).toContainText(
|
||||
'입찰했습니다.'
|
||||
);
|
||||
expect(state.resourceBidCount).toBe(1);
|
||||
|
||||
await firstRow.hover();
|
||||
@@ -370,7 +374,9 @@ test('unique auction separates ongoing and finished lists and auto-loads the leg
|
||||
await dialog.accept();
|
||||
});
|
||||
await page.getByRole('button', { name: '입찰', exact: true }).click();
|
||||
await expect(page.getByRole('status')).toContainText('입찰이 완료되었습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="success"]')).toContainText(
|
||||
'입찰이 완료되었습니다.'
|
||||
);
|
||||
expect(state.uniqueBidCount).toBe(1);
|
||||
await page.screenshot({ path: 'test-results/auction/unique-desktop.png', fullPage: true });
|
||||
});
|
||||
|
||||
@@ -598,11 +598,15 @@ test('finance enforces edit permissions and preserves the old value across an AP
|
||||
const input = page.getByRole('spinbutton', { name: '세율' });
|
||||
await input.fill('25');
|
||||
await page.locator('.policy-cell').filter({ hasText: '세율' }).getByRole('button', { name: '변경' }).click();
|
||||
await expect(page.getByRole('alert')).toContainText('세율을 변경할 수 없습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="error"]')).toContainText(
|
||||
'세율을 변경할 수 없습니다.'
|
||||
);
|
||||
await expect(input).toHaveValue('20');
|
||||
await input.fill('25');
|
||||
await page.locator('.policy-cell').filter({ hasText: '세율' }).getByRole('button', { name: '변경' }).click();
|
||||
await expect(page.getByRole('status')).toContainText('세율을 변경했습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="success"]')).toContainText(
|
||||
'세율을 변경했습니다.'
|
||||
);
|
||||
expect(state.rate).toBe(25);
|
||||
|
||||
const readOnly = await page.context().newPage();
|
||||
|
||||
@@ -282,7 +282,9 @@ test('desktop geometry, typography, textures, drag, focus, tooltip, and successf
|
||||
await goldInput.fill('12345');
|
||||
page.once('dialog', (dialog) => dialog.accept());
|
||||
await page.locator('#container > .control_bar').getByRole('button', { name: '설정' }).click();
|
||||
await expect(page.getByRole('status')).toContainText('NPC 정책이 반영되었습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="success"]')).toContainText(
|
||||
'NPC 정책이 반영되었습니다.'
|
||||
);
|
||||
expect(state.mutations).toContain('npc.setNationPolicy');
|
||||
await screenshot(page, 'core-npc-policy-desktop.png');
|
||||
});
|
||||
|
||||
@@ -372,7 +372,9 @@ test('join refresh shows the assigned preliminary group immediately with accessi
|
||||
await expect(page.getByLabel('토너먼트 대진표')).toHaveCount(0);
|
||||
await join.click();
|
||||
|
||||
await expect(page.getByRole('status')).toHaveText('참가 신청이 반영되었습니다. 六조에 배정되었습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="success"]')).toContainText(
|
||||
'참가 신청이 반영되었습니다. 六조에 배정되었습니다.'
|
||||
);
|
||||
await expect(join).toBeDisabled();
|
||||
const preliminaryTabs = page.getByRole('tablist', { name: '예선 조 선택' });
|
||||
await expect(preliminaryTabs.getByRole('tab').nth(5)).toHaveAttribute('aria-selected', 'true');
|
||||
@@ -413,7 +415,9 @@ test('desktop join scrolls the assigned preliminary group into view without futu
|
||||
await expect(page.getByLabel('토너먼트 대진표')).toHaveCount(0);
|
||||
await page.getByRole('button', { name: '참가' }).click();
|
||||
|
||||
await expect(page.getByRole('status')).toHaveText('참가 신청이 반영되었습니다. 八조에 배정되었습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="success"]')).toContainText(
|
||||
'참가 신청이 반영되었습니다. 八조에 배정되었습니다.'
|
||||
);
|
||||
const assignedGroup = page.locator('[data-preliminary-group="7"]');
|
||||
await expect(assignedGroup.locator('.general-identity', { hasText: names[0] })).toBeVisible();
|
||||
const bounds = await assignedGroup.boundingBox();
|
||||
@@ -612,7 +616,9 @@ test('mobile betting rankings use tabs and keep dedicated icons beside general n
|
||||
);
|
||||
await dialog.getByRole('button', { name: '베팅 등록' }).click();
|
||||
await expect(dialog).not.toBeVisible();
|
||||
await expect(page.getByRole('status')).toHaveText('베팅이 등록되었습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="success"]')).toContainText(
|
||||
'베팅이 등록되었습니다.'
|
||||
);
|
||||
expect(placedBets).toEqual([{ targetId: 1, amount: 50 }]);
|
||||
|
||||
await expect(page.getByRole('tablist', { name: '토너먼트 랭킹 종목 선택' })).toBeVisible();
|
||||
|
||||
@@ -387,12 +387,16 @@ test('shows API failure then creates a troop successfully', async ({ page }) =>
|
||||
const input = page.getByRole('textbox', { name: '부대명' });
|
||||
await input.fill('실패대');
|
||||
await page.getByRole('button', { name: '부대 창설', exact: true }).click();
|
||||
await expect(page.getByRole('alert')).toContainText('부대 이름이 없습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="error"]')).toContainText(
|
||||
'부대 이름이 없습니다.'
|
||||
);
|
||||
expect(state.me.troopId).toBe(0);
|
||||
|
||||
await input.fill('신규대');
|
||||
await page.getByRole('button', { name: '부대 창설', exact: true }).click();
|
||||
await expect(page.getByRole('status')).toContainText('신규대 부대가 생성되었습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="success"]')).toContainText(
|
||||
'신규대 부대가 생성되었습니다.'
|
||||
);
|
||||
await expect(page.locator('.troopInfo').filter({ hasText: '신규대' })).toBeVisible();
|
||||
await expect(input).toBeHidden();
|
||||
});
|
||||
@@ -410,13 +414,17 @@ test('renames and kicks through confirm dialogs, then refreshes state', async ({
|
||||
await page.getByRole('button', { name: '부대명 변경...' }).first().click();
|
||||
await page.getByRole('textbox', { name: '새 부대명' }).fill('백마의종');
|
||||
await page.getByRole('button', { name: '변경', exact: true }).click();
|
||||
await expect(page.getByRole('status')).toContainText('부대명을 변경했습니다.');
|
||||
await expect(page.locator('[data-testid="game-toast"][data-feedback-kind="success"]')).toContainText(
|
||||
'부대명을 변경했습니다.'
|
||||
);
|
||||
await expect(page.locator('.troopInfo').filter({ hasText: '백마의종' })).toBeVisible();
|
||||
|
||||
await page.getByRole('button', { name: '부대원 추방...' }).click();
|
||||
await page.getByRole('combobox', { name: '추방할 부대원' }).selectOption('3');
|
||||
await page.getByRole('button', { name: '추방', exact: true }).click();
|
||||
await expect(page.getByRole('status')).toContainText('조운을 추방했습니다.');
|
||||
await expect(
|
||||
page.locator('[data-testid="game-toast"][data-feedback-kind="success"]').filter({ hasText: '조운' })
|
||||
).toContainText('조운을 추방했습니다.');
|
||||
await expect(page.locator('.troopMembers').first()).not.toContainText('조운');
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user