playkit/ROADMAP.md
ilia 8b30ab5a6d
All checks were successful
CI / release (pull_request) Has been skipped
CI / skip-ci-check (pull_request) Successful in 5s
CI / secret-scan (pull_request) Successful in 4s
CI / build-and-test (pull_request) Successful in 23s
CI / selftest (pull_request) Successful in 15s
Add resilient UI helpers for third-party / adversarial SPAs.
Generalize patterns from LinkedIn automation: aria-label regex locators,
dialog reopen-retry, contenteditable typing, persistent flag-file sessions,
and a default noise exclude preset for NetworkErrorMonitor.
2026-07-15 18:17:02 -04:00

3.3 KiB

playkit roadmap

Living plan for making @levkin/playkit more useful across Levkin repos.

Now (v0.4.0) — this release

  • Everything from v0.3.1 (browser/API/mail/network/selftest/Outline/Pushgateway)
  • Private Gitea npm registry publish — release job npm publish to git.levkin.ca (docs/NPM_REGISTRY.md)
  • Consumer templateplaykit init / npx @levkin/playkit init
  • Deploy-smoke CLIplaykit smoke (public-host + health GET)
  • Retry policy presetsPLAYKIT_RETRY_PRESET=strictCi|flakyNetwork|default

Next after soak

  • End adoption pause — migrate first extra consumer (screening candidate)
  • Evaluate playwright-exporter for scheduled synthetics (may supersede bespoke cron wrappers around playkit smoke)

Done since v0.4.0 (resilient UI automation)

Pulled from real friction driving LinkedIn (third-party, bot-walled, no test ids) from a Cursor/Camoufox automation — see the resume repo's scripts/linkedin-polish-all.mjs for the original hand-rolled versions these replace.

  • byAriaLabel / clickByAriaLabel — regex-over-aria-label locator, scoped to page or a narrower locator
  • withDialog — reopen-and-retry wrapper for modals that can silently close mid-flow
  • fillContentEditable — real-keyboard typing into contenteditable rich text with paragraph breaks
  • runPersistentSession — flag-file-driven long-lived browser session (RUN/READY/CLOSE), auto-relaunch on crash
  • NetworkErrorMonitor useDefaultExcludes + COMMON_NOISE_PATTERNS (ad/telemetry noise preset)

Done since v0.4.0 (ops)

  • Wire NPM_PUBLISH_TOKEN / write:package@levkin/playkit@0.4.0 published; Actions secret + vault_playkit_npm_token; release job no longer soft-fails (docs/OPS.md)
  • Outline API key scopesdocuments.update / delete working; living page synced via API (docs/OUTLINE.md)

Adoption pause

No new consumer repos until soak finishes. Keep punimtag e2e + kit CI + metrics path healthy for a few days. 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 helperloadSecretsFromInfisical() 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
  • Test burn-in (flake detection) — rerun a spec N times

Ideas pulled from similar OSS tools (2026-07 research)

See docs/IDEAS.md. Summary:

  • Network interception / error monitor
  • Test burn-in / flake quarantine
  • Scheduled synthetic monitoring (playwright-exporter)
  • Functional-core / fixture-shell audit
  • Remote-write vs Pushgateway — moot