playkit/CHANGELOG.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

4.0 KiB

Changelog

Unreleased

  • Resilient UI automation helpers — for driving third-party/adversarial SPAs (no stable test ids, occasional bot walls) rather than your own instrumented app:
    • byAriaLabel() / clickByAriaLabel() — find/click by a regex over aria-label, scoped to a Page or a narrower Locator (e.g. one dialog)
    • withDialog() — retry an action against a modal that might have silently closed, reopening it first via a caller-supplied reopen()
    • fillContentEditable() — type into contenteditable rich-text fields (not just <textarea>), splitting on blank lines so multi-paragraph/bulleted text renders as separate blocks instead of collapsing
    • runPersistentSession() — keep one browser session open across many runs via RUN/READY/CLOSE flag files instead of relaunching (and re-authenticating) every time; auto-relaunches on an unexpected crash
    • NetworkErrorMonitor: useDefaultExcludes + exported COMMON_NOISE_PATTERNS (ad/telemetry pixel hosts) so consumers stop hand-rolling the same exclude list per project
  • Ops: npm publish is hard-required in the tag release job (removed soft-fail); NPM_PUBLISH_TOKEN + Outline update scopes documented as done in docs/OPS.md / ROADMAP.md

0.4.0 — 2026-07-15

  • CLIplaykit init scaffolds e2e/ + CI snippet; playkit smoke post-deploy public-host + health ping
  • Retry presetsPLAYKIT_RETRY_PRESET=strictCi|flakyNetwork|default wired through loadConfig (RETRY_PRESETS export)
  • Gitea npm registrypublishConfig + release-job npm publish; consumer docs in docs/NPM_REGISTRY.md
  • Docs: CONSUMER/ROADMAP updated for v0.4; selftest + Outline sync remain as of 0.3.x line

0.3.1 — 2026-07-14

  • Network interception / error monitorinterceptNetworkCall(), startNetworkErrorMonitor() (see docs/NETWORK.md)
  • Tests: expand coverage for network helpers — NetworkErrorMonitor (record/dedupe/exclude/minStatus/assert), interceptNetworkCall (spy/fulfill/handler/method continue/non-JSON), plus globToRegExp / responseMatchesFilter
  • Docs: docs/OUTLINE.md checklist (update Outline QA & Dev Playkit page on each release); docs/IDEAS.md for OSS-borrowed backlog; adoption pause (no new consumer repos until soak)
  • CI: add tag-triggered release job (.gitea/workflows/ci.yml) — re-runs build/test, verifies tag matches package.json version and CHANGELOG.md documents it, creates a Gitea release with an npm pack tarball attached. Requires a one-time RELEASE_TOKEN Actions secret.
  • Docs: bump install pin examples from v0.1.0 to v0.3.0 (README, CONSUMER.md)
  • Docs: lead with Mailpit (homelab default) instead of Mailtrap in README email section; use createMailInbox() + readMailHtml() in the example instead of a provider-specific client
  • Ops: Pushgateway + live-playkit Grafana board now provisioned via ansible deploy/observability/
  • Self-test suiteselftest/ fake site + Playwright CI job (docs/SELFTEST.md)
  • Outline syncscripts/outline-sync-playkit.py

0.3.0 — 2026-07-14

  • Zod schema assertsassertSchema() + optional schema on ApiClient requests
  • storageState helperssaveStorageState(), storageStateUse()
  • Trace-on-failure presetplaykitFailureArtifacts() for Playwright use
  • Mailpit adapter marked shipped (was in 0.2.1)

0.2.1 — 2026-07-14

  • Mailpit client + createMailInbox() (prefer homelab Mailpit, else Mailtrap SaaS)

0.2.0 — 2026-07-14

  • Mailtrap Email Testing client: MailtrapClient, waitForEmail, extractLinks / firstLinkMatching
  • Export path @levkin/playkit/mail

0.1.1 — 2026-07-14

  • Add prepare script so git installs build dist/ for consumers

0.1.0 — 2026-07-14

Initial release.

  • Browser: BasePage, click, fill, safeGoto, visibility waits, waitForUrlHost, assertPublicHost
  • API: ApiClient with status expectations and secret redaction
  • Metrics: TimingCollector + Pushgateway helper
  • Config/logging helpers + consumer docs