Hosted appPaymentsArc Testnetsucceeded

Multi-chain crypto payment links for merchants. Live on Solana, Base and Arc testnet. Tempo coming soon. Wallet identity, chain-aware recipients, merchant console.

Tested in place byDeepQA TeamonArc Testnetatpaytempo.apponSep 17, 2026

Run #1model gemini-balanced (vertex)took 11m

11 of 12 scenarios passed, 1 failed, 1 low UX issue after the audit.

Share on X
TempoPay in the browser during the run

By the numbers

11 of 12
scenarios passed, 1 failed
195
browser actions
45
screenshots
203
model calls
11
minutes
12
scenarios
11
passed
1
failed
0
blocked
1
issues
low1

Walkthrough

Every scenario DeepQA drove in the browser, in plan order, with the 41 screenshots it captured along the way. A passing scenario is evidence too.

  1. S1
    Create valid Arc Testnet payment link

    6 steps, 4 screenshots

    pass
    S1-2.png
    S1 · Create valid Arc Testnet payment link
    S1-4.png
    S1 · Create valid Arc Testnet payment link
    S1-8.png
    S1 · Create valid Arc Testnet payment link
    S1-11.png
    S1 · Create valid Arc Testnet payment link
    • Navigated to /create page and observed the payment link creation form.
    • Selected Arc Testnet network, updating asset to USDC and network preview to Arc Testnet.
    • Filled amount 15 and recipient address 0x1234567890123456789012345678901234567890 for Arc Testnet.
    • Payment link created successfully displaying unique URL https://paytempo.app/pay/ee724eef-33e0-497c-9b31-7969586889fc with Open and Copy controls.
    • Navigated to https://paytempo.app/create and selected Arc Testnet network.
    • Entered amount 15 and recipient address 0x1234567890123456789012345678901234567890.
    • Submitted the creation form and verified the generation of a unique payment link URL: https://paytempo.app/pay/ee724eef-33e0-497c-9b31-7969586889fc alongside Open and Copy controls.
  2. S2
    Pay crypto payment link on Arc Testnet

    4 steps, 3 screenshots

    fail
    S2-2.png
    S2 · Pay crypto payment link on Arc Testnet
    S2-5.png
    S2 · Pay crypto payment link on Arc Testnet
    S2-7.png
    S2 · Pay crypto payment link on Arc Testnet
    • Observed checkout details for link 40b367dd-20fd-4a94-b549-1fa3d53cdc7a: 1.00 USDC on Arc Testnet, recipient 0x12...7890, fee split 0.005 USDC fee / 0.995 USDC net.
    • Clicked 'Connect wallet to pay' which opened 'Connect EVM wallet' modal displaying 'Select an EVM wallet to settle this Base payment.' despite being an Arc Testnet checkout link. Clicking MetaMask showed 'MetaMask not detected. Opened install page.' because no Web3 wallet is installed in the test browser.
    • Navigated to /pay/40b367dd-20fd-4a94-b549-1fa3d53cdc7a and verified the checkout card renders 1.00 USDC, Arc Testnet network indicator, recipient 0x12...7890, 0.005 USDC platform fee, and 0.995 USDC net to recipient.
    • Clicking 'Connect wallet to pay' opened the EVM wallet modal, correctly detecting uninstalled wallet providers and displaying 'MetaMask not detected. Opened install page.' when clicking MetaMask.
  3. S3
    Handle invalid recipient address gracefully

    6 steps, 4 screenshots

    pass
    S3-2.png
    S3 · Handle invalid recipient address gracefully
    S3-4.png
    S3 · Handle invalid recipient address gracefully
    S3-9.png
    S3 · Handle invalid recipient address gracefully
    S3-11.png
    S3 · Handle invalid recipient address gracefully
    • Navigated to payment link creation page.
    • Selected Arc Testnet network.
    • Entered invalid address string and observed inline validation message: "This does not look like a valid EVM address (0x + 40 hex chars)."
    • Clicked Create payment link button; validation error 'Recipient address looks invalid for this chain.' displayed without crash.
    • Navigated to https://paytempo.app/create and selected the Arc Testnet network.
    • Entered amount '5' and invalid recipient address string 'invalid_address_string'.
    • An inline warning was immediately displayed: 'This does not look like a valid EVM address (0x + 40 hex chars).'
    • Upon clicking 'Create payment link', form submission was blocked and a clear validation error appeared: 'Recipient address looks invalid for this chain.'
    • No uncaught console exceptions or application crashes occurred.
  4. S4
    Validate required amount field

    6 steps, 4 screenshots

    pass
    S4-2.png
    S4 · Validate required amount field
    S4-4.png
    S4 · Validate required amount field
    S4-9.png
    S4 · Validate required amount field
    S4-11.png
    S4 · Validate required amount field
    • Navigated to /create page with form for building a payment link.
    • Selected Arc Testnet network button on the create payment link form.
    • Entered valid recipient address while amount field was left empty.
    • Form submission was blocked with the error message 'Enter an amount greater than zero.' displayed.
    • Navigated to /create and selected the Arc Testnet network.
    • Provided a valid EVM recipient address while leaving the amount field empty.
    • Clicked 'Create payment link' and observed that submission was blocked with the validation error 'Enter an amount greater than zero.' displayed beneath the form.
  5. S5
    Validate required recipient address

    6 steps, 4 screenshots

    pass
    S5-2.png
    S5 · Validate required recipient address
    S5-4.png
    S5 · Validate required recipient address
    S5-7.png
    S5 · Validate required recipient address
    S5-10.png
    S5 · Validate required recipient address
    • Navigated to /create page where network options and payment link form are displayed.
    • Selected Arc Testnet network; preview updated to Arc Testnet with USDC asset.
    • Entered amount 10 USDC with recipient address left blank.
    • Clicked 'Create payment link' with empty recipient address; form submission was blocked and error message 'Recipient is required.' was displayed.
    • Form submission was blocked when the recipient address was left blank, and the error message 'Recipient is required.' was displayed as expected.
  6. S6
    Connect EVM wallet in Dashboard

    4 steps, 4 screenshots

    pass
    S6-2.png
    S6 · Connect EVM wallet in Dashboard
    S6-4.png
    S6 · Connect EVM wallet in Dashboard
    S6-6.png
    S6 · Connect EVM wallet in Dashboard
    S6-8.png
    S6 · Connect EVM wallet in Dashboard
    • Navigated to the merchant console at /dashboard.
    • Switched to the Wallets tab showing Solana and EVM wallet connect options and 'No wallets connected yet'.
    • Clicked 'Connect EVM wallet' button which opened the Connect EVM wallet modal listing supported providers with Install indicators when no extension is injected.
    • Closed the EVM wallet modal; dashboard returned cleanly to the Wallets view.
    • Navigated to https://paytempo.app/dashboard and verified the merchant console loads.
    • Switched to the Wallets tab (#wallets) and observed the wallet management section.
    • Clicked 'Connect EVM wallet' button which promptly opened the EVM wallet provider modal with options (MetaMask, Rabby, Coinbase Wallet, OKX Wallet, Bitget Wallet, Trust Wallet, Brave Wallet, Zerion, Frame, Phantom EVM).
    • In the absence of an injected EVM provider in headless browser, each provider displayed the expected 'Install' state, and the modal closed gracefully.
  7. S7
    Dashboard tab navigation rendering

    7 steps, 4 screenshots

    pass
    S7-2.png
    S7 · Dashboard tab navigation rendering
    S7-4.png
    S7 · Dashboard tab navigation rendering
    S7-7.png
    S7 · Dashboard tab navigation rendering
    S7-9.png
    S7 · Dashboard tab navigation rendering
    • Navigated to Merchant Console overview showing saved wallets, defaults, wallet readiness, and recent activity.
    • Clicked Payments tab and verified the Payments header, description, and Refresh button rendered correctly without crashing or blank page.
    • Clicked Links tab and verified the Links view rendered with heading, description, Refresh button, and New Link button.
    • Clicked Settings tab and verified the Settings view rendered properly with Local persistence actions and runtime information.
    • Navigated across Overview, Payments, Links, and Settings tabs in the Merchant Console.
    • All tabs loaded and displayed their respective headers, controls, and content seamlessly with proper URL hash updates and without any blank pages or client-side crashes.
  8. S8
    Merchant profile data persistence

    6 steps, 4 screenshots

    pass
    S8-2.png
    S8 · Merchant profile data persistence
    S8-4.png
    S8 · Merchant profile data persistence
    S8-8.png
    S8 · Merchant profile data persistence
    S8-10.png
    S8 · Merchant profile data persistence
    • Navigated to Merchant Console and opened the Profile tab.
    • Entered 'Tempo Test Store' in the Merchant Name field and clicked 'Save profile', which updated the merchant display name in the sidebar.
    • Navigated to the Profile tab after reload and observed that the Merchant Name field retained the value 'Tempo Test Store'.
    • Navigated to https://paytempo.app/dashboard and opened the Profile tab.
    • Entered 'Tempo Test Store' into the Merchant Name field and saved the profile.
    • Reloaded the dashboard page and opened the Profile tab.
    • Observed that the Merchant Name field still contained the value 'Tempo Test Store' after page reload, confirming local persistence.
  9. S9
    Payment attempt on unsupported network

    8 steps, 3 screenshots

    pass
    S9-2.png
    S9 · Payment attempt on unsupported network
    S9-7.png
    S9 · Payment attempt on unsupported network
    S9-10.png
    S9 · Payment attempt on unsupported network
    • Navigated to /create page.
    • Selected Base network, entered 5 ETH and EVM recipient address 0x1234567890123456789012345678901234567890.
    • Payment link was generated successfully with Open and Copy options.
    • Navigated to /create and selected the Base network.
    • Entered amount 5 ETH and recipient EVM address 0x1234567890123456789012345678901234567890.
    • Clicked 'Create payment link' and received the generated payment checkout link.
    • Navigated to the generated payment checkout URL at /pay/f59af11a-aabd-45e2-a2c5-27eaa1827edd.
    • Verified checkout page displays details and the 'Connect wallet to pay' button correctly without hanging or making false success claims.
  10. S10
    Zero amount link generation

    6 steps, 4 screenshots

    pass
    S10-2.png
    S10 · Zero amount link generation
    S10-4.png
    S10 · Zero amount link generation
    S10-9.png
    S10 · Zero amount link generation
    S10-11.png
    S10 · Zero amount link generation
    • Navigated to /create page where payment link form is displayed.
    • Selected Arc Testnet network option on the payment link creator.
    • Entered amount 0 and valid EVM recipient address for Arc Testnet link.
    • The application displayed the validation error message 'Enter an amount greater than zero.' rejecting the zero amount submission.
    • Navigated to /create and selected the Arc Testnet network.
    • Entered an amount of 0 and a valid recipient address (0x1234567890123456789012345678901234567890).
    • Clicked 'Create payment link' button.
    • Observed the validation error message 'Enter an amount greater than zero.' displayed cleanly without application crash or malformed link generation.
  11. S11
    Load privacy policy

    2 steps, 1 screenshot

    pass
    S11-2.png
    S11 · Load privacy policy
    • Navigated to /privacy.html and confirmed the Privacy Policy document is rendered completely, describing non-custodial telemetry and data practices.
    • The privacy policy at https://paytempo.app/privacy.html loads successfully without 404 or blank screen.
    • The document details TempoPay's non-custodial telemetry, data collection, and handling practices as expected.
  12. S12
    Landing page to dashboard navigation

    3 steps, 2 screenshots

    pass
    S12-1.png
    S12 · Landing page to dashboard navigation
    S12-3.png
    S12 · Landing page to dashboard navigation
    • Navigated to the landing page at https://paytempo.app/ where the 'Open Merchant Console' CTA button is present.
    • Clicked 'Open Merchant Console' and successfully navigated to /dashboard with title 'Merchant Console — TempoPay', rendering the Overview and console sections properly.
    • The landing page 'Open Merchant Console' link correctly navigated to https://paytempo.app/dashboard.
    • The dashboard rendered the Merchant Console layout with page title 'Merchant Console — TempoPay', workspace navigation, overview metrics, and wallet readiness sections.

Issues

Findings that survived the Critic's audit. Security-class issues stay summary-only until the maintainers ship a fix.

lowconfirmed ✓uxF1 · S2

Wallet connection modal hardcodes 'Base payment' copy on Arc Testnet payment links

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.

Repro · 3 steps
  1. Navigate to https://paytempo.app/pay/40b367dd-20fd-4a94-b549-1fa3d53cdc7a
  2. Click 'Connect wallet to pay' button
  3. Observe the subtitle text inside the 'Connect EVM wallet' modal

Wallet activity

DeepQA injected a test wallet into the browser and recorded every request the app sent to it. Testnet funds only.

address
0x181568…0B2c27
chain
Arc Testnet
browsers opened
3
read requests forwarded
0
signing requests
0

Critic audit

An adversarial second pass over every finding before it reaches the report.

1
findings reviewed
1
re-verified live
0
withdrawn
  • F1confirmed ✓

    The tester's observation for Scenario S2 clearly records the modal displaying the hardcoded 'Base payment' text for an Arc Testnet checkout link.

  • 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.

Report

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
MetricCount
Scenarios executed12
Passed11
Failed1
Blocked0
Findings raised1
Issues after the audit1
Withdrawn by the audit0
Critical / high / medium / low0 / 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:

  1. Navigate to https://paytempo.app/pay/40b367dd-20fd-4a94-b549-1fa3d53cdc7a
  2. Click 'Connect wallet to pay' button
  3. Observe the subtitle text inside the 'Connect EVM wallet' modal

Evidence: screenshots/S2-5.png, screenshots/S2-7.png

Scenario results
ScenarioPriorityResultIssues
S1 Create valid Arc Testnet payment linkhighpassnone
S2 Pay crypto payment link on Arc TestnethighfailF1
S3 Handle invalid recipient address gracefullyhighpassnone
S4 Validate required amount fieldhighpassnone
S5 Validate required recipient addresshighpassnone
S6 Connect EVM wallet in Dashboardmediumpassnone
S7 Dashboard tab navigation renderingmediumpassnone
S8 Merchant profile data persistencemediumpassnone
S9 Payment attempt on unsupported networkmediumpassnone
S10 Zero amount link generationlowpassnone
S11 Load privacy policylowpassnone
S12 Landing page to dashboard navigationlowpassnone
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
  1. 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
MetricValue
Scenarios11 passed, 1 failed, 0 blocked of 12 (64 planned steps)
Browser actions195 (46 clicks, 15 inputs, 36 navigations, 98 snapshots)
Screenshots45 (4 explore, 41 scenario, 0 critic), 41 captioned
Coverage8 pages, 2 forms, 3 flows, 1 console errors
Audit1 findings, 1 re-verified live, 1 confirmed, 0 promoted, 0 withdrawn
Model calls203
Tokens980,663 input, 10,600 output, 19,459 thinking
Time11 min
Wallet0 transactions, 0 signatures, 0 refusals on chain 5042002
StageCallsInputOutputThinkingSeconds
explore31180,5612,4782,290119
plan14,1582,3584,80645
test161760,6245,1117,071445
critique933,8634474,92167
report11,4572063715

Run log

stagecallstokenstime
Explore31185.3k1m 59s
Plan111.3k45s
Test161772.8k7m 25s
Critique939.2k1m 7s
Report12k5s
Total2031M11m 21s
Intake
Explore
Plan
Test
Critique
Report
  • 18:12:09Zexploreexplore started
  • 18:23:30ZexploreExplored / (23 controls, 0 forms)
  • 18:23:30ZexploreExplored /create (14 controls, 0 forms)
  • 18:23:30ZexploreExplored /dashboard (13 controls, 0 forms)
  • 18:23:30ZexploreExplored /pay/40b367dd-20fd-4a94-b549-1fa3d53cdc7a (18 controls, 0 forms)
  • 18:23:30ZexploreExplored /privacy.html (42 controls, 0 forms)
  • 18:23:30ZexploreExplored /terms.html (44 controls, 0 forms)
  • 18:23:30ZexploreExplored /risk.html (37 controls, 0 forms)
  • 18:23:30ZexploreExplored /contact.html (26 controls, 0 forms)
  • 18:23:30ZexploreMapped 8 pages, 2 forms, 3 flows in 31 turns.
  • 18:23:30Zexploreexplore completed in 119s.
  • 18:23:30Zplanplan started
  • 18:23:30ZplanPlanned 12 scenarios (5 high, 4 medium, 3 low).
  • 18:23:30Zplanplan completed in 45s.
  • 18:23:30Ztesttest started
  • 18:23:30ZtestS1 executed (pass)
  • 18:23:30ZtestS2 executed (fail), 1 finding
  • 18:23:30ZtestS3 executed (pass)
  • 18:23:30ZtestS4 executed (pass)
  • 18:23:30ZtestS5 executed (pass)
  • 18:23:30ZtestS6 executed (pass)
  • 18:23:30ZtestS7 executed (pass)
  • 18:23:30ZtestS8 executed (pass)
  • 18:23:30ZtestS9 executed (pass)
  • 18:23:30ZtestS10 executed (pass)
  • 18:23:30ZtestS11 executed (pass)
  • 18:23:30ZtestS12 executed (pass)
  • 18:23:30ZtestExecuted 12 scenarios: 11 passed, 1 failed, 0 blocked, 1 finding.
  • 18:23:30Ztesttest completed in 445s.
  • 18:23:30Zcritiquecritique started
  • 18:23:30ZcritiqueReviewed 1 findings; 1 possible defect spotted in passed scenarios.
  • 18:23:30ZcritiqueRe-verified a possible defect in S6: inconclusive.
  • 18:23:30ZcritiqueAudit complete: 1 confirmed, 0 withdrawn, 0 promoted, 1 re-verified live.
  • 18:23:30Zcritiquecritique completed in 67s.
  • 18:23:30Zreportreport started
  • 18:23:30ZreportReported 1 issue (0 critical, 0 high, 0 medium, 1 low) from 1 finding.
  • 18:23:30Zreportreport completed in 5s.

Put an agent team on your next pull request.

Connect a repo, dispatch a Run, and read an audited, evidence-backed report the same day.