- interceptNetworkCall + startNetworkErrorMonitor for page traffic (spy/mock + fail on silent 4xx/5xx), with unit tests - docs/NETWORK.md, docs/IDEAS.md (OSS backlog), docs/OUTLINE.md (update Outline QA & Dev Playkit page on each release) - Adoption pause: no other consumer repos until punimtag soak
4.7 KiB
4.7 KiB
playkit roadmap
Living plan for making @levkin/playkit more useful across Levkin repos.
Now (v0.3) — shipped
- Browser helpers with retries (
click,fill,safeGoto, visibility waits) BasePagefor Page Objects- Public-host guards (
assertPublicHost,waitForUrlHost) — Kolby #57 class ApiClientwith redacted structured loggingTimingCollector+ Prometheus Pushgateway export- Config from env (Infisical/CI-friendly)
createPlaykitRuntime()for one-shot wiring- Unit tests (vitest) + Gitea Actions CI
- Starter Grafana dashboard JSON
- Consumer docs + API/UI examples
- Mailtrap / Mailpit —
createMailInbox(),waitForEmail, link extraction - Auth storage state helpers —
saveStorageState/storageStateUse - Trace-on-failure preset —
playkitFailureArtifacts() - Schema assertions — Zod
assertSchema+ApiClientschemaoption
Next (v0.4) — high value
- Private Gitea npm registry publish —
npm install @levkin/playkitwithout git URLs - Consumer template —
npx @levkin/playkit initscaffoldinge2e/+ CI snippet - Deploy-smoke CLI —
playkit smoke --project punimtagpost-deploy gate - Retry policy presets — flaky-network vs strict-CI profiles
- Self-test against a real fake site — today's unit tests only mock HTTP/mail;
examples/specs are explicitly not run in kit CI. Stand up a tiny demo app (or point at an existing DEV LXC) and run the browser/API/mail helpers against it in CI, so a regression inBasePage/ApiClient/assertPublicHostis caught before a consumer pins a broken tag. - Network interception / network error monitor —
interceptNetworkCall(),startNetworkErrorMonitor()/assertNoErrors()(seedocs/NETWORK.md) - Tag-triggered release workflow —
.gitea/workflows/ci.ymlreleasejob now runs onvX.Y.Ztag push: re-verifies build/test, checks tag ==package.jsonversion, checksCHANGELOG.mdhas that version's section, then creates a Gitea release (npm-pack tarball attached) via the API. Needs a one-timeGITEA_TOKENActions secret on this repo (see README "Release"). Still open:build-and-test/secret-scanalso re-run on the tag push (sameon.pushtrigger) — harmless redundancy, not wired to skip. - Live docs — Outline page under QA & Dev (
notes.levkin.ca). Sync checklist indocs/OUTLINE.md— update Outline whenever playkit is released. - Pushgateway + dashboard wired in ansible —
pushgatewayservice, Prometheus scrape job, and a generatedlive-playkitGrafana board now live in ansibledeploy/observability/(superseding the old standalonedashboards/playkit-overview.json, which is removed). Ops still needs to runmake deploy-observabilityagainst the LXC beforePLAYKIT_METRICS_ENABLED=truedoes anything in CI — check with the ansible repo owner before flipping that on.
Adoption pause
No new consumer repos until we soak. Keep playing through punimtag e2e + kit CI for a few days (release job, Pushgateway/dashboard apply, network helpers) before migrating screening / slack-sieve / portfolio. See docs/IDEAS.md.
Later (v0.5+) — professional polish
- Web Vitals (LCP/CLS/INP) collection via Playwright CDP + metrics labels
- A11y — axe-core wrapper as optional peer
- Visual regression — screenshot baselines with per-project bucket (MinIO)
- Contract testing — OpenAPI-driven API suite generator
- Multi-browser matrix helper — chromium/firefox/webkit project factory
- Flake quarantine — annotate + quarantine flaky tests with Grafana panel (depends on burn-in — see below)
- Hermes / Mattermost reporter — post failed suite summary to
#eng - Infisical SDK helper —
loadSecretsFromInfisical()for local runs (machine identity) - JUnit + HTML report merge — single artifact for Gitea PR checks
- Network assert helpers — fail if request hits
10.x/ wrong host after navigation
Ideas pulled from similar OSS tools (2026-07 research)
See docs/IDEAS.md for expanded notes. Summary:
- Network interception / network error monitor — shipped (above)
- Test burn-in (flake detection) — rerun a spec N times; mechanism for flake quarantine
- Scheduled synthetic monitoring — evaluate
playwright-exporterbefore bespoke smoke CLI - Functional-core-for-everything audit — optional function wrappers alongside class APIs
Remote-write vs Pushgateway— moot while Pushgateway is the path- Confirmed sane (no action): OpenAPI / axe / visual reg already under v0.5+