【问题标题】:Capybara (driver capybara-webkit) fails sporadically, succeeds over 50% of the timeCapybara(驱动程序 capybara-webkit)偶尔失败,成功率超过 50%
【发布时间】:2016-01-07 02:01:58
【问题描述】:

我已经附上了日志,但基本上,我整天都在和这个作斗争。它大部分时间都成功,但随后随机失败,没有可预测的模式。

这些也是非常简单的水豚测试:

    t.visit '/signup'
    t.fill_in 'user_email', :with => email
    t.fill_in 'user_password', :with => password
    t.fill_in 'user_password_confirmation', :with => password
    t.click_on 'Create Login'
    expect(page).to have_content('Welcome!')

我不知道是什么原因造成的。如有任何见解,我将不胜感激。

$ repeat 12 {rspec}

Randomized with seed 64607
.WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
....

Finished in 1 minute 6 seconds (files took 1.94 seconds to load)
5 examples, 0 failures

Randomized with seed 64607


Randomized with seed 64579
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
.....

Finished in 1 minute 10.06 seconds (files took 2.16 seconds to load)
5 examples, 0 failures

Randomized with seed 64579


Randomized with seed 19540
.WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
....

Finished in 1 minute 9.6 seconds (files took 2.17 seconds to load)
5 examples, 0 failures

Randomized with seed 19540


Randomized with seed 14891
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
.....

Finished in 1 minute 10.32 seconds (files took 2.27 seconds to load)
5 examples, 0 failures

Randomized with seed 14891


Randomized with seed 18405
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
..F..

Failures:

  1) User accounts Creating a new account does proceed with valid  information
     Failure/Error: expect(page).to have_content('Welcome!')

     Capybara::Webkit::NodeNotAttachedError:
       Element at 24 no longer present in the DOM
     # ./spec/features/create_account_spec.rb:24:in `block (3 levels) in <top (required)>'

Finished in 1 minute 10.47 seconds (files took 2.36 seconds to load)
5 examples, 1 failure

Failed examples:

rspec ./spec/features/create_account_spec.rb:21 # User accounts Creating a new account does proceed with valid  information

Randomized with seed 18405


Randomized with seed 44934
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
..F..

Failures:

  1) User accounts Creating a new account responds with an error if a password is invalid
     Failure/Error: t.visit '/signup'

     Capybara::Webkit::TimeoutError:
       Request timed out after 30 second(s)

Finished in 1 minute 37.2 seconds (files took 2.14 seconds to load)
5 examples, 1 failure

Failed examples:

rspec ./spec/features/create_account_spec.rb:34 # User accounts Creating a new account responds with an error if a password is invalid

Randomized with seed 44934


Randomized with seed 2418
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
.....

Finished in 1 minute 38.48 seconds (files took 2.22 seconds to load)
5 examples, 0 failures

Randomized with seed 2418


Randomized with seed 62514
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
..F..

Failures:

  1) User accounts Creating a new account does proceed with valid  information
     Failure/Error: expect(page).to have_content('Welcome!')

     Capybara::Webkit::NodeNotAttachedError:
       Element at 25 no longer present in the DOM
     # ./spec/features/create_account_spec.rb:24:in `block (3 levels) in <top (required)>'

Finished in 1 minute 44.84 seconds (files took 2.18 seconds to load)
5 examples, 1 failure

Failed examples:

rspec ./spec/features/create_account_spec.rb:21 # User accounts Creating a new account does proceed with valid  information

Randomized with seed 62514


Randomized with seed 61981
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
Request to unknown URL: https://api.stripe.com/v1/tokens?...
To block requests to unknown URLs:
  Capybara::Webkit.configure do |config|
    config.block_unknown_urls
  end
To allow just this URL:
  Capybara::Webkit.configure do |config|
    config.allow_url("https://api.stripe.com/v1/tokens?key=pk_test_ahWNI8gsTepFWYX9nnO0Kgxv&payment_user_agent=stripe.js/699b119&card[name]=Bob+Tomato&card[number]=42&card[cvc]=567&card[address_zip]=37069&card[exp_month]=1&card[exp_year]=2026&callback=sjsonp1452131002689&_method=POST&_accept_language=en-US")
  end
To allow requests to URLs from this host:
  Capybara::Webkit.configure do |config|
    config.allow_url("api.stripe.com")
  end
F....

Failures:

  1) User accounts Creating a new account does not proceed if any  information is missing
     Failure/Error: expect(page).to have_content('This Card Number Looks Invalid')
       expected to find text "This Card Number Looks Invalid" in ...
     # ./spec/features/create_account_spec.rb:18:in `block (3 levels) in <top (required)>'

Finished in 1 minute 50.89 seconds (files took 2.41 seconds to load)
5 examples, 1 failure

Failed examples:

rspec ./spec/features/create_account_spec.rb:15 # User accounts Creating a new account does not proceed if any  information is missing

Randomized with seed 61981


Randomized with seed 55263
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
.....

Finished in 1 minute 27.56 seconds (files took 2.26 seconds to load)
5 examples, 0 failures

Randomized with seed 55263


Randomized with seed 21927
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
.....

Finished in 1 minute 23.52 seconds (files took 2.22 seconds to load)
5 examples, 0 failures

Randomized with seed 21927


Randomized with seed 8605
WARNING: The next major version of capybara-webkit will require at least version 5.0 of Qt. You're using version 4.8.7.
....F

Failures:

  1) User accounts Creating a new account does not proceed if any information is missing
     Failure/Error: t.visit '/signup'

     Capybara::Webkit::TimeoutError:
       Request timed out after 30 second(s)

Finished in 1 minute 32.47 seconds (files took 2.02 seconds to load)
5 examples, 1 failure

Failed examples:

rspec ./spec/features/create_account_spec.rb:15 # User accounts Creating a new account does not proceed if any information is missing

Randomized with seed 8605

【问题讨论】:

  • 如果可能的话,用 Qt 5.5 而不是 4.8 重建你的 capybara-WebKit
  • 使用确切的随机种子 rspec --order rand:18405 spec/features/create_account_spec.rb:24 重新运行您的规范,并告诉我们它是否仍然偶尔失败。如果是的话,我已经为你准备好了答案
  • @MilesStanfield 我做到了——但它没有:Randomized with seed 18405 . Finished in 33.52 seconds (files took 3.64 seconds to load) 1 example, 0 failures Randomized with seed 18405 Randomized with seed 18405 ..... Finished in 1 minute 9.29 seconds (files took 2.03 seconds to load) 5 examples, 0 failures Randomized with seed 18405

标签: ruby-on-rails ruby capybara integration-testing capybara-webkit


【解决方案1】:

此类零星错误通常是由您的规范中的时间问题引起的。当页面加载时间过长时,通常来自页面上不存在的元素。

我发现修复这些类型错误的最简单方法是将您的期望包含在within block 中。然后,您的测试实际上将等待找到用于 within 块的选择器,然后再继续您的期望。

像这样添加一个内块

t.visit '/signup'
within "form" do
  t.fill_in 'user_email', :with => email
  t.fill_in 'user_password', :with => password
  t.fill_in 'user_password_confirmation', :with => password
  t.click_on 'Create Login'
end
expect(page).to have_content('Welcome!')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2016-04-16
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多