capybara-webkit:自动保存RSpec测试失败的屏幕截图

时间:2011-10-18 04:59:32

标签: ruby testing rspec capybara

如果使用带有Rspec的capybara-webkit测试失败,如何自动保存html和屏幕截图?如何在RSpec测试失败时执行回调。

奖励积分:如何避免收到以下错误:

Capybara::Driver::Webkit::WebkitInvalidResponseError 

执行此代码时:

require 'capybara/util/save_and_open_page'
path = "/#{Time.now.strftime('%Y-%m-%d-%H-%M-%S')}"
png = Capybara.save_and_open_page_path + "#{path}.png"
page.driver.render Rails.root.join(png)

3 个答案:

答案 0 :(得分:15)

我专门为此编写了一张宝石Capybara-Screenshot,请查看https://github.com/mattheworiordan/capybara-screenshot

它将在失败的RSpec或Cucumber步骤中自动创建屏幕截图。

答案 1 :(得分:2)

找到可能对您有所帮助的要点https://gist.github.com/1156691

答案 2 :(得分:1)

Capybara提供了在测试期间保存和打开屏幕截图的功能。您只需要在测试中的任何地方打电话:

$.ajax({ type: 'GET', url: '/admin/select_category', data: { provider: provider }, success: (function (data) { $('#select_category').children('option').remove(); $('#select_category').prepend('<option value=""></option>'); $.each(data.categories, function () { $('#select_category').append('<option value="' + this.id + '">' + this.name + '</option>') }) }) })

它会打开一张图片,看看测试在那一点上是什么样的。 不需要任何额外的宝石。

Capybara::save_and_open_screenshot