12 @critical failures on 27-upload + 43-upload-deep + the skipped
04-tracks:207 shared one root cause: the LibraryPageToolbar "New"
button (renders t('library.new'), localized to "New"/"Nouveau") was
targeted by regex `/upload|uploader/i` or `/upload|importer|
ajouter/i` — none matched the actual label. The 2026-04-08
console.log → expect conversion pinned assertions against a label
the UI never produced.
Fix: `data-testid="library-upload-cta"` on the toolbar CTA +
aria-label fallback ("Upload track"). Tests target by testid,
immune to future i18n/copy changes.
Results after fix:
* 27-upload.spec.ts — 6/7 now pass. The remaining failure
(test 54 "full upload flow") is a DIFFERENT root cause:
dialog doesn't close after upload submit (60s timeout).
Not a locator issue — tracked separately as #55 (upload
backend hangs on submit, suspected ClamAV or validation
silently failing in test env).
* 04-tracks.spec.ts:207 — unskipped, passes (was #50, now
closed; SKIPPED_TESTS.md updated with resolution note).
* 43-upload-deep.spec.ts helper — migrated to the same testid
so the "button not found" class of failure is gone.
Remaining 43-upload-deep failures are same upload-flow
class as 27-upload:54 (tracked in #55).
Gain: 8/12 upload-family tests recovered. Remaining 4 are a
separate investigation.
Post-fix validation: ran `27-upload + 04-tracks` under
Playwright — 7 passed, 2 failed, 1 skipped (skip unrelated).
The 2 failures are both the #55 submit-hang root cause, not
the locator one.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.7 KiB
Currently skipped @critical E2E tests
Tests in this list are marked test.skip(...) with a detailed
inline comment above each test.skip. This file is the index so a
reviewer or future maintainer can see the skip decisions at a glance
without grepping.
Skipping a @critical test is a deliberate escape hatch, not a
norm. Each entry below carries the root cause, the date the skip
was introduced, and the tracking task ID. If the list grows past
~5 entries, that's a signal the E2E baseline is eroding and a
maintenance pass is overdue.
v1.0.7 skips (task #36)
All four were consistently failing (4/4 pre-push runs, not
intermittent flakes) since commit 7338a9a63 (2026-04-08,
test(e2e): convert all remaining 298 console.log to real expect()).
The assertion-conversion landed without verifying every new
expect() against the current UI, so the broken tests slipped in
and were masked by SKIP_E2E=1 during the v1.0.7 sprint.
Root-cause investigation timeboxed at 4h on 2026-04-18. Outcome: causes identified, fixes scoped, skip + tickets instead of in-line patch to keep the v1.0.7 tag scope tight.
| File:line | Test | Root cause | Ticket |
|---|---|---|---|
03-player.spec.ts:9 |
01. Clic sur play lance la lecture d'un track |
Regex ^Lire matches the bulk-play label, not the single-track play button. Fix: target TrackCard/TrackListRow play button directly. |
v107-e2e-01 |
03-player.spec.ts:262 |
Cycle repeat off -> track -> playlist -> off |
Repeat button exists in two components (PlayerControls.tsx EN, RepeatShuffleButtons.tsx FR). Test finds EN button, asserts FR text → fail. Fix: assert on aria-pressed + count indicator, not free-text. |
v107-e2e-02 |
03-player.spec.ts:299 |
Controle vitesse de lecture — changement visible |
Test clicks Track info to open expanded player but doesn't wait for overlay before querying speed control. Fix: replicate the open-and-wait from test 326. | v107-e2e-03 |
04-tracks.spec.ts:207 |
09. Upload accessible pour un createur via la bibliotheque |
RESOLVED 2026-04-18 (rc1-day2): unskipped, now passes. Root cause was t('library.new') label → button says "New"/"Nouveau", regex `/upload | importer |
How to unskip
- Read the inline comment above the
test.skipfor the full investigation notes. - Implement the fix suggested.
- Run
npx playwright test --grep "<test name>" --repeat-each 100locally. 100/100 green before re-enabling. - Remove the
.skipand the eslint-disable comment. Keep thetests/e2e/SKIPPED_TESTS.mdentry in a "fixed" section for a release or two so the history is traceable.