Add daily-use e2e journey to CI and docker checks #296

Closed
opened 2026-06-05 15:33:09 +00:00 by steve · 0 comments
Owner

Problem

The workspace daily-use journey Playwright test exists but only runs via manual
pnpm --filter @lapis-notes/workspace test:e2e. Forgejo checks and
pnpm docker:ci-check do not execute it.

Current follow-up work also includes refactoring Forgejo checks into independent
parallel lanes to isolate failures and maximize Turbo cache reuse.

Goal

Run the daily-use journey as a dedicated CI phase after app smoke, with a matching
local docker check entry point and skip flag.

And split Forgejo checks into cache-backed parallel lanes (check:all,
unit tests, app smoke, daily-use, official plugin install e2e) while keeping
release verification serial.

Acceptance Criteria

  • Root pnpm test:daily-use runs the workspace journey through a dedicated
    Playwright config.
  • .forgejo/workflows/checks.yml runs cache-warming build separately and fans out
    to independent CI lanes that can succeed/fail independently:
    • repo-checks
    • unit-tests
    • app-smoke
    • daily-use-e2e
    • official-plugin-e2e
  • .github/actions/lapis-ci-verify runs daily-use after pnpm test:smoke.
  • pnpm docker:ci-check supports --skip-daily-use and runs daily-use after
    smoke by default.
  • Spec docs describe the new gate and command.
  • Daily-use journey installs lapis-notebook and opens .notebook.md files
    through the notebook view helper before execution assertions.
  • Forgejo checks artifact upload uses actions/upload-artifact@v3 and no longer
    uses v4 for playright artifacts.
  • The following CI helpers are cache aligned: scripts/ci-build-checks.mjs,
    pnpm ci:build:checks, xvfb-wrapped smoke/daily-use/official-lane
    commands.
  • The official plugin lane must tolerate isolated workers: when the local
    registry fixture runs with --skip-build, it should still re-materialize
    missing official plugin dist/ outputs from Turbo cache in the current job.
  • Workspace smoke must keep enough Playwright timeout headroom for the helper to
    emit its startup snapshot diagnostics on CI failures instead of dying with a
    raw runner timeout.

Implementation Notes

  • Added playwright.daily-use.config.ts, workspace test:e2e:daily-use, and
    root test:daily-use.
  • Updated run-lapis-ci-check-lib.mjs, composite CI verify action, and script
    tests.
  • Follow-up regression fix: direct Forgejo workflows that invoke xvfb-run
    without the shared .github/actions/lapis-ci-verify wrapper must bootstrap
    xauth first; otherwise xvfb-run -a pnpm test:official-plugins fails in
    publish-official-plugin-assets.yml before Playwright starts.
  • Updated build-local-official-plugin-registry.mjs so --skip-build reuses
    existing outputs when present but falls back to one Turbo build materialize
    pass when an isolated CI job lacks official plugin dist/ directories.
  • Updated workspace smoke harness submission and timeout budget so CI can retry
    vault creation more deterministically and still surface boot snapshots on
    failure.
  • Follow-up regression fix: the workspace smoke helper now gives cold CI workers
    extra boot headroom (180s helper budget, 240s Playwright test budget) and
    includes chooser-loading state plus message text in timeout snapshots so
    first-boot stalls are distinguishable from in-shell startup failures.
  • Follow-up regression fix: the workspace smoke reset now clears browser-local
    vault state only once per Playwright browser context instead of on every
    document load, so cold Vite full-page reloads on CI cannot wipe the newly
    created OPFS vault/profile and bounce the app back to the empty chooser.
  • Fixed journey notebook opens via openExistingNotebookNote and official
    lapis-notebook install (registry fixtures under
    release-artifacts/official-plugin-assets/forgejo-assets plus sibling
    lapis-plugin-registry).

Blocker

Local pnpm test:daily-use still fails while installing lapis-notebook in the
Chromium OPFS vault e2e harness.

  • The earlier Playwright page-close failure was caused by local fixture routing
    that fulfilled >100MB plugin files over CDP (Too large read data is pending
    / DevTools pipe closure). Routing now only stubs registry metadata.
  • After bypassing the CDP transfer bottleneck, install fails with
    QuotaExceededError because the current signed lapis-notebook release
    payload is ~604MB (101 required files, largest single file ~125MB), which
    exceeds storage quota in this harness before the journey can continue.

Needs follow-up to make official notebook installs viable in browser e2e
storage limits (for example by reducing release payload size and/or adjusting
install semantics for unused runtime artifacts) before this issue can close.

Parallelized checks lane work can proceed independently of the notebook quota
limitations, but that existing blocker remains until addressed elsewhere.

Validation Commands

  • pnpm test:scripts
  • pnpm test:daily-use (requires local official plugin registry fixtures)
  • pnpm docker:ci-check -- --skip-checks --skip-tests --skip-smoke

Implementation Summary

Populate when closing the issue.

## Problem The workspace daily-use journey Playwright test exists but only runs via manual `pnpm --filter @lapis-notes/workspace test:e2e`. Forgejo checks and `pnpm docker:ci-check` do not execute it. Current follow-up work also includes refactoring Forgejo checks into independent parallel lanes to isolate failures and maximize Turbo cache reuse. ## Goal Run the daily-use journey as a dedicated CI phase after app smoke, with a matching local docker check entry point and skip flag. And split Forgejo checks into cache-backed parallel lanes (`check:all`, unit tests, app smoke, daily-use, official plugin install e2e) while keeping release verification serial. ## Acceptance Criteria - Root `pnpm test:daily-use` runs the workspace journey through a dedicated Playwright config. - `.forgejo/workflows/checks.yml` runs cache-warming build separately and fans out to independent CI lanes that can succeed/fail independently: - `repo-checks` - `unit-tests` - `app-smoke` - `daily-use-e2e` - `official-plugin-e2e` - `.github/actions/lapis-ci-verify` runs daily-use after `pnpm test:smoke`. - `pnpm docker:ci-check` supports `--skip-daily-use` and runs daily-use after smoke by default. - Spec docs describe the new gate and command. - Daily-use journey installs `lapis-notebook` and opens `.notebook.md` files through the notebook view helper before execution assertions. - Forgejo checks artifact upload uses `actions/upload-artifact@v3` and no longer uses v4 for playright artifacts. - The following CI helpers are cache aligned: `scripts/ci-build-checks.mjs`, `pnpm ci:build:checks`, `xvfb`-wrapped smoke/daily-use/official-lane commands. - The official plugin lane must tolerate isolated workers: when the local registry fixture runs with `--skip-build`, it should still re-materialize missing official plugin `dist/` outputs from Turbo cache in the current job. - Workspace smoke must keep enough Playwright timeout headroom for the helper to emit its startup snapshot diagnostics on CI failures instead of dying with a raw runner timeout. ## Implementation Notes - Added `playwright.daily-use.config.ts`, workspace `test:e2e:daily-use`, and root `test:daily-use`. - Updated `run-lapis-ci-check-lib.mjs`, composite CI verify action, and script tests. - Follow-up regression fix: direct Forgejo workflows that invoke `xvfb-run` without the shared `.github/actions/lapis-ci-verify` wrapper must bootstrap `xauth` first; otherwise `xvfb-run -a pnpm test:official-plugins` fails in `publish-official-plugin-assets.yml` before Playwright starts. - Updated `build-local-official-plugin-registry.mjs` so `--skip-build` reuses existing outputs when present but falls back to one Turbo build materialize pass when an isolated CI job lacks official plugin `dist/` directories. - Updated workspace smoke harness submission and timeout budget so CI can retry vault creation more deterministically and still surface boot snapshots on failure. - Follow-up regression fix: the workspace smoke helper now gives cold CI workers extra boot headroom (`180s` helper budget, `240s` Playwright test budget) and includes chooser-loading state plus message text in timeout snapshots so first-boot stalls are distinguishable from in-shell startup failures. - Follow-up regression fix: the workspace smoke reset now clears browser-local vault state only once per Playwright browser context instead of on every document load, so cold Vite full-page reloads on CI cannot wipe the newly created OPFS vault/profile and bounce the app back to the empty chooser. - Fixed journey notebook opens via `openExistingNotebookNote` and official `lapis-notebook` install (registry fixtures under `release-artifacts/official-plugin-assets/forgejo-assets` plus sibling `lapis-plugin-registry`). ## Blocker Local `pnpm test:daily-use` still fails while installing `lapis-notebook` in the Chromium OPFS vault e2e harness. - The earlier Playwright page-close failure was caused by local fixture routing that fulfilled >100MB plugin files over CDP (`Too large read data is pending` / DevTools pipe closure). Routing now only stubs registry metadata. - After bypassing the CDP transfer bottleneck, install fails with `QuotaExceededError` because the current signed `lapis-notebook` release payload is ~604MB (101 required files, largest single file ~125MB), which exceeds storage quota in this harness before the journey can continue. Needs follow-up to make official notebook installs viable in browser e2e storage limits (for example by reducing release payload size and/or adjusting install semantics for unused runtime artifacts) before this issue can close. Parallelized checks lane work can proceed independently of the notebook quota limitations, but that existing blocker remains until addressed elsewhere. ## Validation Commands - `pnpm test:scripts` - `pnpm test:daily-use` (requires local official plugin registry fixtures) - `pnpm docker:ci-check -- --skip-checks --skip-tests --skip-smoke` ## Implementation Summary Populate when closing the issue. <!-- backlog:task_id=TASK-CI-DAILY-USE-E2E source_spec=spec/src/40-testing/current-state.md -->
steve closed this issue 2026-06-07 19:44:46 +00:00
steve added
done
and removed
open
labels 2026-06-07 21:44:52 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lapis-notes/lapis#296
No description provided.