Как написать интеграционные тесты для Stripe checkout на Rails?

Я ударил стену, пытаясь написать интеграционный тест для Stripe's checkout.js [https://checkout.stripe.com/checkout.js ] для моего приложения Rails 3.2.

При проверке вручную (при использовании ключей тестирования Stripe) у меня работает Stripe Checkout, но я не могу заставить Capybara обнаружить иfill_in поле электронной почты в модале iframe Checkout Stripe.

я используюполтергейст для безголового JavaScript, хотя также проверил это сКапибара-WebKit и дажеселен с той же проблемой.

Я пытаюсь протестировать весь процесс регистрации подписки, чтобы показать, что новый пользователь может создать учетную запись подписчика после ввода своих платежных данных в Stripe, но я не могу пройти через всплывающее окно проверки Stripe.

Вот мойbefore .. do:

describe "show Stripe checkout", :js => true do
  before do
    visit pricing_path
    click_button 'plan-illuminated'
    stripe_iframe = all('iframe[name=stripe_checkout_app]').last
    Capybara.within_frame stripe_iframe do        
      fill_in "email", :with => "[email protected]"
      fill_in "billing-name", :with => "Mr Name"
      fill_in "billing-street", :with => "test Street"
      fill_in "billing-zip", :with => 10000
      fill_in "billing-city", :with => "Berlin"
      click_button "Payment Info"
    end
  end
  it { should have_selector('button', text: "Subscribe") }
end

Какие ошибки с:

Failure/Error: Capybara.within_frame stripe_iframe do
 Capybara::Poltergeist::TimeoutError:
   Timed out waiting for response to {"name":"push_frame","args":[null]}

Если я поменяюсь, попытка выбрать правильный iframe (предлагается здесь:Проблемы с капибарой, заполняющие мод JS ) вот так:

# stripe_iframe = all('iframe[name=stripe_checkout_app]').last
# Capybara.within_frame stripe_iframe do  
Capybara.within_frame 'stripe_checkout_app' do

Я все еще получаю подобное:

Capybara::Poltergeist::TimeoutError:
   Timed out waiting for response to {"name":"push_frame","args":["stripe_checkout_app"]}

Похоже, что любой используемый мной тест для тестирования javascript rspec / capybara не может найти iframe оформления Stripe. Когда я проверяю с Selenium, я вижуChoose this Plan нажата кнопка и всплывающее окно «Оформить заказ», но спецификация перестает искать поле электронной почты для заполнения.

Есть идеи?

Я уже пробовал:

Различные способы выбора или поиска поля электронной почты.Обновление всех моих драгоценных камней.Использование StripeMock до этого (не то, что он должен быть вовлечен, верно?).Запуск тех же тестов на собственном сайте Stripe, которые выдают те же ошибки:

Тестирование с:

  visit "https://stripe.com/docs/checkout"
  click_button 'Pay with Card'
  stripe_iframe = all('iframe[name=stripe_checkout_app]').last
  Capybara.within_frame stripe_iframe do
    fill_in 'Email', with: '[email protected]'
    sleep 3
  end

В зависимости от того, какой метод я использую для выбора фрейма, я получаю одинаковые ошибки. Используя толькоCapybara.within_frame 'stripe_checkout_app' do:

 Failure/Error: Capybara.within_frame stripe_iframe do
 Capybara::Poltergeist::TimeoutError:
   Timed out waiting for response to {"name":"push_frame","args":[null]}

или используя селен сstripe_iframe = all('iframe[name=stripe_checkout_app]').last:

 Failure/Error: Unable to find matching line from backtrace
 SystemStackError:
   stack level too deep

или даже просто:

 Failure/Error: fill_in 'Email', with: '[email protected]'
 Capybara::ElementNotFound:
   cannot fill in, no text field, text area or password field with id, name, or label 'Email' found

... в зависимости от того, какой тестовый гем Javascript я использую.

Любая помощь или мудрость очень ценится!

Ответы на вопрос(5)

Ваш ответ на вопрос