← Posts
Testing with Stripe Elements in Laravel Dusk
February 20th, 2021 - 1 min read
Heads up! This post was published a while back, so while some of it might still be good, I can't say for sure it's all accurate. Take it with a pinch of salt!
Today I've been playing around with using Laravel Dusk to test a payment form on a small website.
The payment form is a key part of the owner's business so it's crucial it works all the time, whenever the customer makes a purchase.
The site uses Stripe Elements to let the customer enter their payment information securely.
Elements creates its own iframe element which makes it a little tricky to target and test. However, there's a handy method in Dusk which allows you to type inside of an iframe.
1$this->browse(function ($browser) {2 $browser->type('@input', 'whatever')3 ->withinFrame('.__PrivateStripeElement iframe', function ($browser) {4 $browser5 ->type('[placeholder="Card number"]', '4242424242424242')6 ->type('[placeholder="MM / YY"]', '0923')7 ->type('[placeholder="CVC"]', '123');8 });9});
Anything you need to type inside of Stripe's iframe you can do inside the withinFrame
method and target the relevant inputs via their placeholders.
Hopefully someone finds that helpful! 🙂