feat: release Find-Word v0.2.3
This commit is contained in:
@@ -0,0 +1,272 @@
|
||||
|
||||
RUN v5.0.4 /home/hermes/worktrees/find-word-v0.2.3
|
||||
|
||||
❯ tests/audio.test.ts (11 tests | 9 failed) 139ms
|
||||
❯ 오디오 재생 수명과 믹서 (8)
|
||||
× intro와 목표 실제 fetch URL에 같은 명시적 cache-busting 버전을 붙인다 21ms
|
||||
× intro 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다 19ms
|
||||
× target 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다 20ms
|
||||
× 생성 시 무음이며 gesture의 play에서만 장치를 연다 13ms
|
||||
× 동시 시작을 거부하고 정지하면 모든 노드와 대기 Promise를 취소한다 14ms
|
||||
× HTTP·디코드·장치 실패를 전달하고 다음 시도는 다시 로드한다 3ms
|
||||
× 전체 음량은 두 신호의 비율을 보존하며 0부터 1 범위로 제한한다 9ms
|
||||
× 선택한 녹음을 디코드·루프하고 목표 종료에서 모든 소스와 fetch를 정리한다 11ms
|
||||
× 배경 404·디코드 실패는 한국어 복구 메시지이고 재시도로 성공한다 10ms
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯ Failed Tests 9 ⎯⎯⎯⎯⎯⎯⎯
|
||||
|
||||
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > intro와 목표 실제 fetch URL에 같은 명시적 cache-busting 버전을 붙인다
|
||||
TypeError: Cannot read properties of undefined (reading 'onended')
|
||||
❯ tests/audio.test.ts:95:21
|
||||
93| const done = f.engine.play(question, true, vi.fn());
|
||||
94| await flush();
|
||||
95| f.sources.at(-1)!.onended?.();
|
||||
| ^
|
||||
96| await done;
|
||||
97| expect(f.fetcher.mock.calls.map(([url]) => url)).toEqual([
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/9]⎯
|
||||
|
||||
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > intro 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다
|
||||
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > target 404 후 intro·목표를 동일한 versioned URL로 다시 요청한다
|
||||
TypeError: Cannot read properties of undefined (reading 'onended')
|
||||
❯ tests/audio.test.ts:129:23
|
||||
127| const done = f.engine.play(question, true, vi.fn());
|
||||
128| await flush();
|
||||
129| f.sources.at(-1)!.onended?.();
|
||||
| ^
|
||||
130| await done;
|
||||
131| expect(f.fetcher.mock.calls.map(([url]) => url)).toEqual([
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/9]⎯
|
||||
|
||||
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > 생성 시 무음이며 gesture의 play에서만 장치를 연다
|
||||
AssertionError: expected "vi.fn()" to be called once, but got 0 times
|
||||
❯ tests/audio.test.ts:150:21
|
||||
148| expect(f.context.resume).toHaveBeenCalledOnce();
|
||||
149| await flush();
|
||||
150| expect(started).toHaveBeenCalledOnce();
|
||||
| ^
|
||||
151| expect(f.sources).toHaveLength(3);
|
||||
152| expect(
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/9]⎯
|
||||
|
||||
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > 동시 시작을 거부하고 정지하면 모든 노드와 대기 Promise를 취소한다
|
||||
AssertionError: expected TypeError: (0 , __vite_ssr_import_1__.syn… to match object { name: 'AbortError' }
|
||||
|
||||
- Expected
|
||||
+ Received
|
||||
|
||||
- {
|
||||
- "name": "AbortError",
|
||||
+ TypeError {
|
||||
+ "message": "(0 , __vite_ssr_import_1__.synthesizeBackground) is not a function",
|
||||
}
|
||||
|
||||
❯ tests/audio.test.ts:182:35
|
||||
180| const f = fixture();
|
||||
181| const done = f.engine.play(question, false, vi.fn());
|
||||
182| const cancelled = expect(done).rejects.toMatchObject({
|
||||
| ^
|
||||
183| name: "AbortError",
|
||||
184| });
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/9]⎯
|
||||
|
||||
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > HTTP·디코드·장치 실패를 전달하고 다음 시도는 다시 로드한다
|
||||
AssertionError: expected [Function] to throw error including '해석' but got 'decode'
|
||||
|
||||
Expected: "해석"
|
||||
Received: "decode"
|
||||
|
||||
❯ tests/audio.test.ts:226:58
|
||||
224| );
|
||||
225| f.context.decodeAudioData.mockRejectedValueOnce(new Error("decode"…
|
||||
226| await expect(f.engine.play(question, false, vi.fn())).rejects.toTh…
|
||||
| ^
|
||||
227| "해석",
|
||||
228| );
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/9]⎯
|
||||
|
||||
FAIL tests/audio.test.ts > 오디오 재생 수명과 믹서 > 전체 음량은 두 신호의 비율을 보존하며 0부터 1 범위로 제한한다
|
||||
TypeError: Cannot read properties of undefined (reading 'onended')
|
||||
❯ tests/audio.test.ts:248:21
|
||||
246| f.engine.setVolume(-1);
|
||||
247| expect(f.gains[0]!.gain.setTargetAtTime).toHaveBeenCalledWith(0, 2…
|
||||
248| f.sources.at(-1)!.onended?.();
|
||||
| ^
|
||||
249| await done;
|
||||
250| });
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/9]⎯
|
||||
|
||||
FAIL tests/audio.test.ts > 선택한 녹음을 디코드·루프하고 목표 종료에서 모든 소스와 fetch를 정리한다
|
||||
AssertionError: expected "vi.fn()" to be called with arguments: [ Array(2) ]
|
||||
|
||||
Received:
|
||||
|
||||
1st vi.fn() call:
|
||||
|
||||
[
|
||||
- "/ambience/street.wav?v=0.1.1",
|
||||
- ObjectContaining {
|
||||
- "signal": Any<AbortSignal>,
|
||||
+ "/audio/correction-market.wav?v=0.1.1",
|
||||
+ {
|
||||
+ "signal": AbortSignal {
|
||||
+ Symbol(kEvents): undefined,
|
||||
+ Symbol(events.maxEventTargetListeners): 0,
|
||||
+ Symbol(events.maxEventTargetListenersWarned): false,
|
||||
+ Symbol(kHandlers): undefined,
|
||||
+ Symbol(kAborted): true,
|
||||
+ Symbol(kReason): AbortError {
|
||||
+ "message": "This operation was aborted",
|
||||
+ },
|
||||
+ Symbol(kComposite): false,
|
||||
+ },
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
Number of calls: 1
|
||||
|
||||
❯ tests/audio.test.ts:258:21
|
||||
256| const done = f.engine.play(question, false, vi.fn());
|
||||
257| await flush();
|
||||
258| expect(f.fetcher).toHaveBeenCalledWith(question.environment.audioUrl…
|
||||
| ^
|
||||
259| expect(f.context.decodeAudioData).toHaveBeenCalledTimes(2);
|
||||
260| expect(f.sources[0]!.loop).toBe(true);
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/9]⎯
|
||||
|
||||
FAIL tests/audio.test.ts > 배경 404·디코드 실패는 한국어 복구 메시지이고 재시도로 성공한다
|
||||
AssertionError: expected [Function] to throw error matching /배경.*다시/ but got '(0 , __vite_ssr_import_1__.synthesize…'
|
||||
|
||||
- Expected:
|
||||
/배경.*다시/
|
||||
|
||||
+ Received:
|
||||
"(0 , __vite_ssr_import_1__.synthesizeBackground) is not a function"
|
||||
|
||||
❯ tests/audio.test.ts:272:56
|
||||
270| f.fetcher.mockImplementationOnce(async () => ({ ok: true, arrayBuffe…
|
||||
271| f.fetcher.mockResolvedValueOnce({ ok: false } as Response);
|
||||
272| await expect(f.engine.play(question, false, vi.fn())).rejects.toThro…
|
||||
| ^
|
||||
273| f.context.decodeAudioData.mockRejectedValueOnce(new Error("EncodingE…
|
||||
274| await expect(f.engine.play(question, false, vi.fn())).rejects.toThro…
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/9]⎯
|
||||
|
||||
⎯⎯⎯⎯⎯⎯ Unhandled Errors ⎯⎯⎯⎯⎯⎯
|
||||
|
||||
Vitest caught 6 unhandled errors during the test run.
|
||||
This might cause false positive tests. Resolve unhandled errors to make sure your tests are not affected.
|
||||
|
||||
⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯
|
||||
TypeError: synthesizeBackground is not a function
|
||||
❯ src/audio/engine.ts:131:15
|
||||
129| background.copyToChannel(
|
||||
130| normalizeRms(
|
||||
131| synthesizeBackground(
|
||||
| ^
|
||||
132| question.environment,
|
||||
133| context.sampleRate,
|
||||
❯ process.processTicksAndRejections node:internal/process/task_queues:104:5
|
||||
|
||||
This error originated in "tests/audio.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running.
|
||||
The last test to run before this error was "로드 시간초과는 fetch를 취소하고 늦은 디코드가 소스를 만들지 않는다". This means either:
|
||||
- the error was thrown while Vitest was running this test, or
|
||||
- the error was thrown after the test completed, and this was the most recent test at that point.
|
||||
|
||||
⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯
|
||||
TypeError: synthesizeBackground is not a function
|
||||
❯ src/audio/engine.ts:131:15
|
||||
129| background.copyToChannel(
|
||||
130| normalizeRms(
|
||||
131| synthesizeBackground(
|
||||
| ^
|
||||
132| question.environment,
|
||||
133| context.sampleRate,
|
||||
❯ process.processTicksAndRejections node:internal/process/task_queues:104:5
|
||||
|
||||
This error originated in "tests/audio.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running.
|
||||
The last test to run before this error was "로드 시간초과는 fetch를 취소하고 늦은 디코드가 소스를 만들지 않는다". This means either:
|
||||
- the error was thrown while Vitest was running this test, or
|
||||
- the error was thrown after the test completed, and this was the most recent test at that point.
|
||||
|
||||
⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯
|
||||
TypeError: synthesizeBackground is not a function
|
||||
❯ src/audio/engine.ts:131:15
|
||||
129| background.copyToChannel(
|
||||
130| normalizeRms(
|
||||
131| synthesizeBackground(
|
||||
| ^
|
||||
132| question.environment,
|
||||
133| context.sampleRate,
|
||||
❯ process.processTicksAndRejections node:internal/process/task_queues:104:5
|
||||
|
||||
This error originated in "tests/audio.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running.
|
||||
The last test to run before this error was "로드 시간초과는 fetch를 취소하고 늦은 디코드가 소스를 만들지 않는다". This means either:
|
||||
- the error was thrown while Vitest was running this test, or
|
||||
- the error was thrown after the test completed, and this was the most recent test at that point.
|
||||
|
||||
⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯
|
||||
TypeError: synthesizeBackground is not a function
|
||||
❯ src/audio/engine.ts:131:15
|
||||
129| background.copyToChannel(
|
||||
130| normalizeRms(
|
||||
131| synthesizeBackground(
|
||||
| ^
|
||||
132| question.environment,
|
||||
133| context.sampleRate,
|
||||
❯ process.processTicksAndRejections node:internal/process/task_queues:104:5
|
||||
|
||||
This error originated in "tests/audio.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running.
|
||||
The last test to run before this error was "로드 시간초과는 fetch를 취소하고 늦은 디코드가 소스를 만들지 않는다". This means either:
|
||||
- the error was thrown while Vitest was running this test, or
|
||||
- the error was thrown after the test completed, and this was the most recent test at that point.
|
||||
|
||||
⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯
|
||||
TypeError: synthesizeBackground is not a function
|
||||
❯ src/audio/engine.ts:131:15
|
||||
129| background.copyToChannel(
|
||||
130| normalizeRms(
|
||||
131| synthesizeBackground(
|
||||
| ^
|
||||
132| question.environment,
|
||||
133| context.sampleRate,
|
||||
❯ process.processTicksAndRejections node:internal/process/task_queues:104:5
|
||||
|
||||
This error originated in "tests/audio.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running.
|
||||
The last test to run before this error was "로드 시간초과는 fetch를 취소하고 늦은 디코드가 소스를 만들지 않는다". This means either:
|
||||
- the error was thrown while Vitest was running this test, or
|
||||
- the error was thrown after the test completed, and this was the most recent test at that point.
|
||||
|
||||
⎯⎯⎯⎯ Unhandled Rejection ⎯⎯⎯⎯⎯
|
||||
TypeError: synthesizeBackground is not a function
|
||||
❯ src/audio/engine.ts:131:15
|
||||
129| background.copyToChannel(
|
||||
130| normalizeRms(
|
||||
131| synthesizeBackground(
|
||||
| ^
|
||||
132| question.environment,
|
||||
133| context.sampleRate,
|
||||
❯ process.processTicksAndRejections node:internal/process/task_queues:104:5
|
||||
|
||||
This error originated in "tests/audio.test.ts" test file. It doesn't mean the error was thrown inside the file itself, but while it was running.
|
||||
The last test to run before this error was "로드 시간초과는 fetch를 취소하고 늦은 디코드가 소스를 만들지 않는다". This means either:
|
||||
- the error was thrown while Vitest was running this test, or
|
||||
- the error was thrown after the test completed, and this was the most recent test at that point.
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
|
||||
|
||||
|
||||
Test Files 1 failed (1)
|
||||
Tests 9 failed | 2 passed (11)
|
||||
Errors 6 errors
|
||||
Start at 08:00:38
|
||||
Duration 979ms (environment 65%, tests 16%, setup 11%, transform 6%, import 1%, worker 1%)
|
||||
|
||||
Reference in New Issue
Block a user