Skip to content

e2e harness proposals: shared classic-spec helpers, fewer Firefox restarts, clearer failure output, a truncated retried.jsonl, uncovered risky paths #266

Closed

Description

@Nawid3333

Severity: low

  • Duplication: inChrome, clickToolbar, suspendBackground, tabMode/modeOfTab, expectMode, hasOverlayPlayer and the "open the extension page, find the handle, set options, find the site handle" prologue are copied into eight classic specs; openExtensionPage exists four times; serveFile/range parsing is reimplemented in source-length, mp4-files, mp4-loading and mp4-fragmented-end (source-length's throws synchronously on bytes=5-2 via createReadStream ERR_OUT_OF_RANGE, which takes the worker down). A tests/e2e/classic-helpers.mjs and reuse of serveFile.mjs would make the next "found by URL, not last handle" fix land once.
  • Speed: the extension suites start a fresh Firefox and reinstall the add-on per spec file (18 + 10 + 1 files, twice for the two builds). Grouping the short, state-free ext specs (background-log, capabilities, extension, download-names, download-blob-lifetime, header-rules, keybinds-storage, options-mpv) into one file, or raising maxInstances to 2 once the ports are unique, would cut the ext job noticeably; the web suite's per-spec servers could all live in onPrepare on one port with path routing.
  • Clearer failures: playback.e2e.mjs and mp4-files.e2e.mjs log state, but expectEveryHlsSegmentListed's wait swallows its timeout (.catch(() => {})) and the following toEqual prints two arrays with no "audio playlist never arrived" reason; hls-live.e2e.mjs and mp4-loading.e2e.mjs have waitUntils without timeoutMsg; subtitle-search.e2e.mjs has waits with no timeout or message.
  • logs/retried.jsonl is never truncated at the start of a local run, so a developer's summary accumulates every retry since the last rm -rf logs; clear it in each config's onPrepare or key it by run id.
  • Uncovered risky paths named in CLAUDE.md: a saved profile in the real extension's chrome.storage for the keybind migration, the native host surviving the kill-on-close job object (hand-checked), and the OPFS 30 s "crashed worker" fall-through (storage.e2e.mjs stubs setup() but never a worker that stops answering).

Confidence: high.


From a line-by-line code review of the tree at 41363fd (2026-10-02). Each claim above was checked against the source before filing; the reproduction steps and line references are as of that commit.


Generated by Claude Code

Activity

  1. added a commit that references this issue on Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    code-reviewFound by the 2026-10-02 line-by-line reviewenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions