🧪 Test Hub
testing: Demo target v3.0.0 · built-in demo site
← →

Run #427 — DEMO-T16

failed
📄 Download report

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

activity frame
+0.00s

Step timings follows the replay — click a step to see it there

atsteptook
+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 logrun.log
Playwright trace trace.zip open with: playwright show-trace trace.zip
Result JSONresult.json
Folderresults/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

    expect(locator).toHaveCount(expected) failed

    Locator:  locator('#reset-form')
    Expected: 0
    Received: 1
    Timeout:  5000ms

    Call log:
      - the reset link worked a SECOND time: any old reset email is still a key to the account with timeout 5000ms
      - waiting for locator('#reset-form')
        9 × locator resolved to 1 element
          - unexpected value "1"


      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