Stabilize workspace app-boot smoke timing and diagnostics #354

Closed
opened 2026-06-07 08:18:52 +00:00 by steve · 0 comments
Owner

Stabilize the workspace browser app-boot smoke path so CI failures are easier to diagnose and less likely to fail on cold Linux runners while preserving the current boot-order contract.

Problem

Recent public Forgejo checks.yml failures are not failing in pnpm check:all; they are failing later in pnpm test:smoke during packages/workspace/e2e/app-boot-smoke.spec.ts. The first smoke test times out waiting for app.workspace.activeLeaf after creating a fresh Browser vault, even though the same path often passes locally and in the containerized CI repro.

That leaves two gaps:

  • The boot-smoke helper waits on one narrow ready signal (activeLeaf plus .workspace) and provides little context when it times out.
  • The smoke harness does not surface enough startup-phase detail to distinguish a true boot regression from a slow-but-progressing cold CI boot.

Goal

  • Make workspace app-boot smoke failures produce actionable diagnostics tied to the current startup phase and visible failure UI when the shell does not finish booting in time.
  • Reduce avoidable flakiness in the browser smoke helper without masking real boot regressions.

Scope

  • Update the workspace smoke helper(s) and/or smoke spec so timeout failures capture the most relevant startup state before failing.
  • Tighten the readiness predicate or timeout handling only where that improves CI stability without weakening the regression signal.
  • Keep the current app boot contract intact: vault creation still leads into the normal App.svelte startup path, and the smoke test should still fail on startup errors.

Non-goals

  • Reworking the runtime boot order in App.svelte or VaultBootstrap.svelte unless the investigation proves a real product bug.
  • Relaxing the smoke test so far that it stops detecting broken startup states.
  • Changing unrelated daily-use or desktop smoke behavior.

Acceptance Criteria

  • Workspace smoke timeout failures report enough state to see the current boot phase, any visible startup error panel, and relevant console/page errors without rerunning blindly.
  • The browser app-boot smoke path is less sensitive to cold CI timing while still failing on real startup regressions.
  • packages/workspace/e2e/app-boot-smoke.spec.ts continues to assert successful shell boot and core app-service availability.
  • Relevant workspace validation passes, including package checks/tests and the workspace smoke suite.

Implementation Notes

  • The public Forgejo run that motivated this follow-up is checks.yml run 246 for commit 36851532759a on 2026-06-07; pnpm check:all and pnpm test both passed there, and the failure occurred in pnpm test:smoke.
  • The same timeout signature also appeared in earlier public checks.yml failures, so this looks like a recurring smoke-stability problem rather than one isolated commit.
  • Keep any new diagnostics local to the smoke harness or targeted helper paths unless a product-level bug is identified.

Suggested Files or Specs To Inspect

  • packages/workspace/e2e/app-boot-smoke.spec.ts
  • packages/workspace/e2e/boot-smoke.helpers.ts
  • packages/workspace/playwright.smoke.config.ts
  • packages/workspace/scripts/run-smoke.mjs
  • packages/workspace/src/lib/components/app/App.svelte
  • spec/src/20-packages/workspace/index.md
  • spec/src/40-testing/current-state.md

Validation Commands

  • pnpm --filter @lapis-notes/workspace check:all
  • pnpm --filter @lapis-notes/workspace test
  • pnpm --filter @lapis-notes/workspace test:e2e:smoke

Follow-up Tasks

Implementation Summary

Reworked workspace app-boot smoke readiness waits to report shell and startup diagnostics instead of timing out on activeLeaf.

Stabilize the workspace browser app-boot smoke path so CI failures are easier to diagnose and less likely to fail on cold Linux runners while preserving the current boot-order contract. ## Problem Recent public Forgejo `checks.yml` failures are not failing in `pnpm check:all`; they are failing later in `pnpm test:smoke` during `packages/workspace/e2e/app-boot-smoke.spec.ts`. The first smoke test times out waiting for `app.workspace.activeLeaf` after creating a fresh Browser vault, even though the same path often passes locally and in the containerized CI repro. That leaves two gaps: - The boot-smoke helper waits on one narrow ready signal (`activeLeaf` plus `.workspace`) and provides little context when it times out. - The smoke harness does not surface enough startup-phase detail to distinguish a true boot regression from a slow-but-progressing cold CI boot. ## Goal - Make workspace app-boot smoke failures produce actionable diagnostics tied to the current startup phase and visible failure UI when the shell does not finish booting in time. - Reduce avoidable flakiness in the browser smoke helper without masking real boot regressions. ## Scope - Update the workspace smoke helper(s) and/or smoke spec so timeout failures capture the most relevant startup state before failing. - Tighten the readiness predicate or timeout handling only where that improves CI stability without weakening the regression signal. - Keep the current app boot contract intact: vault creation still leads into the normal `App.svelte` startup path, and the smoke test should still fail on startup errors. ## Non-goals - Reworking the runtime boot order in `App.svelte` or `VaultBootstrap.svelte` unless the investigation proves a real product bug. - Relaxing the smoke test so far that it stops detecting broken startup states. - Changing unrelated daily-use or desktop smoke behavior. ## Acceptance Criteria - [ ] Workspace smoke timeout failures report enough state to see the current boot phase, any visible startup error panel, and relevant console/page errors without rerunning blindly. - [ ] The browser app-boot smoke path is less sensitive to cold CI timing while still failing on real startup regressions. - [ ] `packages/workspace/e2e/app-boot-smoke.spec.ts` continues to assert successful shell boot and core app-service availability. - [ ] Relevant workspace validation passes, including package checks/tests and the workspace smoke suite. ## Implementation Notes - The public Forgejo run that motivated this follow-up is `checks.yml` run `246` for commit `36851532759a` on 2026-06-07; `pnpm check:all` and `pnpm test` both passed there, and the failure occurred in `pnpm test:smoke`. - The same timeout signature also appeared in earlier public `checks.yml` failures, so this looks like a recurring smoke-stability problem rather than one isolated commit. - Keep any new diagnostics local to the smoke harness or targeted helper paths unless a product-level bug is identified. ## Suggested Files or Specs To Inspect - `packages/workspace/e2e/app-boot-smoke.spec.ts` - `packages/workspace/e2e/boot-smoke.helpers.ts` - `packages/workspace/playwright.smoke.config.ts` - `packages/workspace/scripts/run-smoke.mjs` - `packages/workspace/src/lib/components/app/App.svelte` - `spec/src/20-packages/workspace/index.md` - `spec/src/40-testing/current-state.md` ## Validation Commands - `pnpm --filter @lapis-notes/workspace check:all` - `pnpm --filter @lapis-notes/workspace test` - `pnpm --filter @lapis-notes/workspace test:e2e:smoke` ## Related Issues - Follow-up to #23 — [Broaden regression coverage for workspace layout restore, community plugin flows...](../closed/23-broaden-regression-coverage-for-workspace-layout-restore-community-plugin-flows.md) ## Follow-up Tasks ## Implementation Summary Reworked workspace app-boot smoke readiness waits to report shell and startup diagnostics instead of timing out on activeLeaf. <!-- backlog:task_id=TASK-TEST-005 source_spec=spec/src/40-testing/current-state.md related_issue=23 -->
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#354
No description provided.