2012-11-23 36 views
5

Có ai biết làm cách nào tôi có thể ghi đè tác nhân người dùng của nhà hoạch định chính trị capybara lên người di động để thử nghiệm không?capybara poltergeist - ghi đè tác nhân người dùng

tôi tìm thấy một cái gì đó về cấu hình mà cho webdriver selen: http://blog.plataformatec.com.br/2011/03/configuring-user-agents-with-capybara-selenium-webdriver/

thế nào điều này có thể có trong Capybara poltergeist?

Trả lời

3

Nếu bạn không muốn thiết lập các user-agent trên mỗi spec, thử điều này trong spec_helper.rb bạn

Capybara.register_driver :poltergeist_iphone_debug do |app| 
    ghost_busters = Capybara::Poltergeist::Driver.new(app, inspector: true) 
    ghost_busters.headers = { 'User-Agent' => 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A334 Safari/7534.48.3' } 
    ghost_busters 
end 

Capybara.default_driver = :rack_test 
Capybara.javascript_driver = :poltergeist 

RSpec.configure do |config| 

    config.treat_symbols_as_metadata_keys_with_true_values = true 
    config.before (:each) do |example_method| 
    example = example_method.example ## RSpec2 | For RSpec3: example = example_method 

    if example.metadata[:mobile] 
     Capybara.current_driver = :poltergeist_iphone_debug 
    end 

    end 
end 

Và sau đó trong thông số tính năng của bạn, chỉ cần thực hiện việc này:

require 'spec_helper' 

describe 'Home' do 
    describe 'GET /' do 

    # Default request desktop 
    it 'does not have mobile menu' do 
     visit root_path 
     expect(page).to_not have_selector('.mobile-menu') 
    end 

    # Override request mobile 
    it 'has mobile menu', :mobile do 
     visit root_path 
     expect(page).to have_selector('.mobile-menu') 
    end 
    end 
end 
Các vấn đề liên quan