web-dev-qa-db-fra.com

Modifier la taille par défaut de la fenêtre du navigateur Capybara

Donc, en ce qui concerne les tests d'intégration utilisant Capybara et RSpec, je sais que je peux le faire:

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

per Comment définir la taille de la fenêtre du navigateur dans Rspec (Selenium) pour des tests RSpec spécifiques, mais existe-t-il un moyen de le faire globalement afin que chaque test affecté par les requêtes de médias n'ait pas à le définir ?

30
CDub

Vous pouvez définir cela sous 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
14
Amey

Une bonne façon de le faire pour tous les tests js est d'ajouter le suivant à l'intérieur du bloc spec_helper.rbRSpec.configure

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

pour maximiser la fenêtre. Passez à resize_to(x,y) pour définir n'importe quelle taille de fenêtre.

EDIT : Si vous utilisez Poltergeist, la bonne façon de le faire est

config.before(:each, js: true) do
  Capybara.page.driver.browser.resize(x,y)
end
35
Mike Szyndel

Peut-être en raison d'un récent changement à Capybara, ce qui a fonctionné pour moi a été:

before do
  Capybara.page.current_window.resize_to(x, y)
end
14
rattray

Pour l'exécution du test dans Capybara 2.2.4 version, vous pouvez y parvenir en faisant

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

Ou

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

Si vous obtenez Capybara :: NotSupportedByDriverError: Capybara :: Driver :: Base # current_window_handle VOUS DEVEZ CHANGER VOTRE PILOTE POUR UN EXEMPLE D'UTILISATION PILOTE JAVASCRIPT !

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

scenario js: true do
  # your test here
end
5
ilgam

@tirdadc si vous utilisez Poltergeist, vous pouvez ajouter quelque chose comme ça à votre Rails_helper.rb fichier:

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
2
Nico Brenner