spec: Add AudioWorklet engine spec for scheduling, LFO, metering, and pitch-shifting #317
ci.yml
on: pull_request
Lint
34s
Unit Tests
1m 26s
Integration Tests
26s
Build
32s
Instrument Validation
20s
E2E Tests
17m 55s
Annotations
33 errors, 1 warning, and 1 notice
|
Integration Tests
Cannot find name 'currentTime'.
|
|
Integration Tests
Property 'port' does not exist on type 'MeteringWorkletProcessor'.
|
|
Integration Tests
Property 'port' does not exist on type 'MeteringWorkletProcessor'.
|
|
Integration Tests
Cannot find name 'sampleRate'.
|
|
Integration Tests
Cannot find name 'AudioWorkletProcessor'.
|
|
Integration Tests
'getServerTime' is declared but its value is never read.
|
|
Integration Tests
'isMultiplayerMode' is declared but its value is never read.
|
|
Integration Tests
'MidiExportOptions' is declared but never used.
|
|
Integration Tests
Duplicate function implementation.
|
|
Integration Tests
Duplicate function implementation.
|
|
Build
Cannot find name 'currentTime'.
|
|
Build
Property 'port' does not exist on type 'MeteringWorkletProcessor'.
|
|
Build
Property 'port' does not exist on type 'MeteringWorkletProcessor'.
|
|
Build
Cannot find name 'sampleRate'.
|
|
Build
Cannot find name 'AudioWorkletProcessor'.
|
|
Build
'getServerTime' is declared but its value is never read.
|
|
Build
'isMultiplayerMode' is declared but its value is never read.
|
|
Build
'MidiExportOptions' is declared but never used.
|
|
Build
Duplicate function implementation.
|
|
Build
Duplicate function implementation.
|
|
Lint
Process completed with exit code 1.
|
|
Lint:
app/src/utils/dead-code-audit.test.ts#L20
'fileExists' is defined but never used. Allowed unused vars must match /^_/u
|
|
Lint:
app/src/audio/midiExport.worker.ts#L17
'MidiExportOptions' is defined but never used. Allowed unused vars must match /^_/u
|
|
[chromium] › e2e/landscape-alignment.spec.ts:224:3 › Landscape Mobile Alignment › screenshot comparison - visual alignment check:
app/e2e/landscape-alignment.spec.ts#L0
3) [chromium] › e2e/landscape-alignment.spec.ts:224:3 › Landscape Mobile Alignment › screenshot comparison - visual alignment check
Test timeout of 30000ms exceeded.
|
|
[chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment:
app/e2e/landscape-alignment.spec.ts#L32
2) [chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect.toBeVisible: Target page, context or browser has been closed
30 | // Click the instrument button by name
31 | const sampleBtn = page.getByRole('button', { name: instrumentName }).first();
> 32 | await expect(sampleBtn).toBeVisible({ timeout: 5000 });
| ^
33 | await sampleBtn.click();
34 |
35 | // Wait for track row to appear
at addTrack (/home/runner/work/keyboardia/keyboardia/app/e2e/landscape-alignment.spec.ts:32:27)
at /home/runner/work/keyboardia/keyboardia/app/e2e/landscape-alignment.spec.ts:157:5
|
|
[chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment:
app/e2e/landscape-alignment.spec.ts#L0
2) [chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
Test timeout of 30000ms exceeded.
|
|
[chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment:
app/e2e/landscape-alignment.spec.ts#L32
2) [chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect.toBeVisible: Target page, context or browser has been closed
30 | // Click the instrument button by name
31 | const sampleBtn = page.getByRole('button', { name: instrumentName }).first();
> 32 | await expect(sampleBtn).toBeVisible({ timeout: 5000 });
| ^
33 | await sampleBtn.click();
34 |
35 | // Wait for track row to appear
at addTrack (/home/runner/work/keyboardia/keyboardia/app/e2e/landscape-alignment.spec.ts:32:27)
at /home/runner/work/keyboardia/keyboardia/app/e2e/landscape-alignment.spec.ts:157:5
|
|
[chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment:
app/e2e/landscape-alignment.spec.ts#L0
2) [chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Test timeout of 30000ms exceeded.
|
|
[chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment:
app/e2e/landscape-alignment.spec.ts#L32
2) [chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment
Error: expect.toBeVisible: Target page, context or browser has been closed
30 | // Click the instrument button by name
31 | const sampleBtn = page.getByRole('button', { name: instrumentName }).first();
> 32 | await expect(sampleBtn).toBeVisible({ timeout: 5000 });
| ^
33 | await sampleBtn.click();
34 |
35 | // Wait for track row to appear
at addTrack (/home/runner/work/keyboardia/keyboardia/app/e2e/landscape-alignment.spec.ts:32:27)
at /home/runner/work/keyboardia/keyboardia/app/e2e/landscape-alignment.spec.ts:157:5
|
|
[chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment:
app/e2e/landscape-alignment.spec.ts#L0
2) [chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment
Test timeout of 30000ms exceeded.
|
|
[chromium] › e2e/feature-flags.spec.ts:51:5 › Feature Flags › Loop Ruler (default: OFF) › loop ruler is NOT visible by default:
app/e2e/feature-flags.spec.ts#L54
1) [chromium] › e2e/feature-flags.spec.ts:51:5 › Feature Flags › Loop Ruler (default: OFF) › loop ruler is NOT visible by default
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect(locator).toHaveCount(expected) failed
Locator: locator('.loop-ruler')
Expected: 0
Received: 1
Timeout: 5000ms
Call log:
- Expect "toHaveCount" with timeout 5000ms
- waiting for locator('.loop-ruler')
9 × locator resolved to 1 element
- unexpected value "1"
52 | // Loop ruler should not be rendered when feature flag is off (default)
53 | const loopRuler = page.locator('.loop-ruler');
> 54 | await expect(loopRuler).toHaveCount(0);
| ^
55 | });
56 |
57 | test('loop handles are NOT visible by default', async ({ page }) => {
at /home/runner/work/keyboardia/keyboardia/app/e2e/feature-flags.spec.ts:54:31
|
|
[chromium] › e2e/feature-flags.spec.ts:51:5 › Feature Flags › Loop Ruler (default: OFF) › loop ruler is NOT visible by default:
app/e2e/feature-flags.spec.ts#L54
1) [chromium] › e2e/feature-flags.spec.ts:51:5 › Feature Flags › Loop Ruler (default: OFF) › loop ruler is NOT visible by default
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect(locator).toHaveCount(expected) failed
Locator: locator('.loop-ruler')
Expected: 0
Received: 1
Timeout: 5000ms
Call log:
- Expect "toHaveCount" with timeout 5000ms
- waiting for locator('.loop-ruler')
9 × locator resolved to 1 element
- unexpected value "1"
52 | // Loop ruler should not be rendered when feature flag is off (default)
53 | const loopRuler = page.locator('.loop-ruler');
> 54 | await expect(loopRuler).toHaveCount(0);
| ^
55 | });
56 |
57 | test('loop handles are NOT visible by default', async ({ page }) => {
at /home/runner/work/keyboardia/keyboardia/app/e2e/feature-flags.spec.ts:54:31
|
|
[chromium] › e2e/feature-flags.spec.ts:51:5 › Feature Flags › Loop Ruler (default: OFF) › loop ruler is NOT visible by default:
app/e2e/feature-flags.spec.ts#L54
1) [chromium] › e2e/feature-flags.spec.ts:51:5 › Feature Flags › Loop Ruler (default: OFF) › loop ruler is NOT visible by default
Error: expect(locator).toHaveCount(expected) failed
Locator: locator('.loop-ruler')
Expected: 0
Received: 1
Timeout: 5000ms
Call log:
- Expect "toHaveCount" with timeout 5000ms
- waiting for locator('.loop-ruler')
9 × locator resolved to 1 element
- unexpected value "1"
52 | // Loop ruler should not be rendered when feature flag is off (default)
53 | const loopRuler = page.locator('.loop-ruler');
> 54 | await expect(loopRuler).toHaveCount(0);
| ^
55 | });
56 |
57 | test('loop handles are NOT visible by default', async ({ page }) => {
at /home/runner/work/keyboardia/keyboardia/app/e2e/feature-flags.spec.ts:54:31
|
|
Lint:
app/src/components/CursorOverlay.tsx#L27
React Hook useMemo has an unnecessary dependency: 'deferredCursors'. Either exclude it or remove the dependency array
|
|
🎭 Playwright Run Summary
79 failed
[chromium] › e2e/feature-flags.spec.ts:51:5 › Feature Flags › Loop Ruler (default: OFF) › loop ruler is NOT visible by default
[chromium] › e2e/landscape-alignment.spec.ts:154:3 › Landscape Mobile Alignment › all track rows should have consistent vertical alignment
[chromium] › e2e/landscape-alignment.spec.ts:224:3 › Landscape Mobile Alignment › screenshot comparison - visual alignment check
[chromium] › e2e/pitch-contour-alignment.spec.ts:35:3 › PitchContour alignment › CSS dimensions match JavaScript constants (CRITICAL regression test)
[chromium] › e2e/pitch-contour-alignment.spec.ts:100:3 › PitchContour alignment › SVG contour dots align with step cells for session with pitch variation
[chromium] › e2e/scrollbar.spec.ts:76:3 › Scrollbar behavior › should have a single scrollbar for the entire tracks panel, not per track
[chromium] › e2e/scrollbar.spec.ts:112:3 › Scrollbar behavior › all tracks should scroll together horizontally when scrolling the panel
[chromium] › e2e/scrollbar.spec.ts:193:3 › Scrollbar behavior › pattern tools panel should stay visible when scrolling horizontally
[chromium] › e2e/scrollbar.spec.ts:274:3 › Scrollbar behavior › step columns should align vertically across all tracks
[chromium] › e2e/track-reorder-bug-fixes.spec.ts:114:5 › Track Reorder Bug Fix Verification › BUG 1: Double handleDragEnd Prevention › should only reorder once per drag operation
[chromium] › e2e/track-reorder-comprehensive.spec.ts:122:5 › Track Reorder - Comprehensive Edge Cases › Basic Reorder Operations › should reorder first track to last position
[chromium] › e2e/track-reorder-comprehensive.spec.ts:137:5 › Track Reorder - Comprehensive Edge Cases › Basic Reorder Operations › should reorder last track to first position
[chromium] › e2e/track-reorder-comprehensive.spec.ts:151:5 › Track Reorder - Comprehensive Edge Cases › Basic Reorder Operations › should reorder middle track up
[chromium] › e2e/track-reorder-comprehensive.spec.ts:163:5 › Track Reorder - Comprehensive Edge Cases › Basic Reorder Operations › should reorder middle track down
[chromium] › e2e/track-reorder-comprehensive.spec.ts:175:5 › Track Reorder - Comprehensive Edge Cases › Basic Reorder Operations › should swap adjacent tracks (down)
[chromium] › e2e/track-reorder-comprehensive.spec.ts:188:5 › Track Reorder - Comprehensive Edge Cases › Basic Reorder Operations › should swap adjacent tracks (up)
[chromium] › e2e/track-reorder-comprehensive.spec.ts:207:5 › Track Reorder - Comprehensive Edge Cases › Same Position Edge Cases › should NOT reorder when dragging to same position
[chromium] › e2e/track-reorder-comprehensive.spec.ts:219:5 › Track Reorder - Comprehensive Edge Cases › Same Position Edge Cases › should NOT reorder when drag is released on same track
[chromium] › e2e/track-reorder-comprehensive.spec.ts:246:5 › Track Reorder - Comprehensive Edge Cases › Rapid Consecutive Drags › should handle two quick consecutive reorders correctly
[chromium] › e2e/track-reorder-comprehensive.spec.ts:262:5 › Track Reorder - Comprehensive Edge Cases › Rapid Consecutive Drags › should handle three rapid reorders without losing state
[chromium] › e2e/track-reorder-comprehensive.spec.ts:282:5 › Track Reorder - Comprehensive Edge Cases › Rapid Consecutive Drags › should maintain track count after many rapid operations
[chromium] › e2e/track-reorder-comprehensive.spec.ts:296:5 › Track Reorder - Comprehensive Edge Cases › Rapid Consecutive Drags › should not duplicate tracks during rapid back-and-forth drags
[chromium] › e2e/track-reorder-comprehensive.spec.ts:317:5 › Track Reorder - Comprehensive Edge Cases › Cancel Drag Operations › should NOT reorder when drag is canceled by moving cursor away
[chromium] › e2e/track-reorder-comprehensive.spec.ts:346:5 › Track Reorder -
|