queued 2026-09-25 00:23:08 · started 00:23:10 · finished 00:23:27 · duration 17s · target v2.1.0 · chromium · trigger: cli-adopted · batch: 7 tests (terminal)
What went wrong
1 of 1 test(s) failed: a password reset works through the email -- exactly once -- the reset link worked a SECOND time: any old reset email is still a key to the account (locator('#reset-form'), expected 0, received 1)
Technical details (full error)
1 of 1 test(s) failed: a password reset works through the email -- exactly once -- the reset link worked a SECOND time: any old reset email is still a key to the account (locator('#reset-form'), expected 0, received 1)
Activity replay 22 frames, captured only while the page was actually changing — idle waits are skipped automatically
+0.00s
Step timings follows the replay — click a step to see it there
| at | step | took |
|---|---|---|
| +0.16s | ⏱ a password reset works through the email -- exactly once | 13.56 s |
| +0.23s | goto freight/login/ | 129 ms |
| +0.37s | click #forgot-link | 119 ms |
| +0.49s | fill #forgot-login | 42 ms |
| +0.53s | click #forgot-btn | 89 ms |
| +0.62s | innerText #forgot-ref | 50 ms |
| +0.67s | ⏱ wait for the email | 6.98 s |
| +0.68s | goto freight/mailbox/?to=courier@acme-freight.example | 59 ms |
| +0.74s | toBeVisible #mail-list a.mail-subject:has-text('ref 16E935') | 6.91 s |
| +7.66s | click #mail-list a.mail-subject:has-text('ref 16E935') | 44 ms |
| +7.70s | toBeVisible #mail-body a[href*='/login/reset/'] | 22 ms |
| +7.72s | ⏱ choose a new password | 265 ms |
| +7.73s | click #mail-body a[href*='/login/reset/'] | 60 ms |
| +7.79s | fill #new-password | 60 ms |
| +7.85s | fill #confirm-password | 12 ms |
| +7.86s | click #reset-btn | 100 ms |
| +7.96s | toBeVisible #login-btn | 26 ms |
| +7.99s | ⏱ sign in with the new password | 275 ms |
| +7.99s | fill #username | 12 ms |
| +8.00s | fill #password | 15 ms |
| +8.02s | click #login-btn | 142 ms |
| +8.16s | toBeVisible #signed-in-user | 101 ms |
| +8.27s | click #sign-out | 65 ms |
| +8.33s | ⏱ follow the same link again | 5.18 s |
| +8.33s | goto http://127.0.0.1:8000/demo/freight/mailbox/4/ | 36 ms |
| +8.37s | click #mail-body a[href*='/login/reset/'] | 103 ms |
| +8.47s | toBeVisible #reset-invalid, #reset-form | 23 ms |
| +8.50s | toHaveCount #reset-form | 5.01 s |
Times are when each step began, on the replay's clock. Add your own phases with
await test.step('label', async () => { … }).
Screenshots
No screenshots (use ctx.screenshot("name") in the test).
Artifacts
| Run log | run.log |
| Playwright trace | trace.zip
open with: playwright show-trace trace.zip |
| Result JSON | result.json |
| Folder | results/DEMO-T16/20260925-002310-r427/ |
Full log
Read from the S3 bucket (the last 20 KB; the whole file is the Run log link above).
[ts-harness] @playwright/test project=chromium file=DEMO-T16__freight_password_reset_typescript.spec.ts
Running 1 test using 1 worker
reset requested, reference 16E935
✘ 1 [chromium] › DEMO-T16__freight_password_reset_typescript.spec.ts:14:5 › a password reset works through the email -- exactly once (13.6s)
1) [chromium] › DEMO-T16__freight_password_reset_typescript.spec.ts:14:5 › a password reset works through the email -- exactly once › follow the same link again
Error: the reset link worked a SECOND time: any old reset email is still a key to the account
[2mexpect([22m[31mlocator[39m[2m).[22mtoHaveCount[2m([22m[32mexpected[39m[2m)[22m failed
Locator: locator('#reset-form')
Expected: [32m0[39m
Received: [31m1[39m
Timeout: 5000ms
Call log:
[2m - the reset link worked a SECOND time: any old reset email is still a key to the account with timeout 5000ms[22m
[2m - waiting for locator('#reset-form')[22m
[2m 9 × locator resolved to 1 element[22m
[2m - unexpected value "1"[22m
53 | await expect(page.locator('#reset-form'),
54 | 'the reset link worked a SECOND time: any old reset email is still a key to the account')
> 55 | .toHaveCount(0);
| ^
56 | });
57 | });
58 |
at /opt/pw-testhub/data/tests/DEMO-T16__freight_password_reset_typescript.spec.ts:55:8
at /opt/pw-testhub/data/tests/DEMO-T16__freight_password_reset_typescript.spec.ts:49:3
attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
../results/DEMO-T16/20260925-002310-r427/test-results/DEMO-T16__freight_password-a9674-h-the-email----exactly-once-chromium/test-failed-1.png
────────────────────────────────────────────────────────────────────────────────────────────────
Error Context: ../results/DEMO-T16/20260925-002310-r427/test-results/DEMO-T16__freight_password-a9674-h-the-email----exactly-once-chromium/error-context.md
attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
../results/DEMO-T16/20260925-002310-r427/test-results/DEMO-T16__freight_password-a9674-h-the-email----exactly-once-chromium/trace.zip
Usage:
npx playwright show-trace ../results/DEMO-T16/20260925-002310-r427/test-results/DEMO-T16__freight_password-a9674-h-the-email----exactly-once-chromium/trace.zip
────────────────────────────────────────────────────────────────────────────────────────────────
1 failed
[chromium] › DEMO-T16__freight_password_reset_typescript.spec.ts:14:5 › a password reset works through the email -- exactly once
[ts-harness] activity reel: 22 change-frames extracted from the trace screencast