2014-06-24 1 views
4

Github 문서를 검토하고 Google 검색을 통해 답변을 찾았으며 capybara-screenshot이 스크린 샷을 저장하지 않는 이유에 대한 답변을 찾을 수 없었습니다 실패.RSpec 테스트에서 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 
,451,515,

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 

나는이 작업을 얻기 위해 몇 가지 변화를 시도했다, 그러나 나는 실패에 저장하는 스크린 샷을 얻을 수 있어요 없습니다. 스크린 샷 기능을 수동으로 호출 할 수는 있지만, 테스트가 실패 할 때 보석이 자동 생성된다고 가정 할 때, 뭔가 잘못되었다고 느낍니다. 재미있는 점이지만, 저는 보석의 오이 부분을 잘 작동시킬 수있었습니다. RSpec에서 capybara-screenshot을 사용하는 데 문제가있는 사람이 있습니까? 어떤 도움을 주시면 감사하겠습니다.

+1

코드 샘플을 문제를 재현하는 * minimal * 예제와 함께 수신 할 수있는 오류 메시지와 함께 줄이거 나 (* 수신하지 않음을 지정하십시오)? – Qix

+0

그것이 더 쉬운 지보십시오. 또한 오류 메시지가 전혀 표시되지 않습니다. 그것은 등록되어야하는 모든 후크가 제대로 등록되지 않은 것처럼 작동합니다. –

+0

알려 주셔서 감사합니다. '알 수없는 메소드 렌더링'을 수정하는 방법 ..) – Nakilon

답변

관련 문제