Release 0.3.1: network interception helpers, fix release-token secret name
All checks were successful
CI / skip-ci-check (push) Successful in 4s
CI / secret-scan (push) Successful in 4s
CI / release (push) Successful in 22s
CI / build-and-test (push) Successful in 28s

- Bump package.json/lock to 0.3.1, move Unreleased CHANGELOG entries under it
- Fix release CI job: secrets.GITEA_TOKEN can never be set (Gitea rejects
  that literal secret name), so the release job has been unable to create
  a Gitea release since it was added. Renamed to RELEASE_TOKEN throughout
  and set the secret on this repo.
- Bump install-pin examples (README, docs/CONSUMER.md) to #v0.3.1
This commit is contained in:
ilia 2026-07-14 21:22:56 -04:00
parent 2674f58643
commit 3380ba9511
7 changed files with 13 additions and 11 deletions

View File

@ -121,7 +121,7 @@ jobs:
}));
')
RESPONSE=$(curl -sS -X POST \
-H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
-H "Content-Type: application/json" \
-d "$BODY_JSON" \
"https://git.levkin.ca/api/v1/repos/ilia/playkit/releases")
@ -132,6 +132,6 @@ jobs:
fi
TARBALL=$(ls /tmp/levkin-playkit-*.tgz)
curl -sS -X POST \
-H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
-F "attachment=@${TARBALL}" \
"https://git.levkin.ca/api/v1/repos/ilia/playkit/releases/${RELEASE_ID}/assets"

View File

@ -2,8 +2,10 @@
## Unreleased
- Tests: expand coverage for network helpers — `NetworkErrorMonitor` (record/dedupe/exclude/minStatus/assert), `interceptNetworkCall` (spy/fulfill/handler/method continue/non-JSON), plus `globToRegExp` / `responseMatchesFilter`
## 0.3.1 — 2026-07-14
- **Network interception / error monitor**`interceptNetworkCall()`, `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 `GITEA_TOKEN` Actions secret.
- Docs: bump install pin examples from `v0.1.0` to `v0.3.0` (README, CONSUMER.md)

View File

@ -8,7 +8,7 @@ Use it as a library from any consumer repo (punimtag, MirrorMatch, …). App-spe
```bash
# git tag dependency (until a private npm registry is wired)
npm install git+https://git.levkin.ca/ilia/playkit.git#v0.3.0
npm install git+https://git.levkin.ca/ilia/playkit.git#v0.3.1
# peer
npm install -D @playwright/test
@ -139,11 +139,11 @@ npm run build
2. Update `CHANGELOG.md` with a `## X.Y.Z` section (the release job extracts this verbatim as release notes)
3. Tag `vX.Y.Z` and push
Pushing the tag triggers `.gitea/workflows/ci.yml`'s `release` job: it re-runs typecheck/test/build, verifies the tag matches `package.json`'s `version` and that `CHANGELOG.md` documents it, then creates a Gitea release (with the `npm pack` tarball attached) via the API using a repo-scoped `GITEA_TOKEN` Actions secret. If any check fails, no release is created — fix and re-tag. Consumers still pin the git tag (`#vX.Y.Z`); the Gitea release is for visibility/changelog, not an npm registry publish (see ROADMAP "private Gitea npm registry").
Pushing the tag triggers `.gitea/workflows/ci.yml`'s `release` job: it re-runs typecheck/test/build, verifies the tag matches `package.json`'s `version` and that `CHANGELOG.md` documents it, then creates a Gitea release (with the `npm pack` tarball attached) via the API using a repo-scoped `RELEASE_TOKEN` Actions secret. If any check fails, no release is created — fix and re-tag. Consumers still pin the git tag (`#vX.Y.Z`); the Gitea release is for visibility/changelog, not an npm registry publish (see ROADMAP "private Gitea npm registry").
4. **Update Outline** — after the release is green, sync the Playkit page under Outline **QA & Dev** (`notes.levkin.ca`). Checklist: `docs/OUTLINE.md`.
**One-time setup:** add a `GITEA_TOKEN` secret (repo `Settings → Actions → Secrets` on `ilia/playkit`) scoped to create releases on this repo — separate from the `PLAYKIT_GIT_TOKEN` consumers use to clone it.
**One-time setup:** add a `RELEASE_TOKEN` secret (repo `Settings → Actions → Secrets` on `ilia/playkit`) scoped to create releases on this repo — separate from the `PLAYKIT_GIT_TOKEN` consumers use to clone it. (Named `RELEASE_TOKEN`, not `GITEA_TOKEN` — Gitea's Actions secrets API rejects that literal name as reserved, same reason `PLAYKIT_GIT_TOKEN` isn't called `GITEA_TOKEN` either.)
## License

View File

@ -2,7 +2,7 @@
Living plan for making `@levkin/playkit` more useful across Levkin repos.
## Now (v0.3) — shipped
## Now (v0.3.1) — shipped
- [x] Browser helpers with retries (`click`, `fill`, `safeGoto`, visibility waits)
- [x] `BasePage` for Page Objects

View File

@ -3,7 +3,7 @@
## 1. Depend on a release
```bash
npm install git+https://git.levkin.ca/ilia/playkit.git#v0.3.0
npm install git+https://git.levkin.ca/ilia/playkit.git#v0.3.1
npm install -D @playwright/test
npx playwright install chromium
```

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "@levkin/playkit",
"version": "0.3.0",
"version": "0.3.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@levkin/playkit",
"version": "0.3.0",
"version": "0.3.1",
"license": "MIT",
"dependencies": {
"zod": "^3.24.0"

View File

@ -1,6 +1,6 @@
{
"name": "@levkin/playkit",
"version": "0.3.0",
"version": "0.3.1",
"description": "Shared Playwright + API test kit — browser helpers, API client, logging, performance, Grafana/Prometheus metrics",
"license": "MIT",
"type": "module",