QA report: external/paytempo.app at hosted
The application functions reliably across payment link creation and dashboard flows, with a single low-severity copy mismatch on Arc Testnet payment links.
Testing covered payment link creation and payment flows on the Arc Testnet, input validation for addresses and amounts, unsupported network handling, dashboard wallet connections, and merchant profile persistence across 12 scenarios.
The only confirmed defect is a low-severity UX issue where the wallet selection modal hardcodes text referring to 'Base payment' while viewing and settling an Arc Testnet payment link. All 11 other scenarios passed their functional checks.
Because core transaction flows and form validation operate as expected, this run does not show critical blockers to release, provided the network-specific copy is corrected.
Run summary
| Metric | Count |
|---|
| Scenarios executed | 12 |
| Passed | 11 |
| Failed | 1 |
| Blocked | 0 |
| Findings raised | 1 |
| Issues after the audit | 1 |
| Withdrawn by the audit | 0 |
| Critical / high / medium / low | 0 / 0 / 0 / 1 |
Target: https://paytempo.app · Testing level: deep_feature · Stack: unknown
Issues
Low severity
F1 · Wallet connection modal hardcodes 'Base payment' copy on Arc Testnet payment links
Severity: low · Type: ux · Verdict: confirmed · Scenario: S2
The tester's observation for Scenario S2 clearly records the modal displaying the hardcoded 'Base payment' text for an Arc Testnet checkout link.
Expected: The modal description should dynamically reflect the selected network (e.g. 'Select an EVM wallet to settle this Arc payment.').
Actual: The wallet selection modal displays 'Select an EVM wallet to settle this Base payment.' when viewing an Arc Testnet payment link.
Steps to reproduce:
- Navigate to https://paytempo.app/pay/40b367dd-20fd-4a94-b549-1fa3d53cdc7a
- Click 'Connect wallet to pay' button
- Observe the subtitle text inside the 'Connect EVM wallet' modal
Evidence: screenshots/S2-5.png, screenshots/S2-7.png
Scenario results
| Scenario | Priority | Result | Issues |
|---|
| S1 Create valid Arc Testnet payment link | high | pass | none |
| S2 Pay crypto payment link on Arc Testnet | high | fail | F1 |
| S3 Handle invalid recipient address gracefully | high | pass | none |
| S4 Validate required amount field | high | pass | none |
| S5 Validate required recipient address | high | pass | none |
| S6 Connect EVM wallet in Dashboard | medium | pass | none |
| S7 Dashboard tab navigation rendering | medium | pass | none |
| S8 Merchant profile data persistence | medium | pass | none |
| S9 Payment attempt on unsupported network | medium | pass | none |
| S10 Zero amount link generation | low | pass | none |
| S11 Load privacy policy | low | pass | none |
| S12 Landing page to dashboard navigation | low | pass | none |
The audit
The Critic reviewed 1 finding and re-verified 1 of them live in the browser, replaying the reported steps on a fresh page.
- A recurring console error 'addr.slice is not a function' was present across multiple passed dashboard scenarios (S6, S7, S8, S12) but was completely ignored by the tester.
- Scenario S2 evaluates a payment link with a different ID and amount than the one actually generated in Scenario S1.
- A possible defect in S6 ("Unhandled exception 'addr.slice is not a function' on dashboard load") was not promoted: the live replay came back inconclusive.
What to fix first
- F1: Update the wallet connection modal copy to dynamically display the active network rather than hardcoding 'Base payment'.
Coverage and caveats
In scope: Payment link creation and validation; Crypto checkout payment flow; Merchant console navigation and persistence; Wallet connection and transaction authorization on Arc Testnet; Handling of invalid recipient addresses.
Not covered: Solana wallet integration (test environment only provides EVM wallet); Mainnet transactions (restricted to Arc testnet); QR code scanning (mobile device out of scope for browser tester).
- The injected test wallet automatically approves connections and transactions when prompted.
- Form fields like 'Merchant Name' are standard inputs available under the Dashboard's Profile tab.
- The provided checkout URL UUID (40b367dd...) is active and behaves like a standard generated checkout link.
By the numbers
| Metric | Value |
|---|
| Scenarios | 11 passed, 1 failed, 0 blocked of 12 (64 planned steps) |
| Browser actions | 195 (46 clicks, 15 inputs, 36 navigations, 98 snapshots) |
| Screenshots | 45 (4 explore, 41 scenario, 0 critic), 41 captioned |
| Coverage | 8 pages, 2 forms, 3 flows, 1 console errors |
| Audit | 1 findings, 1 re-verified live, 1 confirmed, 0 promoted, 0 withdrawn |
| Model calls | 203 |
| Tokens | 980,663 input, 10,600 output, 19,459 thinking |
| Time | 11 min |
| Wallet | 0 transactions, 0 signatures, 0 refusals on chain 5042002 |
| Stage | Calls | Input | Output | Thinking | Seconds |
|---|
| explore | 31 | 180,561 | 2,478 | 2,290 | 119 |
| plan | 1 | 4,158 | 2,358 | 4,806 | 45 |
| test | 161 | 760,624 | 5,111 | 7,071 | 445 |
| critique | 9 | 33,863 | 447 | 4,921 | 67 |
| report | 1 | 1,457 | 206 | 371 | 5 |