Stripe checkout
Skill ncklrs/claude-chrome-user-testing/skills/stripe-checkout
Claude Code plugin for persona-based user testing. Simulates Boomers, Millennials, Gen Z, and Gen Alpha users to find UX issues before real users do.From the repository description
npx -y skills add ncklrs/claude-chrome-user-testing --skill stripe-checkoutAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 19 stars19 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.7 KB, as published. Nobody here has run it
Stripe Checkout Testing Skill
This skill provides guidance for testing Stripe checkout flows with any persona. It handles test card data, form detection, and payment-specific narration.
Purpose
Enable realistic user testing of Stripe payment flows using official test cards, with persona-appropriate reactions to checkout experiences.
Test Card Reference
Load card data from test-cards.json. Key scenarios:
| Scenario | Card | When to Use |
|---|---|---|
success | 4242...4242 | Happy path checkout |
decline | 4000...0002 | Test error handling |
3ds-required | 4000...3155 | Test 3D Secure flow |
insufficient | 4000...9995 | Test specific decline reason |
amex | 3782...0005 | Test Amex (4-digit CVC) |
Default Test Values
Always use these unless testing specific scenarios:
- Expiry: 12/34 (any future date works)
- CVC: 123 (or 1234 for Amex)
- ZIP: 12345
- Name: Test User (or persona's name)
- Email: Use
--emailflag value, or default to [email protected]
Stripe Form Detection
Hosted Checkout (checkout.stripe.com)
When redirected to Stripe's hosted checkout:
URL contains: checkout.stripe.com
Indicators:
- Stripe branding visible
- Email field at top
- Card element with card icon
- "Pay" button with amount
Embedded Elements
When Stripe Elements are embedded in the page:
Look for iframes with:
- name containing "__privateStripeFrame"
- src containing "js.stripe.com"
Common element patterns:
- Single card element (all-in-one)
- Separate: card number, expiry, CVC fields
- Payment Request Button (Apple Pay / Google Pay)
Detection Script
Use browser_evaluate to detect Stripe:
(function() {
// Check for hosted checkout
if (window.location.hostname === 'checkout.stripe.com') {
return { type: 'hosted', detected: true };
}
// Check for embedded Elements
var stripeFrames = document.querySelectorAll('iframe[name*="__privateStripeFrame"]');
if (stripeFrames.length > 0) {
return {
type: 'elements',
detected: true,
frameCount: stripeFrames.length
};
}
// Check for Payment Request Button
var prButton = document.querySelector('[data-testid="payment-request-button"]');
if (prButton) {
return { type: 'payment-request', detected: true };
}
return { detected: false };
})();
Filling Stripe Forms
For Hosted Checkout
Fields appear in the main document - use standard form filling:
- Email: Use
browser_typeon email field - Card: The card element is a single field - type full card number
- Expiry: Type MM/YY format
- CVC: Type 3 digits (4 for Amex)
- Name: Type cardholder name
- ZIP: Type postal code if shown
For Embedded Elements
Elements are in iframes - interaction requires focusing the iframe:
- Click/focus on the card element to activate it
- Type card number directly (it auto-formats)
- Tab to expiry, type MM/YY
- Tab to CVC, type digits
- Tab to submit or click Pay button
Auto-Fill Approach
Since card entry should be fast (per user's preference):
1. Get test card from scenario
2. Use browser_fill_form or browser_type to fill all fields quickly
3. No character-by-character typing
4. Submit immediately after filling
Payment-Specific Narration
Persona Expressions for Payment
Add these to persona narration when testing checkout:
Boomer Tech-Averse:
- "Okay, this is the payment part. Let me make sure this is secure..."
- "I see the little lock icon up there, that's good."
- "Now where do I put my card number? Is this the right field?"
- "Wait, should I put the spaces? Let me try without..."
- "Oh good, it went through! I was nervous there for a second."
Boomer Tech-Friendly:
- "Alright, payment time. This looks like my bank's site."
- "Nice, they take all the major cards."
- "Let me get my card from my wallet... okay, ready."
- "Good, it shows the amount clearly. That's what I expected."
Millennial Tech-Skeptic:
- "Let me verify this is actually Stripe... yep, secure iframe."
- "Why do they need my phone number for this?"
- "At least they're not storing my card by default."
- "Interesting they don't have PayPal. That's a choice."
- "The price breakdown is clear, no hidden fees. Respect."
Gen Z Digital Native:
- "Ugh no Apple Pay? That's annoying."
- "Wait I have to TYPE my card number? What year is this?"
- "Okay fine, let me find my card... where did I put it..."
- "types quickly Done. Let's go."
- "Nice, confirmation came through instantly. W."
Gen Alpha Tablet Kid:
- "Mommy needs to help with this part..."
- "Lots of numbers! Like math!"
- "Why can't I just tap? Tap tap tap!"
Impulse Buyer:
- "Just take my money! Where's Apple Pay?"
- "Ugh, account creation? SKIP. Guest checkout, please."
- "Finally. Pay now. Done. Moving on."
Comparison Shopper:
- "Let me verify the total one more time..."
- "SSL certificate... Stripe... okay, this is legit."
- "I should screenshot this for my records."
Frustration Triggers (Payment)
Watch for these and react appropriately:
- No express checkout options (Apple Pay, Google Pay)
- Required account creation before payment
- Unexpected fees appearing at checkout
- Shipping cost not shown until payment page
- Payment form errors with unclear messages
- 3D Secure popups (especially unexpected)
- Slow payment processing (>3 seconds)
- No order confirmation displayed
- Receipt email not arriving
Positive Reactions (Payment)
Note and appreciate these:
- Apple Pay / Google Pay available
- Guest checkout option
- Clear price breakdown with no surprises
- Stripe badge / security indicators visible
- Instant confirmation with order number
- Receipt email arrives quickly
- Saved payment option for returning users
3D Secure Handling
When 3ds-required card triggers authentication:
- Detect Modal: Look for Stripe 3DS iframe/modal
- Narrate: Express surprise/concern based on persona
- Complete: In test mode, there's usually a "Complete authentication" button
- Continue: Return to confirmation flow
Persona reactions to 3DS:
- Tech-averse: "Oh no, what's this popup? Is something wrong?"
- Tech-friendly: "Ah, extra security. Like my bank does."
- Tech-skeptic: "3D Secure... okay, that's actually good."
- Digital native: "Ugh, another step? Just let me pay!"
Report Section: Payment Experience
Add this section to reports when --stripe flag is used:
## Payment Experience
### Checkout Summary
- **Checkout Type**: Stripe Elements (embedded) / Hosted
- **Express Options**: Apple Pay [Yes/No], Google Pay [Yes/No]
- **Guest Checkout**: [Available/Required Account]
- **Test Card Used**: [scenario] ([card number prefix]...)
- **3D Secure**: [Triggered/Not Triggered]
- **Result**: [Payment Successful/Declined/Error]
### Payment Flow Timeline
1. [Time] Reached checkout page
2. [Time] Started filling payment form
3. [Time] Submitted payment
4. [Time] Received confirmation
### Payment Friction Points
- [List issues that slowed or frustrated the payment process]
### Payment Positives
- [List things that made payment smooth or trustworthy]
### Security Perception
- [How secure did the checkout feel to this persona?]
Integration with Main Testing Flow
When --stripe flag is active on /user-test or /stripe-test is used:
- Pre-checkout: Test normal flows until reaching checkout
- Checkout Detection: Identify Stripe form type
- Express Options Check: Note if Apple Pay / Google Pay available
- Form Analysis: Identify required fields
- Auto-Fill Payment: Fill card details from test scenario
- Submit & Wait: Submit and wait for response
- Handle 3DS: If triggered, complete authentication
- Confirmation: Verify success/failure
- Report: Include Payment Experience section