236 lines
8.2 KiB
Plaintext
236 lines
8.2 KiB
Plaintext
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
|