All bugs
highHidden state corruption

Checkout charges the pre-discount total after a promo code

The button says Pay $117.00 and the order goes through. Only the amount charged is wrong, and only when the promo is applied after the checkout page has loaded.

storefrontFound 2026-10-20Full report in Replay QA

What the recording showed

placeOrder is memoized with useCallback(…, [cart?.id]), so it kept the total from before the promo. POST /api/orders sent amount: 130 while the button read Pay $117.00, and order #10422 was charged $130.00.

Actual

Expected — After applying WELCOME10 and seeing Total $117.00 / "Pay $117.00", placing the order should submit amount 117, and the order confirmation for Order #10422 should show the discounted total charged (e.g. $117.00 with the -$13.00 discount reflected), matching what the shopper agreed to pay at checkout.

Expected

Actual — The POST /api/orders request body sends "amount":130 even though the pay button just read "Pay $117.00"; the server creates order #10422 with amount 130, and the order confirmation page displays "Total charged $130.00" with no discount amount shown — the applied WELCOME10 promo is silently dropped from the charged total.

Session replay

Chronology of events

1
The app at 0:18.40:18.4
0:18.4

On the checkout page the shopper types WELCOME10 into the Promo code field and clicks Apply (the promo Apply button at Checkout.jsx line 157, element .promo form submit).

2 evidence probes (PlaywrightSteps, InspectElement)
PlaywrightSteps {"last":120,"mode":"steps","testIndex":0}
→ # Steps: QA Run: run-mvfvs2t3-aybt ❌ (last 120)

**120 steps** (showing 1-25 of 120)

  🔄 **7x** frame.evaluate (steps 728-734)

  735. [151886ms, duration: 524ms] page.evaluate
    at _RecordedPageObserver.flushRowsFor scripts/journey/run-script.bundle.cjs:86552:14
    at scripts/journey/run-script.bundle.cjs:86643:86
    at scripts/journey/run-script.bundle.cjs:681:22
    at measureOperation scripts/journey/run-script.bundle.cjs:679:16
    at _RecordedPageObserver.observeMeasured scripts/journey/run-script.bundle.cjs:86643:22

  736. [152411ms, duration: 123ms] page.evaluate
    at measureVisibleNodes scripts/journey/run-script.bundle.cjs:32368:10
    at measure scripts/journey/run-script.bundle.cjs:86646:30
    at measureIntoSetMeasured scripts/journey/run-script.bundle.cjs:12122:22
    at scripts/journey/run-script.bundle.cjs:12093:84
    at scripts/journey/run-script.bundle.cjs:681:22
    at measureOperation scripts/journey/run-script.bundle.cjs:679:16
    at measureIntoSet scripts/journey/run-script.bundle.cjs:12093:10
    at BrowserHistory.observe scripts/journey/run-script.bundle.cjs:13898:38
    at _RecordedPageObserver.observeMeasured scripts/journey/run-script.bundle.cjs:86647:37

  737. [153740ms, duration: 5ms] page.evaluate
    at scripts/journey/run-script.bundle.cjs:86901:14
    at scripts/journey/run-script.bundle.cjs:681:22
    at measureOperation scripts/journey/run-script.bundle.cjs:679:16
    at _RecordedPageObserver.readMissedOnscreenText scripts/journe…
InspectElement {"point":"Point:5","element":"html:nth-of-type(1) > body:nth-of-type(1) > div:nth-of-type(1) > main:nth-of-type(1) > div:nth-of-type(1) > aside:nth-of-type(1) > form:nth-of-type(1) > button:nth-of-type(1)"}
→ Element:1 is `<button type="submit" class="btn btn-secondary"></button>`.
Element:1 is rendered by React component Checkout at Point:7:
Relevant code: http://localhost:3202/src/pages/Checkout.jsx line 157 column 10
No elements are obstructing the center point of this element.

Element:1 has 89.203125px width and 41px height.
Margin: top 0px right 0px bottom 0px left 0px.
Padding: top 10px right 18px bottom 10px left 18px.

Distances to its parent element:
- Top is aligned with parent boundary
- Right is aligned with parent boundary
- Bottom is aligned with parent boundary
- Left overflows parent by 208.80px

### Parent Element:2

Element:2 is `<form class="promo"></form>`.
Element:2 is rendered by React component Checkout at Point:8:
Relevant code: http://localhost:3202/src/pages/Checkout.jsx line 150 column 8

Element:2 has 298px width and 41px height.
Margin: top 14px right 0px bottom 6px left 0px.
Padding: top 0px right 0px bottom 0px left 0px.

Distances to its parent element:
- Top overflows parent by 171.00px
- Right overflows parent by 21.00px
- Bottom overflows parent by 145.00px
- Left overflows parent by 21.00px

### Parent Element:3

Element:3 is `<aside class="summary"></aside>`.
Element:3 is rendered by React component Checkout at Point:9:
Relevant code: http://localhost:3202/src/pages/Checkout.jsx line 131 column 6

Element:3 has 340px width and 357px height.
Margin: top 0px right 0px bottom 0px left 0px.
Padding: top 20px right 20px bottom 20px left 20px.

Di…
2
The app at 0:20.10:20.1
0:20.1

The promo is accepted: /api/promo returns {"code":"WELCOME10","percent":10}, and the order summary re-renders to Subtotal $130.00, Discount (WELCOME10) -$13.00, Shipping Free, Total $117.00, with the pay button now reading 'Pay $117.00'.

1 evidence probe (NetworkRequest)
NetworkRequest {"mode":"detail","requestId":"1626.66"}
→ A POST network request with ID 1626.66 was made to http://localhost:3202/api/promo:
<request_summary>
The response had status 200 (OK).
</request_summary>
Initiated at Point:5 @ 149839.00ms
Events:
  request @ 149839ms
  request-body @ 149839ms
  response @ 150148ms
  response-body @ 150149ms
  request-done @ 150150ms
Request headers:
<requestHeaders>
sec-ch-ua: 
Content-Type: application/json
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/108.0.5359.0 Safari/537.36
sec-ch-ua-platform: 
</requestHeaders>
Response headers:
<responseHeaders>
keep-alive: timeout=5
date: Tue, 20 Oct 2026 00:03:05 GMT
connection: keep-alive
x-powered-by: Express
content-length: 62
etag: W/"3e-ZbeolwYF5E9nNdwrt6OAJdfHKiE"
content-type: application/json; charset=utf-8
</responseHeaders>

The request body was
:
<requestBody>
{"code":"WELCOME10"}
</requestBody>

The response body was
:
<responseBody>
{"code":"WELCOME10","percent":10,"label":"10% off your order"}
</responseBody>

_Previous: `requestId: "1626.65"` | Next: `requestId: "1626.67"`_
3
The app at 0:20.50:20.5
0:20.5

The shopper clicks the 'Pay $117.00' button (element .checkout-form submit, Checkout.jsx line 125) to place the order.

2 evidence probes (PlaywrightSteps, InspectElement)
PlaywrightSteps {"last":60,"mode":"steps","testIndex":0}
→ # Steps: QA Run: run-mvfvs2t3-aybt ❌ (last 60)

**60 steps** (showing 1-25 of 60)

  788. [165024ms, duration: 1ms] cdpSession.send
    at apply scripts/journey/run-script.bundle.cjs:31814:17

  🔄 **4x** frame.evaluate (steps 789-792)

  793. [165243ms, duration: 2ms] response.text
    at JourneyBrowserSession.recordOffsiteHandoffResponse scripts/journey/run-script.bundle.cjs:84518:36
    at _Page.<anonymous> scripts/journey/run-script.bundle.cjs:84931:17

  🔄 **7x** frame.evaluate (steps 794-800)

  801. [165640ms, duration: 2ms] frame.evaluate
    at readFrameProbe scripts/journey/run-script.bundle.cjs:11901:22
    at scripts/journey/run-script.bundle.cjs:11922:55
    at readSettleProbe scripts/journey/run-script.bundle.cjs:11922:44
    at waitForActionQuiet scripts/journey/run-script.bundle.cjs:11942:25

  802. [165694ms, duration: 4ms] frame.evaluate
    at readFrameProbe scripts/journey/run-script.bundle.cjs:11901:22
    at scripts/journey/run-script.bundle.cjs:11922:55
    at readSettleProbe scripts/journey/run-script.bundle.cjs:11922:44
    at waitForActionQuiet scripts/journey/run-script.bundle.cjs:11942:25

  803. [165698ms, duration: 502ms] page.evaluate
    at _RecordedPageObserver.flushRowsFor scripts/journey/run-script.bundle.cjs:86552:14
    at scripts/journey/run-script.bundle.cjs:86643:86
    at scripts/journey/run-script.bundle.cjs:681:22
    at measureOperation scripts/journey/run-script.bundle.cjs:679:16
    at _RecordedPageObserver.observeMeasured script…
InspectElement {"point":"Point:1","element":"html:nth-of-type(1) > body:nth-of-type(1) > div:nth-of-type(1) > main:nth-of-type(1) > div:nth-of-type(1) > form:nth-of-type(1) > button:nth-of-type(1)"}
→ Element:7 is `<button type="submit" class="btn btn-primary btn-block" disabled=""></button>`.
Element:7 is rendered by React component Checkout at Point:12:
Relevant code: http://localhost:3202/src/pages/Checkout.jsx line 125 column 8
No elements are obstructing the center point of this element.

Element:7 has 708px width and 49px height.
The width is set by these rules: 100% (100px)
Margin: top 0px right 0px bottom 0px left 0px.
Padding: top 14px right 14px bottom 14px left 14px.

Distances to its parent element:
- Top overflows parent by 502.00px
- Right is aligned with parent boundary
- Bottom overflows parent by 41.00px
- Left is aligned with parent boundary

### Parent Element:8

Element:8 is `<form class="checkout-form"></form>`.
Element:8 is rendered by React component Checkout at Point:13:
Relevant code: http://localhost:3202/src/pages/Checkout.jsx line 86 column 6

Element:8 has 708px width and 592px height.
Margin: top 0px right 0px bottom 0px left 0px.
Padding: top 0px right 0px bottom 0px left 0px.

Distances to its parent element:
- Top is aligned with parent boundary
- Right overflows parent by 372.00px
- Bottom is aligned with parent boundary
- Left is aligned with parent boundary

### Parent Element:4

Element:4 is `<div class="checkout"></div>`.
Element:4 is rendered by React component Checkout at Point:14:
Relevant code: http://localhost:3202/src/pages/Checkout.jsx line 85 column 4

Element:4 has 1080px width and 592px height.
Margin: top 0px right 0px bot…
4
The app at 0:22.30:22.3
0:22.3

The order confirmation page for Order #10422 shows the items (1x Paper Pendant Shade $38.00, 2x Clamp Task Lamp $92.00) and 'Total charged $130.00' — the undiscounted subtotal, with no discount shown anywhere.

1 evidence probe (NetworkRequest)
NetworkRequest {"mode":"detail","requestId":"1626.69"}
→ A GET network request with ID 1626.69 was made to http://localhost:3202/api/orders/10422:
<request_summary>
The response had status 200 (OK).
</request_summary>
Initiated at Point:2 @ 165017.00ms
Events:
  request @ 165017ms
  response @ 165233ms
  response-body @ 165234ms
  request-done @ 165234ms
Request headers:
<requestHeaders>
sec-ch-ua: 
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/108.0.5359.0 Safari/537.36
sec-ch-ua-platform: 
</requestHeaders>
Response headers:
<responseHeaders>
keep-alive: timeout=5
date: Tue, 20 Oct 2026 00:03:20 GMT
connection: keep-alive
x-powered-by: Express
content-length: 441
etag: W/"1b9-yp6IxMPzxtTo2IHpvOa9Yf5kcew"
content-type: application/json; charset=utf-8
</responseHeaders>

The request body was
 EMPTY.

The response body was
:
<responseBody>
{"id":"10422","createdAt":"2026-10-20T00:03:20.005Z","items":[{"productId":"p04","slug":"paper-pendant-shade","name":"Paper Pendant Shade","price":38,"color":"#efe6d6","qty":1},{"productId":"p03","slug":"clamp-task-lamp","name":"Clamp Task Lamp","price":46,"color":"#7a8a99","qty":2}],"shipping":{"name":"Alex Rivera","address":"214 Elm Street","city":"Portland","postal":"97205","country":"US"},"amount":130,"paymentToken":"tok_tyg49vtbfe"}
</responseBody>

_Previous: `requestId: "1626.68"` | Next: `requestId: "1626.70"`_

Steps to reproduce

1

Exercise the following scenario in the app and confirm it works:

2

The core shopper journey for Hearth & Field, starting on the storefront (shop listing surface): a shopper browses the All products grid, filters to a category, and sorts the listing; they add one product to the cart directly from the listing grid and open another product's detail page to add it from there, confirming the cart badge updates with the items; then they open the cart, review the line items and adjust a quantity, apply the promo code shown on the storefront banner (WELCOME10) and verify the discount changes the total, and proceed through checkout paying with the saved card, verifying an order confirmation is shown. This exercises the store's primary end-to-end commerce flow — browse → product page → cart management → promo checkout — and fails if any link in that chain is broken.

3

Additional checks:

4

The core shopper journey for Hearth & Field, starting on the storefront (shop listing surface): a shopper browses the All products grid, filters to a category, and sorts the listing; they add one product to the cart directly from the listing grid and open another product's detail page to add it from there, confirming the cart badge updates with the items; then they open the cart, review the line items and adjust a quantity, apply the promo code shown on the storefront banner (WELCOME10) and verify the discount changes the total, and proceed through checkout paying with the saved card, verifying an order confirmation is shown. This exercises the store's primary end-to-end commerce flow — browse → product page → cart management → promo checkout — and fails if any link in that chain is broken.

5

If the app cannot perform this or behaves incorrectly, report FAIL describing the defect; otherwise report DONE.

Root cause

In src/pages/Checkout.jsx, the order submit handler placeOrder is created with useCallback(..., [cart?.id]) and posts amount: total (line 56) from its closure. total is derived as round2(subtotal - discount + shipping) (line 34) where discount = subtotal * promo.percent / 100 (line 32). When the WELCOME10 promo is applied, setPromo re-renders and total falls from 130 to 117, but because the only dependency cart?.id is unchanged, React keeps the previously memoized handler which still closes over the old total = 130. Clicking 'Pay $117.00' therefore executes the stale closure and sends amount:130 to POST /api/orders (verified: request body {"cartId":"1335c46e-06eb-495c-8e0e-9392c5d6dee8","amount":130,...} at 164639ms, after the promo was applied at ~150000ms), so the placed order records the full undiscounted charge.

3 evidence probes (NetworkRequest, SearchSources)
NetworkRequest {"mode":"detail","requestId":"1626.67"}
→ A POST network request with ID 1626.67 was made to http://localhost:3202/api/orders:
<request_summary>
The response had status 201 (Created).
</request_summary>
Initiated at Point:1 @ 164639.00ms
Events:
  request @ 164639ms
  request-body @ 164639ms
  response @ 164959ms
  response-body @ 164960ms
  request-done @ 164960ms
Request headers:
<requestHeaders>
sec-ch-ua: 
Content-Type: application/json
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/108.0.5359.0 Safari/537.36
sec-ch-ua-platform: 
</requestHeaders>
Response headers:
<responseHeaders>
keep-alive: timeout=5
date: Tue, 20 Oct 2026 00:03:20 GMT
connection: keep-alive
x-powered-by: Express
content-length: 441
etag: W/"1b9-yp6IxMPzxtTo2IHpvOa9Yf5kcew"
content-type: application/json; charset=utf-8
</responseHeaders>

The request body was
:
<requestBody>
{"cartId":"1335c46e-06eb-495c-8e0e-9392c5d6dee8","amount":130,"token":"tok_tyg49vtbfe","shipping":{"name":"Alex Rivera","address":"214 Elm Street","city":"Portland","postal":"97205","country":"US"}}
</requestBody>

The response body was
:
<responseBody>
{"id":"10422","createdAt":"2026-10-20T00:03:20.005Z","items":[{"productId":"p04","slug":"paper-pendant-shade","name":"Paper Pendant Shade","price":38,"color":"#efe6d6","qty":1},{"productId":"p03","slug":"clamp-task-lamp","name":"Clamp Task Lamp","price":46,"color":"#7a8a99","qty":2}],"shipping":{"name":"Alex Rivera","address":"214 Elm Street","city":"P…
SearchSources {"pattern":"discount|promo"}
→ ### http://localhost:3202/src/api.js
 hits | L | code 
------|------|------
   1 |    1 | async function request(method, url, body) { 

   2 |   16 | export const getOffer = (cartId) => /*<HIT>*/request('GET', `/api/offers?cartId=${cartId}`); 
   1 |  *17 | export const checkPromo = (code) => request('POST', '/api/promo', { code }); 
   1 |   18 | export const createOrder = (order) => request('POST', '/api/orders', order);
### http://localhost:3202/src/pages/Checkout.jsx
 hits | L | code 
------|------|------
   1 |    1 | import { useCallback, useEffect, useState } from 'react'; 

     |   17 | export default function Checkout() { 

  13 |   20 |   const [country, setCountry] = useState('US'); 
  13 |  *21 |   const [promo, setPromo] = useState(null); 
  13 |  *22 |   const [promoCode, setPromoCode] = useState(''); 
  13 |  *23 |   const [promoError, setPromoError] = useState(''); 
  13 |   24 |   const [placing, setPlacing] = useState(false); 

  13 |   31 |   const subtotal = subtotalOf(items); 
   2 |  *32 |   const discount = promo ? /*<HIT>*/round2((subtotal * promo.percent) / 100) : 0; 
  13 |  *33 |   const shipping = shippingFor(country, subtotal - discount); 
  13 |  *34 |   const total = round2(subtotal - discount + shipping); 
     |   35 |  

     |   39 |     try { 
   1 |  *40 |       setPromo(await checkPromo(promoCode)); 
   1 |   41 |       setPromoCode(''); 

     |  149 |         ))} 
  13 | *150 |         <form className="promo" onSubmit={applyPromo}> 
  …
NetworkRequest {"mode":"detail","requestId":"1626.66"}
→ A POST network request with ID 1626.66 was made to http://localhost:3202/api/promo:
<request_summary>
The response had status 200 (OK).
</request_summary>
Initiated at Point:5 @ 149839.00ms
Events:
  request @ 149839ms
  request-body @ 149839ms
  response @ 150148ms
  response-body @ 150149ms
  request-done @ 150150ms
Request headers:
<requestHeaders>
sec-ch-ua: 
Content-Type: application/json
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/108.0.5359.0 Safari/537.36
sec-ch-ua-platform: 
</requestHeaders>
Response headers:
<responseHeaders>
keep-alive: timeout=5
date: Tue, 20 Oct 2026 00:03:05 GMT
connection: keep-alive
x-powered-by: Express
content-length: 62
etag: W/"3e-ZbeolwYF5E9nNdwrt6OAJdfHKiE"
content-type: application/json; charset=utf-8
</responseHeaders>

The request body was
:
<requestBody>
{"code":"WELCOME10"}
</requestBody>

The response body was
:
<responseBody>
{"code":"WELCOME10","percent":10,"label":"10% off your order"}
</responseBody>

_Previous: `requestId: "1626.65"` | Next: `requestId: "1626.67"`_

Root cause → actual behavior

1

The promo endpoint confirms WELCOME10 = 10% off ({"code":"WELCOME10","percent":10}), and the checkout UI recomputes the summary to Total $117.00 with the discount line -$13.00 — the app is fully aware of the discounted total at click time.

1 evidence probe (NetworkRequest)
NetworkRequest {"mode":"detail","requestId":"1626.66"}
→ A POST network request with ID 1626.66 was made to http://localhost:3202/api/promo:
<request_summary>
The response had status 200 (OK).
</request_summary>
Initiated at Point:5 @ 149839.00ms
Events:
  request @ 149839ms
  request-body @ 149839ms
  response @ 150148ms
  response-body @ 150149ms
  request-done @ 150150ms
Request headers:
<requestHeaders>
sec-ch-ua: 
Content-Type: application/json
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/108.0.5359.0 Safari/537.36
sec-ch-ua-platform: 
</requestHeaders>
Response headers:
<responseHeaders>
keep-alive: timeout=5
date: Tue, 20 Oct 2026 00:03:05 GMT
connection: keep-alive
x-powered-by: Express
content-length: 62
etag: W/"3e-ZbeolwYF5E9nNdwrt6OAJdfHKiE"
content-type: application/json; charset=utf-8
</responseHeaders>

The request body was
:
<requestBody>
{"code":"WELCOME10"}
</requestBody>

The response body was
:
<responseBody>
{"code":"WELCOME10","percent":10,"label":"10% off your order"}
</responseBody>

_Previous: `requestId: "1626.65"` | Next: `requestId: "1626.67"`_
2

Clicking Pay invokes the memoized placeOrder handler, which still holds the pre-promo total of 130 and posts {"amount":130,...} to POST /api/orders; the server (201) stores the order with amount 130.

1 evidence probe (NetworkRequest)
NetworkRequest {"mode":"detail","requestId":"1626.67"}
→ A POST network request with ID 1626.67 was made to http://localhost:3202/api/orders:
<request_summary>
The response had status 201 (Created).
</request_summary>
Initiated at Point:1 @ 164639.00ms
Events:
  request @ 164639ms
  request-body @ 164639ms
  response @ 164959ms
  response-body @ 164960ms
  request-done @ 164960ms
Request headers:
<requestHeaders>
sec-ch-ua: 
Content-Type: application/json
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/108.0.5359.0 Safari/537.36
sec-ch-ua-platform: 
</requestHeaders>
Response headers:
<responseHeaders>
keep-alive: timeout=5
date: Tue, 20 Oct 2026 00:03:20 GMT
connection: keep-alive
x-powered-by: Express
content-length: 441
etag: W/"1b9-yp6IxMPzxtTo2IHpvOa9Yf5kcew"
content-type: application/json; charset=utf-8
</responseHeaders>

The request body was
:
<requestBody>
{"cartId":"1335c46e-06eb-495c-8e0e-9392c5d6dee8","amount":130,"token":"tok_tyg49vtbfe","shipping":{"name":"Alex Rivera","address":"214 Elm Street","city":"Portland","postal":"97205","country":"US"}}
</requestBody>

The response body was
:
<responseBody>
{"id":"10422","createdAt":"2026-10-20T00:03:20.005Z","items":[{"productId":"p04","slug":"paper-pendant-shade","name":"Paper Pendant Shade","price":38,"color":"#efe6d6","qty":1},{"productId":"p03","slug":"clamp-task-lamp","name":"Clamp Task Lamp","price":46,"color":"#7a8a99","qty":2}],"shipping":{"name":"Alex Rivera","address":"214 Elm Street","city":"P…
3

The confirmation page fetches GET /api/orders/10422, whose response body is {"id":"10422",...,"amount":130}, so it renders 'Total charged $130.00' — the shopper is charged the undiscounted total and no discount appears on the confirmation.

1 evidence probe (NetworkRequest)
NetworkRequest {"mode":"detail","requestId":"1626.69"}
→ A GET network request with ID 1626.69 was made to http://localhost:3202/api/orders/10422:
<request_summary>
The response had status 200 (OK).
</request_summary>
Initiated at Point:2 @ 165017.00ms
Events:
  request @ 165017ms
  response @ 165233ms
  response-body @ 165234ms
  request-done @ 165234ms
Request headers:
<requestHeaders>
sec-ch-ua: 
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/108.0.5359.0 Safari/537.36
sec-ch-ua-platform: 
</requestHeaders>
Response headers:
<responseHeaders>
keep-alive: timeout=5
date: Tue, 20 Oct 2026 00:03:20 GMT
connection: keep-alive
x-powered-by: Express
content-length: 441
etag: W/"1b9-yp6IxMPzxtTo2IHpvOa9Yf5kcew"
content-type: application/json; charset=utf-8
</responseHeaders>

The request body was
 EMPTY.

The response body was
:
<responseBody>
{"id":"10422","createdAt":"2026-10-20T00:03:20.005Z","items":[{"productId":"p04","slug":"paper-pendant-shade","name":"Paper Pendant Shade","price":38,"color":"#efe6d6","qty":1},{"productId":"p03","slug":"clamp-task-lamp","name":"Clamp Task Lamp","price":46,"color":"#7a8a99","qty":2}],"shipping":{"name":"Alex Rivera","address":"214 Elm Street","city":"Portland","postal":"97205","country":"US"},"amount":130,"paymentToken":"tok_tyg49vtbfe"}
</responseBody>

_Previous: `requestId: "1626.68"` | Next: `requestId: "1626.70"`_

Is your app hiding bugs like this?

Replay QA explores every build, records what it finds, and writes the root cause.