459 lines
26 KiB
Plaintext
459 lines
26 KiB
Plaintext
$ 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
|