#rspec #capybara
#rspec #capybara
Вопрос:
Я просмотрел документацию Github, искал ответы в поиске Google и не смог найти ответ на вопрос, почему capybara-screenshot не сохраняет скриншоты при сбоях.
Вот настройки, которые у меня есть в настоящее время для моего приложения.
Gemfile
group :development, :test do
gem 'meta_request'
gem 'factory_girl_rails'
gem 'faker'
gem 'rspec-rails', '~> 2.14.1'
gem 'capybara'
gem 'capybara-webkit'
gem 'capybara-screenshot'
gem 'cucumber-rails', :require => false
gem 'database_cleaner'
gem 'selenium-webdriver'
gem 'pry'
end
Gemfile.lock
capybara (2.3.0)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
capybara-screenshot (0.3.19)
capybara (>= 1.0, < 3)
launchy
capybara-webkit (1.1.0)
capybara (~> 2.0, >= 2.0.2)
json
rspec-core (2.14.8)
rspec-expectations (2.14.5)
diff-lcs (>= 1.1.3, < 2.0)
rspec-mocks (2.14.6)
rspec-rails (2.14.2)
actionpack (>= 3.0)
activemodel (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 2.14.0)
rspec-expectations (~> 2.14.0)
rspec-mocks (~> 2.14.0)
инициализаторы /capybara.rb
Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
Capybara::Screenshot.register_driver(:selenium_chrome) do |driver, path|
driver.browser.save_screenshot(path)
end
spec_helper
require 'rspec/autorun'
# Include Capybara Capabilities
require 'capybara/rspec'
require 'capybara/rails'
require 'capybara-screenshot/rspec'
# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
# Checks for pending migrations before tests are run.
# If you are not using ActiveRecord, you can remove this line.
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
Capybara.save_and_open_page_path = "#{Rails.root.join("tmp")}/acceptance_tests/"
Capybara::Screenshot.append_timestamp = false
Capybara::Screenshot.register_filename_prefix_formatter(:rspec) do |example|
"screenshot_#{example.description.gsub(' ', '-').gsub(/^.*/spec//,'')}"
end
Capybara::Screenshot.autosave_on_failure = true
home_page_spec.rb
require 'spec_helper'
shared_examples 'home_page_tests' do |driver|
context "When using the #{driver.to_s} driver" do
before do
Capybara.current_driver = driver
end
describe 'home page', :js => true do
context 'the user is not logged into the application' do
it 'displays login and sign in buttons' do
visit root_path
expect(page).to have_selector('.btn', text:'Sign i')
end
end
end
end
end
describe 'Running the homepage tests' do
it_behaves_like 'home_page_tests', :selenium_chrome
end
Я пробовал несколько вариантов, чтобы заставить это работать, но я никогда не могу получить скриншот для сохранения при сбое. Я могу вручную вызвать функцию скриншота, но, учитывая, что gem должен автоматически генерироваться при сбое теста, я чувствую, что что-то не так. Интересно, что я могу заставить огуречную часть драгоценного камня работать просто отлично. У кого-нибудь еще были проблемы с получением capybara-скриншота, работающего с RSpec? Любая помощь будет оценена.
Комментарии:
1. Не могли бы вы сократить свои примеры кода до минимального примера, который воспроизводит проблему вместе с любыми сообщениями об ошибках, которые вы можете получать (или указать, что вы их не получаете)?
2. Посмотрите, упростит ли это. Кроме того, я вообще не получаю никаких сообщений об ошибках. Он действует так, как будто любые перехваты, которые необходимо зарегистрировать, не регистрируются должным образом.
3. Спасибо, что дали мне знать, как исправить
unknown method render
..)
Ответ №1:
Я бы предложил открыть проблему на capybara-скриншоте с минимальным воспроизводимым примером.