Skip to content

ci: browser smoke test of the JupyterLite site - #136

Merged
petercorke merged 2 commits into
mainfrom
ci/lite-browser-smoke
Oct 13, 2026
Merged

petercorke merged 2 commits into
mainfrom
ci/lite-browser-smoke

Conversation

@petercorke

Copy link
Copy Markdown
Owner

Why

JupyterLite broke this week in ways no existing check could see: a dependency's requirements changed on PyPI (RTB/bdsim/MVTB demos), and a Safari session failed in JupyterLab's own app shell before any kernel existed. The Node/Pyodide install check covers dependency installs but has no browser or JupyterLab.

What

docs/lite/browser_check/check_lite_in_browser.py (Playwright; Chromium and WebKit, the engine behind Safari): fresh context -> open intro.ipynb -> wait for the Pyodide kernel to be idle -> run the bootstrap cell -> require Running in browser using MVTB v.... Also fails on Plugin '...' failed to activate console errors, and saves a screenshot on failure.

Triggers, none of which run on pull requests:

Where When Effect
docs.yml, after jupyter lite build push to main / workflow_dispatch tests the built site served on localhost, before deploy
lite-smoke.yml after each Docs Publish on main, weekly (Mon), manual tests the live site (retries for Pages propagation); can only alert

Tested

Locally, in an isolated venv with Playwright 1.63:

  • live site: PASS in Chromium and WebKit (Running in browser using MVTB v2.4.1 with OpenCV 4.10.0), ~30 s total;
  • a built site served from localhost: PASS in both;
  • a wrong URL: fails with a screenshot and the HTTP and console errors listed.

Not tested, please know

The workflow wiring itself has not run in Actions: the docs.yml steps are skipped on PRs by design and lite-smoke.yml must be on main before it can be dispatched. To keep a flaky new step from wedging the docs deploy, the pre-deploy step is continue-on-error: true with a comment to remove it after one green run on main.

Playwright's WebKit is Safari's engine, not Safari: it catches app-shell and engine failures, but not a user's own stale site data (see the troubleshooting section, #134).

🤖 Generated with Claude Code

petercorke and others added 2 commits October 14, 2026 07:54
Run Chromium and WebKit (the Safari engine) against the JupyterLite site
via Playwright: wait for the Pyodide kernel, run the bootstrap cell, and
require its status line; also fail if JupyterLab plugins fail to
activate, which happens before any kernel exists and which the Node
Pyodide check cannot see.

- docs.yml: check the built site before deploy (not on pull requests;
  informational until it has run green once on main).
- lite-smoke.yml: check the live site after each Docs Publish on main and
  weekly, since PyPI drift arrives with no commit in this repo.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 31 complexity · 0 duplication

Metric Results
Complexity 31
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@petercorke
petercorke merged commit dfaa8f4 into main Oct 13, 2026
39 checks passed
@petercorke
petercorke deleted the ci/lite-browser-smoke branch October 13, 2026 22:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant