Скриншоты не создаются автоматически с помощью Ruby-Rspec - PullRequest
0 голосов
/ 09 мая 2018

Я использую Ruby Rspec для тестирования веб-приложения, в котором не используются rails, поэтому у меня нет rails_helper.rb, только spec_helper.rb. Я могу вручную вызвать скриншот, но не могу понять, как вызвать скриншоты при сбое.

spec_helper.rb:

# frozen-string-literal: true
require 'rspec'
require 'capybara/rspec'
require 'capybara-screenshot/rspec'
require 'capybara/dsl'
require 'selenium-webdriver'
require 'site_prism'

Dir[File.dirname(__FILE__) + '/page_objects/*/*.rb'].each do |page_object|
  require page_object
end

Capybara.register_driver :selenium do |app|
 Capybara::Selenium::Driver.new(app, browser: :chrome)
end

Capybara.save_path = "#{Dir.pwd}/screenshots"

Capybara.default_driver = :selenium
Capybara.app_host = "REDACTED"
Capybara.default_max_wait_time = 20

my_spec.rb

describe 'spec' do
    before(:each) do
      @my_page = login_and_open_my_page
    end
    it "fails" do
       expect(5).to eq(6)
    end
end

1 Ответ

0 голосов
/ 09 мая 2018

Вы должны быть в состоянии сделать это в RSpec после блока. Вы можете определить это в своей конфигурации RSpec и т. Д., И в основном это должно сводиться к

after(:each) do |example|
  if example.exception
     # Do whatever you want to happen on failure
     Capybara.current_session.save_and_open_screenshot
  end 
end

Этот блок должен быть запущен до сброса сеанса, поэтому он должен быть определен после любого блока, который вы определили для сброса.

...