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 ?
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
Une bonne façon de le faire pour tous les tests js est d'ajouter le suivant à l'intérieur du bloc spec_helper.rb
RSpec.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
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
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
@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