Test run report — DEMO-020 FAILED

Freight: public API contract, auth and limits
run #326 · 2026-09-24 19:46:19 · duration 2s · target version 2.1.0 · browser chromium · started by: cli-adopted
report generated 2026-09-25 10:50:49 — self-contained file, safe to attach anywhere

What went wrong

AssertionError: the API broke its promises:
  - contract: field 'eta' is missing (the response has: booked_at, customer, delivered_at, destination, estimated_delivery, events, id, origin, pieces, price, service, status, status_label, weight_kg)
  - money: SPRING10 took $23.52 off a $117.62 subtotal -- 10% is $11.76
  - limits: the trial key allows 5 calls a minute, but 6 in a row answered [200, 200, 200, 200, 200, 200]

Step timings

atstepms
+0.95sauth: no key31.2
+0.99sGET a shipment43.5
+1.02sPOST a quote with SPRING1025.9
+1.35srate limit: 6 calls on the trial key323.0

Full technical error

AssertionError: the API broke its promises:
  - contract: field 'eta' is missing (the response has: booked_at, customer, delivered_at, destination, estimated_delivery, events, id, origin, pieces, price, service, status, status_label, weight_kg)
  - money: SPRING10 took $23.52 off a $117.62 subtotal -- 10% is $11.76
  - limits: the trial key allows 5 calls a minute, but 6 in a row answered [200, 200, 200, 200, 200, 200]
Traceback (most recent call last):
  File "/opt/pw-testhub/app/core/harness/run_test.py", line 737, in main
    module.run(TimedPage(page, ctx), ctx)
  File "/opt/pw-testhub/data/tests/DEMO-020__freight_api_contract.py", line 73, in run
    assert not problems, "the API broke its promises:\n  - " + "\n  - ".join(problems)
AssertionError: the API broke its promises:
  - contract: field 'eta' is missing (the response has: booked_at, customer, delivered_at, destination, estimated_delivery, events, id, origin, pieces, price, service, status, status_label, weight_kg)
  - money: SPRING10 took $23.52 off a $117.62 subtotal -- 10% is $11.76
  - limits: the trial key allows 5 calls a minute, but 6 in a row answered [200, 200, 200, 200, 200, 200]

Video and Playwright trace stay on the hub: results/DEMO-020/20260924-194619-r326/ — open the run page for the replay.