Add kit selftest CI, Outline sync script, and close ops soak gaps
CI / release (pull_request) Has been skipped
CI / skip-ci-check (pull_request) Successful in 4s
CI / secret-scan (pull_request) Successful in 4s
CI / build-and-test (pull_request) Successful in 16s
CI / selftest (pull_request) Failing after 39s

Fake-site Playwright suite catches BasePage/ApiClient/network regressions
before consumers pin a broken tag; Outline sync + docs for QA & Dev live page;
Pushgateway deploy soak confirmed separately on observability LXC.
This commit is contained in:
2026-07-14 22:56:07 -04:00
parent 3380ba9511
commit afaa987218
12 changed files with 561 additions and 14 deletions
+42
View File
@@ -0,0 +1,42 @@
# Kit CI self-test (fake site)
Unit tests in `src/**/*.test.ts` mock HTTP/mail. They do **not** prove that
`BasePage`, `ApiClient`, or network helpers work against a real browser + HTTP
server. The **selftest** suite fills that gap without depending on punimtag DEV.
## Layout
```
selftest/
demo-site/server.mjs # tiny Node HTTP app (:4173)
playwright.config.ts # starts webServer, runs Chromium
tests/
browser.spec.ts # BasePage, host guards, intercept, error monitor
api.spec.ts # ApiClient + Zod schema
```
Mail stays unit-tested only (Mailpit/Mailtrap need live SMTP traps). Selftest
does not start Mailpit.
## Local
```bash
npx playwright install chromium # once
npm run selftest
```
Env (optional):
| Var | Default |
|-----|---------|
| `PLAYKIT_SELFTEST_PORT` | `4173` |
| `PLAYKIT_BASE_URL` | `http://127.0.0.1:4173` |
Selftest sets `assertPublicHost(..., false)` when touching `127.0.0.1` — consumer
public e2e must keep the default forbid-private behavior.
## CI
`.gitea/workflows/ci.yml` job `selftest` installs Chromium deps and runs
`npm run selftest` after unit tests. Failures there mean a regression in kit
browser/API helpers *before* a consumer pins a broken tag.