Skip to content

Commit 37c309d

Browse files
ci: build the site and smoke-check it in a real browser
A green build cannot tell you the page renders. A Dependabot PR that bumped react without react-dom built clean in RFutils and left the hosted page showing only its footer from 2026-08-11 until an outside user reported it. This installs with a plain npm ci, checks the lockfile matches the manifest (npm ls), builds, then loads the built site in headless Chromium and fails on any runtime error or an empty root. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 parent 142bb2c commit 37c309d

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: ci
2+
3+
# What a green build cannot tell you: that the site renders. A Dependabot PR that
4+
# bumped react without react-dom built clean in RFutils and left the hosted page
5+
# empty for three weeks. So this installs with a plain `npm ci` (no
6+
# --legacy-peer-deps: a bump that only installs with it is a bump that breaks the
7+
# stack), checks the lockfile actually matches the manifest, builds, and then
8+
# loads the built site in a real browser and fails on any runtime error.
9+
10+
on:
11+
push:
12+
branches: [main]
13+
pull_request:
14+
15+
jobs:
16+
check:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v4
20+
- uses: actions/setup-node@v4
21+
with:
22+
node-version: 22
23+
cache: npm
24+
- name: Install
25+
run: npm ci
26+
- name: Lockfile matches manifest
27+
run: npm ls --all >/dev/null
28+
- name: Build
29+
run: npm run static:build
30+
- name: Smoke-check the built site
31+
uses: stoatworks-labs/smoke-check@v1
32+
with:
33+
dir: out-static

0 commit comments

Comments
 (0)