feat: Complete Phase 33 - Playwright E2E Testing #202
ci.yml
on: push
Lint
32s
Unit Tests
58s
Integration Tests
37s
Build
23s
E2E Tests
17m 10s
Annotations
10 errors, 5 warnings, and 1 notice
|
[chromium] › e2e/accessibility.spec.ts:70:3 › Accessibility › focusable elements are keyboard accessible:
app/e2e/global-setup.ts#L121
4) [chromium] › e2e/accessibility.spec.ts:70:3 › Accessibility › focusable elements are keyboard accessible
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
[chromium] › e2e/accessibility.spec.ts:52:3 › Accessibility › page has proper heading hierarchy:
app/e2e/global-setup.ts#L121
3) [chromium] › e2e/accessibility.spec.ts:52:3 › Accessibility › page has proper heading hierarchy
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
[chromium] › e2e/accessibility.spec.ts:52:3 › Accessibility › page has proper heading hierarchy:
app/e2e/global-setup.ts#L121
3) [chromium] › e2e/accessibility.spec.ts:52:3 › Accessibility › page has proper heading hierarchy
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
[chromium] › e2e/accessibility.spec.ts:52:3 › Accessibility › page has proper heading hierarchy:
app/e2e/global-setup.ts#L121
3) [chromium] › e2e/accessibility.spec.ts:52:3 › Accessibility › page has proper heading hierarchy
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
[chromium] › e2e/accessibility.spec.ts:25:3 › Accessibility › interactive elements have accessible names:
app/e2e/global-setup.ts#L121
2) [chromium] › e2e/accessibility.spec.ts:25:3 › Accessibility › interactive elements have accessible names
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
[chromium] › e2e/accessibility.spec.ts:25:3 › Accessibility › interactive elements have accessible names:
app/e2e/global-setup.ts#L121
2) [chromium] › e2e/accessibility.spec.ts:25:3 › Accessibility › interactive elements have accessible names
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
[chromium] › e2e/accessibility.spec.ts:25:3 › Accessibility › interactive elements have accessible names:
app/e2e/global-setup.ts#L121
2) [chromium] › e2e/accessibility.spec.ts:25:3 › Accessibility › interactive elements have accessible names
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
[chromium] › e2e/accessibility.spec.ts:20:3 › Accessibility › page has accessible title:
app/e2e/global-setup.ts#L121
1) [chromium] › e2e/accessibility.spec.ts:20:3 › Accessibility › page has accessible title ───────
Retry #2 ───────────────────────────────────────────────────────────────────────────────────────
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
[chromium] › e2e/accessibility.spec.ts:20:3 › Accessibility › page has accessible title:
app/e2e/global-setup.ts#L121
1) [chromium] › e2e/accessibility.spec.ts:20:3 › Accessibility › page has accessible title ───────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
[chromium] › e2e/accessibility.spec.ts:20:3 › Accessibility › page has accessible title:
app/e2e/global-setup.ts#L121
1) [chromium] › e2e/accessibility.spec.ts:20:3 › Accessibility › page has accessible title ───────
TimeoutError: locator.waitFor: Timeout 15000ms exceeded.
Call log:
- waiting for locator('.track-row, .sample-picker').first() to be visible
at global-setup.ts:121
119 | export async function waitForAppReady(page: Page): Promise<void> {
120 | // Wait for either track rows OR sample picker to be visible
> 121 | await page.locator('.track-row, .sample-picker').first().waitFor({
| ^
122 | state: 'visible',
123 | timeout: 15000
124 | });
at waitForAppReady (/home/runner/work/keyboardia/keyboardia/app/e2e/global-setup.ts:121:60)
at /home/runner/work/keyboardia/keyboardia/app/e2e/accessibility.spec.ts:17:11
|
|
Lint:
app/src/state/grid.tsx#L36
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Lint:
app/src/state/grid.tsx#L13
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Lint:
app/src/state/grid.tsx#L8
Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components
|
|
Lint:
app/src/components/ScaleSidebar.tsx#L37
The 'noteNames' array makes the dependencies of useMemo Hook (at line 95) change on every render. To fix this, wrap the initialization of 'noteNames' in its own useMemo() Hook
|
|
Lint:
app/src/components/ScaleSidebar.tsx#L37
The 'noteNames' array makes the dependencies of useMemo Hook (at line 66) change on every render. To fix this, wrap the initialization of 'noteNames' in its own useMemo() Hook
|
|
🎭 Playwright Run Summary
110 failed
[chromium] › e2e/accessibility.spec.ts:20:3 › Accessibility › page has accessible title ────────
[chromium] › e2e/accessibility.spec.ts:25:3 › Accessibility › interactive elements have accessible names
[chromium] › e2e/accessibility.spec.ts:52:3 › Accessibility › page has proper heading hierarchy
[chromium] › e2e/accessibility.spec.ts:70:3 › Accessibility › focusable elements are keyboard accessible
[chromium] › e2e/accessibility.spec.ts:86:3 › Accessibility › step cells can be activated with keyboard
[chromium] › e2e/accessibility.spec.ts:120:3 › Accessibility › color contrast meets minimum requirements
[chromium] › e2e/accessibility.spec.ts:139:3 › Accessibility › focus indicators are visible ────
[chromium] › e2e/accessibility.spec.ts:159:3 › Accessibility › no elements with tabindex > 0 ───
[chromium] › e2e/accessibility.spec.ts:164:3 › Accessibility › images have alt text ────────────
[chromium] › e2e/core.spec.ts:23:3 › Drag to Paint Steps › can drag to paint multiple steps active
[chromium] › e2e/core.spec.ts:83:3 › Drag to Paint Steps › can drag to erase multiple steps ────
[chromium] › e2e/core.spec.ts:137:3 › Tempo Control › can drag to change tempo ─────────────────
[chromium] › e2e/core.spec.ts:183:3 › Tempo Control › tempo stays within valid range ───────────
[chromium] › e2e/core.spec.ts:233:3 › Track Management › can delete a track ────────────────────
[chromium] › e2e/core.spec.ts:287:3 › Track Management › can reorder tracks by dragging ────────
[chromium] › e2e/core.spec.ts:368:3 › Swing Control › can drag to change swing ─────────────────
[chromium] › e2e/core.spec.ts:412:3 › Session Name › can edit session name ─────────────────────
[chromium] › e2e/core.spec.ts:452:3 › Step Count Control › can change track step count ─────────
[chromium] › e2e/keyboard.spec.ts:20:3 › Keyboard Navigation › Tab navigates through interactive elements
[chromium] › e2e/keyboard.spec.ts:41:3 › Keyboard Navigation › Shift+Tab navigates backwards ───
[chromium] › e2e/keyboard.spec.ts:55:3 › Keyboard Navigation › Space/Enter activates focused elements
[chromium] › e2e/keyboard.spec.ts:82:3 › Keyboard Navigation › Escape closes modal dialogs ─────
[chromium] › e2e/keyboard.spec.ts:101:3 › Keyboard Navigation › Arrow keys navigate within grids
[chromium] › e2e/keyboard.spec.ts:133:3 › Keyboard Shortcuts › Space toggles playback (if implemented)
[chromium] › e2e/keyboard.spec.ts:152:3 › Keyboard Shortcuts › Ctrl+A selects all (if implemented)
[chromium] › e2e/keyboard.spec.ts:159:3 › Keyboard Shortcuts › Delete clears selected steps (if implemented)
[chromium] › e2e/keyboard.spec.ts:178:3 › Keyboard Shortcuts › Undo/Redo with Ctrl+Z and Ctrl+Y (if implemented)
[chromium] › e2e/keyboard.spec.ts:209:3 › Focus Management › focus is visible on all focusable elements
[chromium] › e2e/keyboard.spec.ts:245:3 › Focus Management › focus does not get trapped ────────
[chromium] › e2e/keyboard.spec.ts:271:3 › Focus Management › focus returns after closing dialogs
[chromium] › e2e/last-cell-flicker.spec.ts:54:3 › Last cell flickering › last cell should only be highlighted when playhead is on it
[chromium] › e2e/mobile-android.spec.ts:16:3 › Android Mobile › app works on Android ───────────
[chromium] › e2e/mobile-iphone.spec.ts:21:3 › Mobile Layout (iPhone) › app is usable on mobile viewport
[chromium] › e2e/mobile-iphone.spec.ts:31:3 › Mobile Layout (iPhone) ›
|
Artifacts
Produced during runtime
| Name | Size | Digest | |
|---|---|---|---|
|
playwright-report
Expired
|
215 MB |
sha256:89ba487aec9a74e212ded4ade32442cfb56861bbadb0d530cf611915f45ee7f1
|
|