Production smoke testing
This suite checks Tending's core production journey in a Pixel 7-sized Chromium viewport. It covers authentication, mobile navigation, relationship review, configured context sources, Moments, observations, billing and export.
It does not click connector sync, OAuth, checkout or billing-portal actions. Those operations can change external systems or create real payment sessions and remain deliberate manual checks.
Prepare a dedicated account
Use a non-personal production test account that is an administrator of a small test organisation. Connect at least one context source and leave either a review prompt waiting or an empty review queue. Do not use an organisation containing sensitive relationship data.
Capture an authenticated browser state locally:
npx playwright install chromium
npx playwright codegen --save-storage=.auth/tending-smoke.json https://tending.network/sign-in
Complete sign-in in the opened browser, visit the test organisation, then close
the browser. Playwright writes the session to the ignored .auth directory.
The same capture command works in PowerShell:
npx playwright install chromium
npx playwright codegen --save-storage=.auth/tending-smoke.json https://tending.network/sign-in
Run locally
SMOKE_BASE_URL=https://tending.network \
SMOKE_ORG_SLUG=your-test-org \
SMOKE_ORGANISATION_ID=00000000-0000-0000-0000-000000000000 \
npm run test:smoke
The suite is read-only by default. To verify creation and deletion, add:
SMOKE_ALLOW_WRITE_ROUND_TRIP=true
That test creates a uniquely marked Moment with no relationship links and
deletes it in a finally block. If deletion itself fails, search the test
organisation for [production-smoke] and remove the remaining test record.
In PowerShell:
$env:SMOKE_BASE_URL = "https://tending.network"
$env:SMOKE_ORG_SLUG = "your-test-org"
$env:SMOKE_ORGANISATION_ID = "00000000-0000-0000-0000-000000000000"
$env:SMOKE_ALLOW_WRITE_ROUND_TRIP = "true" # omit for a read-only run
npm run test:smoke
Run from GitHub Actions
- Base64-encode the complete
.auth/tending-smoke.jsonfile without line wrapping. - Save it as the repository Actions secret
SMOKE_AUTH_STATE_B64. - Run Production smoke manually and supply the deployed URL, organisation slug and organisation UUID.
- Enable the write round trip only when the test organisation is safe to mutate.
Failed runs retain traces, screenshots, video and the HTML Playwright report for seven days. Rotate the stored session immediately if the smoke account's access changes or the state file is exposed.
On Windows, copy the encoded value to the clipboard with:
[Convert]::ToBase64String(
[IO.File]::ReadAllBytes(".auth/tending-smoke.json")
) | Set-Clipboard
Manual connector and payment checks
For a release candidate, supplement the automated suite with these deliberate checks:
- complete OAuth for each enabled connector using test accounts;
- choose Check now and confirm the bounded source counts make sense;
- review one resulting prompt on mobile, keep it in edited wording and follow the links to its Moment and relationship;
- dismiss another prompt and confirm it does not become a Moment;
- start Stripe checkout in test mode, cancel once, then complete a test payment;
- open the billing portal and confirm the subscription state returns correctly.
Record the deployment, account, connector, time and outcome. Never paste tokens, source messages, forwarding addresses or relationship content into the report.