只允许页面.如果存在窗口,保存截图?



我的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

最新更新