M2: 바둑 추가, 4게임 E2E 안정화, 로드맵 M2 결과 기록
- 바둑: 9·13·19줄, 따내기·자충수 금지·슈퍼코(Zobrist)/한국식 삼패 무승부, 접바둑·덤, 패스, 사석 확인 단계(자동 제안·동의·이의 시 재개), 집/영역 계가, 초읽기·피셔 시계 (테스트 50개) - 쓰이지 않던 바둑 옵션(연결 끊김 유예 — 방 설정이 담당) 제거 - 홈 '방 만들기'가 게임 고르기 창을 거치도록 바뀐 것에 맞춰 E2E 수정, 장기 상차림 단계 E2E 안정화 - 전체: 테스트 230개, E2E 오목·관리자·4게임·접근성 모두 통과 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -103,6 +103,7 @@ try {
|
||||
g.on('pageerror', (e) => errors.push(e.message));
|
||||
await g.goto(ORIGIN + '/');
|
||||
await g.getByRole('button', { name: '+ 방 만들기' }).click();
|
||||
await g.getByRole('dialog', { name: '게임 고르기' }).getByRole('button', { name: /오목/ }).click();
|
||||
await g.getByLabel('내 이름(닉네임)').fill('손님');
|
||||
await g.getByRole('button', { name: '이 이름으로 시작하기' }).click();
|
||||
await g.waitForURL(/\/r\/\d{6}$/);
|
||||
|
||||
@@ -31,6 +31,10 @@ const PLANS: Record<string, Plan> = {
|
||||
// cursor starts on the e-file pawn of whoever is at the bottom: white e2-e4, black d7-d5 (board flipped)
|
||||
moves: [['Enter', 'ArrowUp', 'ArrowUp', 'Enter'], ['Enter', 'ArrowUp', 'ArrowUp', 'Enter']],
|
||||
},
|
||||
baduk: {
|
||||
// cursor starts at 천원: black plays there, white plays one point to the left
|
||||
moves: [['Enter'], ['ArrowLeft', 'Enter']],
|
||||
},
|
||||
janggi: {
|
||||
// Both sides pick 안상차림 (order may be han-first), then each pushes the centre 졸 one step.
|
||||
setup: async (host, guest) => {
|
||||
@@ -38,9 +42,12 @@ const PLANS: Record<string, Plan> = {
|
||||
let picked = false;
|
||||
for (const p of [host, guest]) {
|
||||
const btn = p.getByRole('button', { name: /^안상차림/ });
|
||||
if ((await btn.count()) && (await btn.isEnabled())) {
|
||||
await btn.click();
|
||||
picked = true;
|
||||
// The card list disappears right after choosing, so every probe must be short and tolerant.
|
||||
if ((await btn.count()) && (await btn.isEnabled({ timeout: 500 }).catch(() => false))) {
|
||||
picked = await btn
|
||||
.click({ timeout: 1000 })
|
||||
.then(() => true)
|
||||
.catch(() => false);
|
||||
}
|
||||
}
|
||||
if (await host.evaluate(() => !document.body.innerText.includes('상차림을 골라'))) {
|
||||
|
||||
@@ -68,6 +68,7 @@ try {
|
||||
await a.getByText('게임 고르기').waitFor();
|
||||
await a.screenshot({ path: join(SHOTS, '0-home-pc.png') });
|
||||
await a.getByRole('button', { name: '+ 방 만들기' }).click();
|
||||
await a.getByRole('dialog', { name: '게임 고르기' }).getByRole('button', { name: /오목/ }).click();
|
||||
await a.getByLabel('내 이름(닉네임)').fill('호랑이');
|
||||
await a.getByRole('button', { name: '이 이름으로 시작하기' }).click();
|
||||
await a.waitForURL(/\/r\/\d{6}$/);
|
||||
|
||||
Reference in New Issue
Block a user