Hero Background

Power Your Software Testing with AI Agents and Cloud

The Native AI-Agentic Cloud Platform to Supercharge Quality Engineering. Test Intelligently and Ship Faster.

Kane CLIPayments

Test a 3D Secure challenge without breaking the payment

Strong customer authentication interrupts a payment on purpose. Four steps check the challenge appears, approves, and leaves an authenticated record.

Published on:

Strong customer authentication is the one thing in a payment flow designed to interrupt it. A challenge dialog appears, control leaves your page, and whatever happens next decides whether the payment completes.

That interruption is what breaks naive automation, because a script written against the happy path has no idea the dialog exists. A plain English step does, because the dialog is described the way a person sees it.

The flow under test

A 3DS flow has three distinct states and a test that only checks the last one cannot tell you which of the first two failed.

  • The challenge is triggered - a dedicated 3DS test card produces a dialog rather than an immediate success.
  • The challenge carries the right context - the amount and the card the bank is asking about, so a customer can recognise the payment.
  • Approval returns cleanly - control comes back to the merchant page and the payment succeeds.
  • The record says it was authenticated - a badge on the receipt, which is what shifts liability on a disputed charge.

The last point is commercial rather than technical. An authenticated payment and an unauthenticated one carry different liability, so a receipt that omits the badge is a finance problem even when the money moved.

Note

Note: Kane CLI can pause a run for a one-time code and continue, so an authentication step does not force a flow to be split in two. See it on TestMu AI. Try free!

The test file

The card number is the trigger. Using the 3DS test card rather than the standard one is what makes the challenge appear at all, and the rest of the file reads like any other checkout test.

---
mode: testing
url: https://my-testing-repo-main.vercel.app/stripe-clone-app/checkout?reset=true
max_steps: 40
tags: [stripe, payments, authentication]
---

# Stripey 9.2: 3DS challenge

Catalog objective: pay with a 3DS test card and approve the challenge.
Key assertion: the challenge completes and the payment succeeds.

## Use the 3DS test card
Type "4000 0025 0000 3155" into "Card number", "12 / 34" into "Expiry", "123" into "CVC", and click "Pay $240.00".

## Verify the challenge appears
Verify a dialog titled "3D Secure authentication" appears saying the bank needs to verify this payment, showing "Amount" of "$240.00" and "Card" of "Visa ••••3155".

## Approve the challenge
Click "Approve payment" and verify a green banner titled "Payment successful" appears.

## Verify the payment is marked as authenticated
Verify the receipt shows "Card" of "Visa ••••3155", "Status" of "succeeded" and a badge reading "3D Secure authenticated".

The dialog assertion names the amount and the masked card together, because a challenge showing the wrong amount is worse than no challenge: the customer approves a figure that is not the one being charged.

Step by step coverage

Each step in the file is doing one job, and the table below is the fastest way to see whether the flow covers what it should before you run it.

StepWhat it proves
Use the 3DS test cardThe card triggers authentication rather than settling directly
Verify the challenge appearsThe dialog renders with the correct amount and masked card
Approve the challengeControl returns to the merchant page and the payment succeeds
Verify the payment is marked as authenticatedThe receipt carries the 3D Secure badge that governs liability

The assertions are written against visible text, so the file survives a change to the challenge dialog's markup. What it does not survive, correctly, is a change to the amount the customer is asked to approve.

Next-generation test execution with TestMu AI

Running it

kane-cli testmd run tests/stripe/3ds-challenge_test.md

Kane CLI resolves each sentence against the live page, so the challenge dialog is handled as an ordinary part of the flow rather than as a special case the script has to anticipate.

Authentication steps that need a real code are the usual reason a payment flow cannot be automated at all. The three Kane CLI modes covers when to run this interactively rather than headless, and running flows in CI covers the headless case.

Author

...

Bhawana

Blogs: 77

  • Twitter
  • Linkedin

Bhawana is a Community Evangelist at TestMu AI with over 3 years of experience creating technically accurate, strategy-driven content in software testing. She has authored 50+ blogs on test automation, cross-browser testing, mobile testing, and real device testing. She also serves as Product Marketing Manager for Kane CLI, the command-line tool that runs browser automation from the terminal using natural-language flows in a real Chrome browser. Bhawana is certified in KaneAI, Selenium, Appium, Playwright, and Cypress, reflecting her hands-on knowledge of modern automation practices. On LinkedIn, she is followed by 6000+ QA engineers, testers, AI automation testers, and tech leaders.

Add to Google preferred sources

Summarise with AI

Copied to Clipboard!
...

3000+ Browsers. One Platform.

See exactly how your site performs everywhere.

Try it free
...

Write Tests in Plain English with KaneAI

Create, debug, and evolve tests using natural language.

Try for free

3D Secure Testing FAQs

Did you find this page helpful?

TestMu AI forEnterprise

Get access to solutions built on Enterprise
grade security, privacy, & compliance

  • Advanced access controls
  • Advanced data retention rules
  • Advanced Local Testing
  • Premium Support options
  • Early access to beta features
  • Private Slack Channel
  • Unlimited Manual Accessibility DevTools Tests