This is a sample. It's exactly what a developer sees after a tester signs off a session — everything below was captured automatically by the extension, except the tester's notes. Try the filters, jump links, screenshots and “Copy as Markdown”.

Acme Storefront

Checkout — apply promo code

Rejected

Build v2.4.1-rc3·Tested by Dami Oyelaran··6m 41s·Chrome 131 · macOS · 1440×900

✕ Rejected by Dami Oyelaran ·

Promo codes don't apply at all — the API returns 500 and the cart total never changes. The Apply button also gets stuck disabled after navigating away and back.

Checklist passed2/41 failed · 1 not run

What went wrong

Tester notes3

  • major

    Discount never applies — the total stays at £48.00 and "Something went wrong" shows under the field.

  • minor

    Apply button stays disabled after navigating away and back — have to refresh to retry.

  • cosmetic

    Promo field placeholder is cut off on narrower widths.

Errors2 unique · 3 total

  • TypeError: Cannot read properties of undefined (reading 'total')×2
    first at· applyDiscount assets/cart-8f2a1c.js:341:27
  • Error: Request failed with status 500
    first at· fetchJson assets/api-2b91de.js:18:11

Failed requests2 unique · 3 total

  • POST/api/cart/apply-promo500×2600ms
  • POSTevents.acme-analytics.io/collectblockedlikely an ad blocker

Steps to reproduce

Reconstructed from clicks & navigation
  1. 1

    Navigate to /cart

  2. 2

    Click field “Promo code”

  3. 3

    Click button “Apply”

  4. 4

    POST /api/cart/apply-promo → 500×2

  5. 5

    TypeError: Cannot read properties of undefined (reading 'total')×2

  6. 6

    Error: Request failed with status 500

  7. 7

    majorDiscount never applies — the total stays at £48.00 and "Something went wrong" shows under the field.

  8. 8

    Click button “Apply”

  9. 9

    Click link “Account”

  10. 10

    Navigate to /account

Timeline

25 events
  1. Navigate to /cartpushState
  2. GET/api/cart20084ms

    GET https://staging.acme-shop.dev/api/cart

    HTTP/1.1 200 OK

    Request headers

    Accept
    application/json
    Authorization
    [REDACTED]

    Sensitive headers and fields are redacted in the browser before upload. Response bodies aren't available to extensions.

  3. info
    [analytics] page_view /cart
  4. warn
    Warning: Each child in a list should have a unique "key" prop. Check the render method of `CartItems`.
    Stack traceon /cart
        at CartItems (https://staging.acme-shop.dev/assets/cart-8f2a1c.js:112:9)
        at CartPage (https://staging.acme-shop.dev/assets/cart-8f2a1c.js:204:5)
  5. Click field “Promo code”input[data-testid="promo-input"]
  6. Click button “Apply”button[data-testid="apply-promo"]
  7. log
    [cart] applying promo SPRING20
  8. POSTevents.acme-analytics.io/collectnet::ERR_BLOCKED_BY_CLIENT

    POST https://events.acme-analytics.io/collect

    Request body

    {
      "event": "promo_apply_clicked"
    }

    Sensitive headers and fields are redacted in the browser before upload. Response bodies aren't available to extensions.

  9. POST/api/cart/apply-promo500612ms

    POST https://staging.acme-shop.dev/api/cart/apply-promo

    HTTP/1.1 500 Internal Server Error

    Request headers

    Accept
    application/json
    Content-Type
    application/json
    Authorization
    [REDACTED]
    X-Request-Id
    req_7Hc2kQ9

    Request body

    {
      "code": "SPRING20",
      "cartId": "cart_8a1f"
    }

    Sensitive headers and fields are redacted in the browser before upload. Response bodies aren't available to extensions.

  10. error
    TypeError: Cannot read properties of undefined (reading 'total')
    Stack traceon /cart
    TypeError: Cannot read properties of undefined (reading 'total')
        at applyDiscount (https://staging.acme-shop.dev/assets/cart-8f2a1c.js:341:27)
        at async onApply (https://staging.acme-shop.dev/assets/cart-8f2a1c.js:388:5)
  11. Screenshot captured automatically on error/cart

  12. rejection
    Error: Request failed with status 500
    Stack traceon /cart
    Error: Request failed with status 500
        at fetchJson (https://staging.acme-shop.dev/assets/api-2b91de.js:18:11)
        at async applyPromo (https://staging.acme-shop.dev/assets/cart-8f2a1c.js:302:18)
  13. major

    Discount never applies — the total stays at £48.00 and "Something went wrong" shows under the field.

  14. Click button “Apply”button[data-testid="apply-promo"]
  15. log
    [cart] applying promo SPRING20
  16. POST/api/cart/apply-promo500588ms

    POST https://staging.acme-shop.dev/api/cart/apply-promo

    HTTP/1.1 500 Internal Server Error

    Request headers

    Accept
    application/json
    Content-Type
    application/json
    Authorization
    [REDACTED]
    X-Request-Id
    req_Pq81xZ2

    Request body

    {
      "code": "SPRING20",
      "cartId": "cart_8a1f"
    }

    Sensitive headers and fields are redacted in the browser before upload. Response bodies aren't available to extensions.

  17. error
    TypeError: Cannot read properties of undefined (reading 'total')
    Stack traceon /cart
    TypeError: Cannot read properties of undefined (reading 'total')
        at applyDiscount (https://staging.acme-shop.dev/assets/cart-8f2a1c.js:341:27)
        at async onApply (https://staging.acme-shop.dev/assets/cart-8f2a1c.js:388:5)
  18. Click link “Account”nav.site-nav > a
  19. Navigate to /accountpushState
  20. GET/api/account200132ms

    GET https://staging.acme-shop.dev/api/account

    HTTP/1.1 200 OK

    Request headers

    Accept
    application/json
    Authorization
    [REDACTED]

    Sensitive headers and fields are redacted in the browser before upload. Response bodies aren't available to extensions.

  21. Go back/forward to /cartpopstate
  22. GET/api/cart20077ms

    GET https://staging.acme-shop.dev/api/cart

    HTTP/1.1 200 OK

    Request headers

    Accept
    application/json
    Authorization
    [REDACTED]

    Sensitive headers and fields are redacted in the browser before upload. Response bodies aren't available to extensions.

  23. Click button “Apply” (disabled)button[data-testid="apply-promo"]
  24. minor

    Apply button stays disabled after navigating away and back — have to refresh to retry.

  25. cosmetic

    Promo field placeholder is cut off on narrower widths.