我的Capybara测试被设计为在示例失败时调用page.save_screenshot
。这是在我的spec_helper
中的config.after(:each)
块中配置的。
然而,并不是我所有的测试都有一个打开的窗口。长话短说,我的一些测试可能会使用rest-client
发出一些请求,然后基于一些rspec expectations
通过/失败。当这些类型的测试失败时,会因为调用page.save_screenshot
而打开一个浏览器窗口。
是否有一种方法可以添加一个条件,以便只有当有一个窗口(无头或非无头)打开时才尝试保存截图?
你可以这样做
page.save_screenshot if page.current_window.exists?
然而,最好的选择实际上是将不使用浏览器的测试作为不同类型的测试(不是系统或功能),或者向测试添加元数据,这样元数据就可以用来确定测试是否使用浏览器
# In your tests
it 'does something not using the browser', :no_browser do
...
end
# In your spec_helper
config.after(:each) do |example|
page.save_screenshot unless example.metadata[:no_browser]
end