agentleFS
ncklrsncklrs/claude-chrome-user-testing/skills/stripe-checkout/SKILL.md

stripe-checkout

Skill20 starsChanged 10 months agoMITView on GitHub

This skill provides guidance for testing Stripe checkout flows with any persona. It handles test card data, form detection, and payment-specific narration. Enable realistic user testing of Stripe payment flows using official test cards, with persona-appropriate reactions to checkout experiences. Load card data from test-cards.json. Key scenarios: 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:…

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

17 rules. About 0 are common, 11 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈11

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Always use these unless testing specific scenarios:

    line 23
  2. Distinctive:

    Name: Test User (or persona's name)

    line 27
  3. Very specific:

    Email: Use --email flag value, or default to test@example.com

    line 28
  4. Distinctive:

    When redirected to Stripe's hosted checkout:

    line 34
  5. Distinctive:

    When Stripe Elements are embedded in the page:

    line 47
  6. Very specific:

    Use browser_evaluate to detect Stripe:

    line 61
  7. Very specific:

    Email: Use browser_type on email field

    line 95
  8. Distinctive:

    Add these to persona narration when testing checkout:

    line 127
  9. Distinctive:

    No express checkout options (Apple Pay, Google Pay)

    line 174
  10. Distinctive:

    No order confirmation displayed

    line 181
  11. Very specific:

    When 3ds-required card triggers authentication:

    line 197
  12. Distinctive:

    Detect Modal: Look for Stripe 3DS iframe/modal

    line 199
  13. Very specific:

    Add this section to reports when --stripe flag is used:

    line 212
  14. Very specific:

    When --stripe flag is active on /user-test or /stripe-test is used:

    line 243
  15. Distinctive:

    Pre-checkout: Test normal flows until reaching checkout

    line 245
  16. Distinctive:

    Handle 3DS: If triggered, complete authentication

    line 251
  17. Distinctive:

    Confirmation: Verify success/failure

    line 252

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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:

ScenarioCardWhen to Use
success4242...4242Happy path checkout
decline4000...0002Test error handling
3ds-required4000...3155Test 3D Secure flow
insufficient4000...9995Test specific decline reason
amex3782...0005Test 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 --email flag value, or default to test@example.com

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:

  1. Email: Use browser_type on email field
  2. Card: The card element is a single field - type full card number
  3. Expiry: Type MM/YY format
  4. CVC: Type 3 digits (4 for Amex)
  5. Name: Type cardholder name
  6. ZIP: Type postal code if shown

For Embedded Elements

Elements are in iframes - interaction requires focusing the iframe:

  1. Click/focus on the card element to activate it
  2. Type card number directly (it auto-formats)
  3. Tab to expiry, type MM/YY
  4. Tab to CVC, type digits
  5. 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:

  1. Detect Modal: Look for Stripe 3DS iframe/modal
  2. Narrate: Express surprise/concern based on persona
  3. Complete: In test mode, there's usually a "Complete authentication" button
  4. 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:

  1. Pre-checkout: Test normal flows until reaching checkout
  2. Checkout Detection: Identify Stripe form type
  3. Express Options Check: Note if Apple Pay / Google Pay available
  4. Form Analysis: Identify required fields
  5. Auto-Fill Payment: Fill card details from test scenario
  6. Submit & Wait: Submit and wait for response
  7. Handle 3DS: If triggered, complete authentication
  8. Confirmation: Verify success/failure
  9. Report: Include Payment Experience section

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.