带有Fail屏幕截图的Rspec HTML报告

时间:2013-05-14 09:46:18

标签: ruby-on-rails rspec watir-webdriver

我将脚本保存在以下路径中:

C:\Desktop\RSpec_Folder

我的代码是:

require 'rspec'
require 'watir-webdriver'
require 'rautomation'
browser = Watir::Browser.new

RSpec.configure do |config|
  config.before(:each) { @browser = browser }
  config.after(:suite) { browser.close unless browser.nil? }
end  

describe "Outbid Home Scenarios validation" do  
  before(:each) do
    @browser.goto('http://www.outbid.com')
  end

  it "To validate outbid Logo/Home page navigation" do
    @browser.link(:id, "home-link").click
  end 

  it "Host & Join Live Auctions heading is available" do 
    @browser.text.include?('Host & Join Live Auctions')
  end

  it "Host & Join Live Auctions " do 
    @browser.text.include?('Host mail')
  end  

  after(:each) do
    @browser.close
  end  
end

我的R规格文件名是outbid.Rb。从命令提示符运行上述scrips:

rspec --format html --out results.html outbid.rb

它只生成HTML报告。

我想创建包含所有通过和失败步骤的屏幕截图的报告。

2 个答案:

答案 0 :(得分:3)

您可以使用watir-rspec及其Watir::RSpec::HtmlFormatter,它会自动保存所有失败规格的屏幕截图(以及示例中生成的其他文件)。

只需按照README进行配置。

答案 1 :(得分:0)

这可能不是你所希望的答案,但它是现实的

用黄瓜做这件事很容易。关于这个主题有多个博客帖子,只需几行代码。

事实是Rspec真的是围绕运行UNIT测试而设计的,几乎不需要采用或嵌入截图。对于验收测试来说,这种事情更为常见,而Cucumber的设计目的远远超过Rspec。

所以你的选择是扩展你的框架(我从你在问题的评论中引用的Jarmo的帖子开始)或者如果这似乎超出你的想法并且你不想花时间学习为此所需的编码,然后考虑您选择的框架,并查看专为验收测试设计的Cucumber,并将HTML测试结果报告中的屏幕截图嵌入相关的蛋糕。

对于黄瓜在env.rb中添加这样的代码(注意:此代码仅截取故障屏幕截图,如果您一直想要它们,则删除内部4周围的if逻辑代码行)

After do |scenario|
  if scenario.failed?
    screenshot = "./FAILED_#{scenario.name.gsub(' ','_').gsub(/[^0-9A-Za-z_]/, '')}.png"
    @browser.driver.save_screenshot(screenshot)
    encoded_img = @browser.driver.screenshot_as(:base64)
    embed("data:image/png;base64,#{encoded_img}",'image/png')
  end
end

如果rspec有一个类似的嵌入命令,那么你很可能会把代码放在after(:each)之内。我看过rdocs并且没有找到像Embed一样的东西,所以我不知道股票Rspec框架是否可以处理这个问题。 (对于rspec小组来说,这可能更像是一个问题)