Files
2026-10-14 10:01:46 +00:00

459 lines
26 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
$ env CHROME_PATH=/usr/bin/google-chrome PLAYWRIGHT_NO_SANDBOX=0 npx playwright test tests/browser/review-fixes.spec.ts --output=.agent/evidence-v0.2.3/review-fixes/browser-red
[WebServer] (node:1035667) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
[WebServer] (Use `node --trace-warnings ...` to show where the warning was created)
Running 4 tests using 2 workers
(node:1035689) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
(Use `node --trace-warnings ...` to show where the warning was created)
(node:1035688) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
(Use `node --trace-warnings ...` to show where the warning was created)
✘ 1 [desktop] › tests/browser/review-fixes.spec.ts:24:1 › 리뷰: 한국어 모드·결과 어절은 320px와 360px에서도 갈라지거나 넘치지 않는다 (3.0s)
(node:1035956) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
(Use `node --trace-warnings ...` to show where the warning was created)
✘ 3 [mobile] › tests/browser/review-fixes.spec.ts:24:1 › 리뷰: 한국어 모드·결과 어절은 320px와 360px에서도 갈라지거나 넘치지 않는다 (2.6s)
(node:1036087) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.
(Use `node --trace-warnings ...` to show where the warning was created)
✘ 2 [desktop] › tests/browser/review-fixes.spec.ts:38:1 › 리뷰: 실제 진행 막대는 현재 문항의 1/3·2/3·3/3을 채운다 (36.4s)
✘ 4 [mobile] › tests/browser/review-fixes.spec.ts:38:1 › 리뷰: 실제 진행 막대는 현재 문항의 1/3·2/3·3/3을 채운다 (39.3s)
1) [desktop] › tests/browser/review-fixes.spec.ts:24:1 › 리뷰: 한국어 모드·결과 어절은 320px와 360px에서도 갈라지거나 넘치지 않는다
Error: expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 4
- Array []
+ Array [
+ "split: 탐험에서도",
+ "split: 라운드",
+ ]
30 | await page.getByRole("button", { name: "게임 시작 · 소리 듣기" }).click();
31 | await page.getByRole("button", { name: "문제 풀이 종료" }).click();
> 32 | expect.soft(await copyLayout(page, ".results-panel h2, .results-panel p, .stats span, .results-panel th, .results-panel td")).toEqual([]);
| ^
33 | expect.soft(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true);
34 | await page.screenshot({ path: info.outputPath(`copy-${width}-results.png`), fullPage: true });
35 | }
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:32:131
Error: expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 3
- Array []
+ Array [
+ "split: 입력",
+ ]
26 | await page.setViewportSize({ width, height: 800 });
27 | await page.goto("/");
> 28 | expect.soft(await copyLayout(page, ".mode-option small")).toEqual([]);
| ^
29 | await page.screenshot({ path: info.outputPath(`copy-${width}-home.png`), fullPage: true });
30 | await page.getByRole("button", { name: "게임 시작 · 소리 듣기" }).click();
31 | await page.getByRole("button", { name: "문제 풀이 종료" }).click();
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:28:63
Error: expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 4
- Array []
+ Array [
+ "split: 만나요",
+ "split: 최대",
+ ]
30 | await page.getByRole("button", { name: "게임 시작 · 소리 듣기" }).click();
31 | await page.getByRole("button", { name: "문제 풀이 종료" }).click();
> 32 | expect.soft(await copyLayout(page, ".results-panel h2, .results-panel p, .stats span, .results-panel th, .results-panel td")).toEqual([]);
| ^
33 | expect.soft(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true);
34 | await page.screenshot({ path: info.outputPath(`copy-${width}-results.png`), fullPage: true });
35 | }
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:32:131
Error Context: .agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-한국어-모드·결과-어절은-320px와-360px에서도-갈라지거나-넘치지-않는다-desktop/error-context.md
attachment #2: trace (application/zip) ─────────────────────────────────────────────────────────
.agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-한국어-모드·결과-어절은-320px와-360px에서도-갈라지거나-넘치지-않는다-desktop/trace.zip
Usage:
npx playwright show-trace .agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-한국어-모드·결과-어절은-320px와-360px에서도-갈라지거나-넘치지-않는다-desktop/trace.zip
────────────────────────────────────────────────────────────────────────────────────────────────
2) [desktop] › tests/browser/review-fixes.spec.ts:38:1 › 리뷰: 실제 진행 막대는 현재 문항의 1/3·2/3·3/3을 채운다 ───
Error: expect(received).toBeCloseTo(expected)
Expected: 0.3333333333333333
Received: 0
Expected precision: 2
Expected difference: < 0.005
Received difference: 0.3333333333333333
47 | for (let index = 0; index < 3; index++) {
48 | const bar = page.getByRole("progressbar");
> 49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
| ^
50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:49:83
Error: expect(locator).toHaveAccessibleName(expected) failed
Locator: getByRole('progressbar')
Expected: "현재 문항 진행률"
Received: "전체 진행률"
Timeout: 1000ms
Call log:
- Expect "soft toHaveAccessibleName" getByRole('progressbar') with timeout 1000ms
- waiting for getByRole('progressbar')
11 × locator resolved to <progress max="3" value="0" aria-label="전체 진행률"></progress>
- unexpected value "전체 진행률"
48 | const bar = page.getByRole("progressbar");
49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
> 50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
| ^
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
53 | await expect(page.getByRole("group", { name: "답 선택" })).toBeVisible({ timeout: 30000 });
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:50:28
Error: expect(received).toBeCloseTo(expected)
Expected: 0.6666666666666666
Received: 0.3333333333333333
Expected precision: 2
Expected difference: < 0.005
Received difference: 0.3333333333333333
47 | for (let index = 0; index < 3; index++) {
48 | const bar = page.getByRole("progressbar");
> 49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
| ^
50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:49:83
Error: expect(locator).toHaveAccessibleName(expected) failed
Locator: getByRole('progressbar')
Expected: "현재 문항 진행률"
Received: "전체 진행률"
Timeout: 1000ms
Call log:
- Expect "soft toHaveAccessibleName" getByRole('progressbar') with timeout 1000ms
- waiting for getByRole('progressbar')
11 × locator resolved to <progress max="3" value="1" aria-label="전체 진행률"></progress>
- unexpected value "전체 진행률"
48 | const bar = page.getByRole("progressbar");
49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
> 50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
| ^
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
53 | await expect(page.getByRole("group", { name: "답 선택" })).toBeVisible({ timeout: 30000 });
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:50:28
Error: expect(received).toBeCloseTo(expected)
Expected: 1
Received: 0.6666666666666666
Expected precision: 2
Expected difference: < 0.005
Received difference: 0.33333333333333337
47 | for (let index = 0; index < 3; index++) {
48 | const bar = page.getByRole("progressbar");
> 49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
| ^
50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:49:83
Error: expect(locator).toHaveAccessibleName(expected) failed
Locator: getByRole('progressbar')
Expected: "현재 문항 진행률"
Received: "전체 진행률"
Timeout: 1000ms
Call log:
- Expect "soft toHaveAccessibleName" getByRole('progressbar') with timeout 1000ms
- waiting for getByRole('progressbar')
11 × locator resolved to <progress max="3" value="2" aria-label="전체 진행률"></progress>
- unexpected value "전체 진행률"
48 | const bar = page.getByRole("progressbar");
49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
> 50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
| ^
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
53 | await expect(page.getByRole("group", { name: "답 선택" })).toBeVisible({ timeout: 30000 });
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:50:28
Error Context: .agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-실제-진행-막대는-현재-문항의-1-3·2-3·3-3을-채운다-desktop/error-context.md
attachment #2: trace (application/zip) ─────────────────────────────────────────────────────────
.agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-실제-진행-막대는-현재-문항의-1-3·2-3·3-3을-채운다-desktop/trace.zip
Usage:
npx playwright show-trace .agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-실제-진행-막대는-현재-문항의-1-3·2-3·3-3을-채운다-desktop/trace.zip
────────────────────────────────────────────────────────────────────────────────────────────────
3) [mobile] › tests/browser/review-fixes.spec.ts:24:1 › 리뷰: 한국어 모드·결과 어절은 320px와 360px에서도 갈라지거나 넘치지 않는다
Error: expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 4
- Array []
+ Array [
+ "split: 탐험에서도",
+ "split: 라운드",
+ ]
30 | await page.getByRole("button", { name: "게임 시작 · 소리 듣기" }).click();
31 | await page.getByRole("button", { name: "문제 풀이 종료" }).click();
> 32 | expect.soft(await copyLayout(page, ".results-panel h2, .results-panel p, .stats span, .results-panel th, .results-panel td")).toEqual([]);
| ^
33 | expect.soft(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true);
34 | await page.screenshot({ path: info.outputPath(`copy-${width}-results.png`), fullPage: true });
35 | }
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:32:131
Error: expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 3
- Array []
+ Array [
+ "split: 입력",
+ ]
26 | await page.setViewportSize({ width, height: 800 });
27 | await page.goto("/");
> 28 | expect.soft(await copyLayout(page, ".mode-option small")).toEqual([]);
| ^
29 | await page.screenshot({ path: info.outputPath(`copy-${width}-home.png`), fullPage: true });
30 | await page.getByRole("button", { name: "게임 시작 · 소리 듣기" }).click();
31 | await page.getByRole("button", { name: "문제 풀이 종료" }).click();
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:28:63
Error: expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 4
- Array []
+ Array [
+ "split: 만나요",
+ "split: 최대",
+ ]
30 | await page.getByRole("button", { name: "게임 시작 · 소리 듣기" }).click();
31 | await page.getByRole("button", { name: "문제 풀이 종료" }).click();
> 32 | expect.soft(await copyLayout(page, ".results-panel h2, .results-panel p, .stats span, .results-panel th, .results-panel td")).toEqual([]);
| ^
33 | expect.soft(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true);
34 | await page.screenshot({ path: info.outputPath(`copy-${width}-results.png`), fullPage: true });
35 | }
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:32:131
Error Context: .agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-한국어-모드·결과-어절은-320px와-360px에서도-갈라지거나-넘치지-않는다-mobile/error-context.md
attachment #2: trace (application/zip) ─────────────────────────────────────────────────────────
.agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-한국어-모드·결과-어절은-320px와-360px에서도-갈라지거나-넘치지-않는다-mobile/trace.zip
Usage:
npx playwright show-trace .agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-한국어-모드·결과-어절은-320px와-360px에서도-갈라지거나-넘치지-않는다-mobile/trace.zip
────────────────────────────────────────────────────────────────────────────────────────────────
4) [mobile] › tests/browser/review-fixes.spec.ts:38:1 › 리뷰: 실제 진행 막대는 현재 문항의 1/3·2/3·3/3을 채운다 ────
Error: expect(received).toBeCloseTo(expected)
Expected: 0.3333333333333333
Received: 0
Expected precision: 2
Expected difference: < 0.005
Received difference: 0.3333333333333333
47 | for (let index = 0; index < 3; index++) {
48 | const bar = page.getByRole("progressbar");
> 49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
| ^
50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:49:83
Error: expect(locator).toHaveAccessibleName(expected) failed
Locator: getByRole('progressbar')
Expected: "현재 문항 진행률"
Received: "전체 진행률"
Timeout: 1000ms
Call log:
- Expect "soft toHaveAccessibleName" getByRole('progressbar') with timeout 1000ms
- waiting for getByRole('progressbar')
11 × locator resolved to <progress max="3" value="0" aria-label="전체 진행률"></progress>
- unexpected value "전체 진행률"
48 | const bar = page.getByRole("progressbar");
49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
> 50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
| ^
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
53 | await expect(page.getByRole("group", { name: "답 선택" })).toBeVisible({ timeout: 30000 });
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:50:28
Error: expect(received).toBeCloseTo(expected)
Expected: 0.6666666666666666
Received: 0.3333333333333333
Expected precision: 2
Expected difference: < 0.005
Received difference: 0.3333333333333333
47 | for (let index = 0; index < 3; index++) {
48 | const bar = page.getByRole("progressbar");
> 49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
| ^
50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:49:83
Error: expect(locator).toHaveAccessibleName(expected) failed
Locator: getByRole('progressbar')
Expected: "현재 문항 진행률"
Received: "전체 진행률"
Timeout: 1000ms
Call log:
- Expect "soft toHaveAccessibleName" getByRole('progressbar') with timeout 1000ms
- waiting for getByRole('progressbar')
11 × locator resolved to <progress max="3" value="1" aria-label="전체 진행률"></progress>
- unexpected value "전체 진행률"
48 | const bar = page.getByRole("progressbar");
49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
> 50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
| ^
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
53 | await expect(page.getByRole("group", { name: "답 선택" })).toBeVisible({ timeout: 30000 });
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:50:28
Error: expect(received).toBeCloseTo(expected)
Expected: 1
Received: 0.6666666666666666
Expected precision: 2
Expected difference: < 0.005
Received difference: 0.33333333333333337
47 | for (let index = 0; index < 3; index++) {
48 | const bar = page.getByRole("progressbar");
> 49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
| ^
50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:49:83
Error: expect(locator).toHaveAccessibleName(expected) failed
Locator: getByRole('progressbar')
Expected: "현재 문항 진행률"
Received: "전체 진행률"
Timeout: 1000ms
Call log:
- Expect "soft toHaveAccessibleName" getByRole('progressbar') with timeout 1000ms
- waiting for getByRole('progressbar')
11 × locator resolved to <progress max="3" value="2" aria-label="전체 진행률"></progress>
- unexpected value "전체 진행률"
48 | const bar = page.getByRole("progressbar");
49 | expect.soft(await bar.evaluate((el) => (el as HTMLProgressElement).position)).toBeCloseTo((index + 1) / 3);
> 50 | await expect.soft(bar).toHaveAccessibleName("현재 문항 진행률", { timeout: 1000 });
| ^
51 | await bar.screenshot({ path: info.outputPath(`progress-${index + 1}.png`) });
52 | if (index) await page.getByRole("button", { name: /문장 듣기/ }).click();
53 | await expect(page.getByRole("group", { name: "답 선택" })).toBeVisible({ timeout: 30000 });
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:50:28
Error: expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 4
- Array []
+ Array [
+ "split: 만나요",
+ "split: 최대",
+ ]
57 | }
58 | await page.screenshot({ path: info.outputPath("normal-results.png"), fullPage: true });
> 59 | expect(await copyLayout(page, ".results-panel h2, .results-panel p, .stats span")).toEqual([]);
| ^
60 | });
61 |
at /home/hermes/worktrees/find-word-v0.2.3/tests/browser/review-fixes.spec.ts:59:86
Error Context: .agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-실제-진행-막대는-현재-문항의-1-3·2-3·3-3을-채운다-mobile/error-context.md
attachment #2: trace (application/zip) ─────────────────────────────────────────────────────────
.agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-실제-진행-막대는-현재-문항의-1-3·2-3·3-3을-채운다-mobile/trace.zip
Usage:
npx playwright show-trace .agent/evidence-v0.2.3/review-fixes/browser-red/review-fixes-리뷰-실제-진행-막대는-현재-문항의-1-3·2-3·3-3을-채운다-mobile/trace.zip
────────────────────────────────────────────────────────────────────────────────────────────────
4 failed
[desktop] › tests/browser/review-fixes.spec.ts:24:1 › 리뷰: 한국어 모드·결과 어절은 320px와 360px에서도 갈라지거나 넘치지 않는다
[desktop] › tests/browser/review-fixes.spec.ts:38:1 › 리뷰: 실제 진행 막대는 현재 문항의 1/3·2/3·3/3을 채운다 ────
[mobile] › tests/browser/review-fixes.spec.ts:24:1 › 리뷰: 한국어 모드·결과 어절은 320px와 360px에서도 갈라지거나 넘치지 않는다
[mobile] › tests/browser/review-fixes.spec.ts:38:1 › 리뷰: 실제 진행 막대는 현재 문항의 1/3·2/3·3/3을 채운다 ─────
EXIT_CODE=1