Change default Capybara browser window size

前端 未结 5 1988
不思量自难忘°
不思量自难忘° 2021-01-01 09:44

So, with respect to integration testing using Capybara and RSpec, I know I can do this:

page.driver.browser.manage.window.resize_to(x,y)

pe

相关标签:
5条回答
  • 2021-01-01 10:23

    For test runtime in Capybara 2.2.4 version you can achieve this by doing

    before do
      handle = Capybara.page.driver.current_window_handle
      Capybara.page.driver.resize_window_to(handle, height, width)
    end
    

    Or

    before do   
      Capybara.page.current_window.resize_to(height, width)
    end
    

    If you get Capybara::NotSupportedByDriverError: Capybara::Driver::Base#current_window_handle YOU MUST CHANGE YOUR DRIVER FOR EXAMPLE USE JAVASCRIPT DRIVER!

    before do   
      Capybara.page.current_window.resize_to(height, width)
    end
    
    scenario js: true do
      # your test here
    end
    
    0 讨论(0)
  • 2021-01-01 10:24

    Perhaps due to a recent change in Capybara, what worked for me was:

    before do
      Capybara.page.current_window.resize_to(x, y)
    end
    
    0 讨论(0)
  • 2021-01-01 10:31

    You could define that under before(:all)

    describe "Test" do
      before(:all) do
        ...
        ...
        page.driver.browser.manage.window.resize_to(x,y) #Mention it here
      end
    
      it "should find everything" do
        ...
      end
    
      after(:all) do
       ...
      end
    end
    
    0 讨论(0)
  • 2021-01-01 10:44

    @tirdadc if you're using Poltergeist, you can add something like this to your rails_helper.rb file:

    Capybara.register_driver :poltergeist do |app|
      options = {
        # js_errors: true,
        # cookies: true,
        window_size: [320, 568] # iphone 5
      }
      Capybara::Poltergeist::Driver.new(app, options)
    end
    
    0 讨论(0)
  • 2021-01-01 10:45

    A proper way to do it for all js tests is to add following inside spec_helper.rb RSpec.configure block

    config.before(:each, js: true) do
      Capybara.page.driver.browser.manage.window.maximize
    end
    

    to maximize the window. Change to resize_to(x,y) to set any window size.

    EDIT: If you happen to be using Poltergeist the correct way to do it is

    config.before(:each, js: true) do
      Capybara.page.driver.browser.resize(x,y)
    end
    
    0 讨论(0)
提交回复
热议问题