Created
March 4, 2017 21:21
-
-
Save iloveitaly/19ff89614b8e92a71de660c89b8a0fbf to your computer and use it in GitHub Desktop.
Fill in a Stripe Elements (https://stripe.com/docs/elements) credit card field using capybara
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def fill_stripe_elements(card) | |
using_wait_time(15) { within_frame('stripeField_card_element0') do | |
card.to_s.chars.each do |piece| | |
find_field('cardnumber').send_keys(piece) | |
end | |
find_field('exp-date').send_keys("0122") | |
find_field('cvc').send_keys '123' | |
find_field('postal').send_keys '19335' | |
end } | |
end | |
fill_stripe_elements(4242424242424242) |
This is great! thanks for sharing!
Thanks for this, Great help! We've just switched over to using Elements and was a bit puzzled at first how to handle this.
Thanks @kfrz. 👍
Thanks all, this was very helpful to me just now.
Can you help me with the implementation in case of javascript? Also is there a way to fetch contents out of stripe elements?
I am new to both javascript and stripe. @thijsc?
I added another couple helpers to this to handle Stripe SCA in Capybara in case anyone is interested.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The iFrame selector for an elements object is dynamic, so this will cause problems unless one does something like such:
By selecting the frame with a CSS selector it's a bit more brittle test (you'd have to update the spec anytime the layout changes) but gets around the problem of dynamically assigned iframe name attributes.
Also I just added some extra signature params to make the method more flexible throughout a spec suite (add old expiry, etc).