Files
Find-Word/.agent/evidence-v0.1.1/cache-regression/01-unit-red.log
T

236 lines
8.2 KiB
Plaintext
Raw Normal View History

UTC: 2026-10-14T07:20:59.789143+00:00
COMMAND: npm test -- tests/audio.test.ts tests/game.test.ts tests/audio-requests.test.ts
> find-word@0.1.1 test
> vitest run tests/audio.test.ts tests/game.test.ts tests/audio-requests.test.ts
RUN v5.0.4 /home/hermes/worktrees/find-word-v0.1.1
❯ tests/audio-requests.test.ts (1 test | 1 failed) 28ms
× WAV 요청 판정은 query의 버전·순서와 무관하게 pathname을 사용한다 26ms
❯ tests/game.test.ts (8 tests | 1 failed) 92ms
❯ 출제와 정답 판정 (5)
× 목표 WAV 100개 모두 같은 명시적 cache-busting 버전과 정답 mapping을 유지한다 50ms
❯ tests/audio.test.ts (8 tests | 3 failed) 357ms
❯ 오디오 재생 수명과 믹서 (8)
× intro와 목표 실제 fetch URL에 같은 명시적 cache-busting 버전을 붙인다 101ms
× intro 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다 47ms
× target 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다 47ms
⎯⎯⎯⎯⎯⎯⎯ Failed Tests 5 ⎯⎯⎯⎯⎯⎯⎯
FAIL tests/audio-requests.test.ts > WAV 요청 판정은 query의 버전·순서와 무관하게 pathname을 사용한다
AssertionError: /audio/intro.wav?v=0.1.1: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ tests/audio-requests.test.ts:12:74
10| "/audio/luck-apple.wav",
11| ]) {
12| expect.soft(isAudioRequest(new URL(path, "http://localhost")), pat…
| ^
13| }
14| for (const path of [
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/11]⎯
FAIL tests/audio-requests.test.ts > WAV 요청 판정은 query의 버전·순서와 무관하게 pathname을 사용한다
AssertionError: /audio/luck-apple.wav?v=0.1.1: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ tests/audio-requests.test.ts:12:74
10| "/audio/luck-apple.wav",
11| ]) {
12| expect.soft(isAudioRequest(new URL(path, "http://localhost")), pat…
| ^
13| }
14| for (const path of [
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/11]⎯
FAIL tests/audio-requests.test.ts > WAV 요청 판정은 query의 버전·순서와 무관하게 pathname을 사용한다
AssertionError: /audio/luck-apple.wav?retry=1&v=0.1.1: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ tests/audio-requests.test.ts:12:74
10| "/audio/luck-apple.wav",
11| ]) {
12| expect.soft(isAudioRequest(new URL(path, "http://localhost")), pat…
| ^
13| }
14| for (const path of [
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/11]⎯
FAIL tests/audio-requests.test.ts > WAV 요청 판정은 query의 버전·순서와 무관하게 pathname을 사용한다
AssertionError: /audio/luck-apple.wav?v=0.1.1&retry=1: expected false to be true // Object.is equality
- Expected
+ Received
- true
+ false
❯ tests/audio-requests.test.ts:12:74
10| "/audio/luck-apple.wav",
11| ]) {
12| expect.soft(isAudioRequest(new URL(path, "http://localhost")), pat…
| ^
13| }
14| for (const path of [
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/11]⎯
FAIL tests/audio-requests.test.ts > WAV 요청 판정은 query의 버전·순서와 무관하게 pathname을 사용한다
AssertionError: /audio/manifest.json?file=intro.wav: expected true to be false // Object.is equality
- Expected
+ Received
- false
+ true
❯ tests/audio-requests.test.ts:20:74
18| "/audio/intro.wav.txt?v=0.1.1",
19| ]) {
20| expect.soft(isAudioRequest(new URL(path, "http://localhost")), pat…
| ^
21| }
22| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/11]⎯
FAIL tests/audio-requests.test.ts > WAV 요청 판정은 query의 버전·순서와 무관하게 pathname을 사용한다
AssertionError: /other/intro.wav: expected true to be false // Object.is equality
- Expected
+ Received
- false
+ true
❯ tests/audio-requests.test.ts:20:74
18| "/audio/intro.wav.txt?v=0.1.1",
19| ]) {
20| expect.soft(isAudioRequest(new URL(path, "http://localhost")), pat…
| ^
21| }
22| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/11]⎯
FAIL tests/audio-requests.test.ts > WAV 요청 판정은 query의 버전·순서와 무관하게 pathname을 사용한다
AssertionError: /audio-backup/intro.wav: expected true to be false // Object.is equality
- Expected
+ Received
- false
+ true
❯ tests/audio-requests.test.ts:20:74
18| "/audio/intro.wav.txt?v=0.1.1",
19| ]) {
20| expect.soft(isAudioRequest(new URL(path, "http://localhost")), pat…
| ^
21| }
22| });
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/11]⎯
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > intro와 목표 실제 fetch URL에 같은 명시적 cache-busting 버전을 붙인다
AssertionError: expected [ '/audio/intro.wav', …(1) ] to deeply equal [ '/audio/intro.wav?v=0.1.1', …(1) ]
- Expected
+ Received
[
- "/audio/intro.wav?v=0.1.1",
- "/audio/correction-market.wav?v=0.1.1",
+ "/audio/intro.wav",
+ "/audio/correction-market.wav",
]
❯ tests/audio.test.ts:97:54
95| f.sources.at(-1)!.onended?.();
96| await done;
97| expect(f.fetcher.mock.calls.map(([url]) => url)).toEqual([
| ^
98| "/audio/intro.wav?v=0.1.1",
99| `/audio/${question.id}.wav?v=0.1.1`,
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/11]⎯
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > intro 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > target 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다
AssertionError: expected [ '/audio/intro.wav', …(3) ] to deeply equal [ '/audio/intro.wav?v=0.1.1', …(3) ]
- Expected
+ Received
[
- "/audio/intro.wav?v=0.1.1",
- "/audio/correction-market.wav?v=0.1.1",
- "/audio/intro.wav?v=0.1.1",
- "/audio/correction-market.wav?v=0.1.1",
+ "/audio/intro.wav",
+ "/audio/correction-market.wav",
+ "/audio/intro.wav",
+ "/audio/correction-market.wav",
]
❯ tests/audio.test.ts:119:54
117| f.sources.at(-1)!.onended?.();
118| await done;
119| expect(f.fetcher.mock.calls.map(([url]) => url)).toEqual([
| ^
120| "/audio/intro.wav?v=0.1.1",
121| `/audio/${question.id}.wav?v=0.1.1`,
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/11]⎯
FAIL tests/game.test.ts > 출제와 정답 판정 > 목표 WAV 100개 모두 같은 명시적 cache-busting 버전과 정답 mapping을 유지한다
AssertionError: expected Set{ null } to deeply equal Set{ '0.1.1' }
- Expected
+ Received
Set {
- "0.1.1",
+ null,
}
❯ tests/game.test.ts:30:22
28| versions.add(url.searchParams.get("v"));
29| }
30| expect(versions).toEqual(new Set(["0.1.1"]));
| ^
31| });
32| it("실제 보기에 있는 경쟁 단어를 문장에 넣고 청취 연산별 순서를 유지한다", () => {
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/11]⎯
Test Files 3 failed (3)
Tests 5 failed | 12 passed (17)
Start at 07:21:00
Duration 1.91s (environment 66%, setup 13%, tests 11%, transform 6%, worker 2%, import 2%)
EXIT_CODE: 1