The session ran 13h 27m, and the last thing we caught before closing was that the live site still ran the payment processor’s test keys.

By then we had put a card through the live payment account, the first payment it had ever taken. We had also walked the client billing flow screen by screen, which surfaced four defects the test suite could not see. All four are fixed and deployed. We built a 22-step walkthrough too, and moved it off a chat link and onto the internal tool itself, linked from the billing ticket.

What the real payment did and didn’t prove

Everything had been proven on localhost. The real-money payment went through the live account, but it said nothing about how the deployed site was configured. “A payment succeeds against the live account” and “the site can take a payment” are separate claims, and only the first had been shown. We filed tickets for the follow-ups.

The same night, the same shape

Around the same time we built a multi-tenant CRM from a plan. It lives in an org of its own beside the main one, so the asset is owned separately. It had a full schema, row-level security and an adversarial isolation suite. We ran that suite against the live database project, and it passed 28 assertions. It also fails when one expectation is falsified, so it measures something.

Going live caught four defects a container could not show. One was a real leak: commission_balances ran with definer rights and would have handed a rep the whole org’s commission totals.

What I check before calling billing done

A passing test run, or a successful payment from a development machine, tells you nothing about which keys the deployed site is using. The live site still runs test keys, so its key configuration needs its own check, and the live checks have to run against the live system.