Background:l'esecuzione di test di selenio parallele con capibara
Ho una serie di Capybara test di integrazione in esecuzione contro la mia applicazione Rails 3. Per le altre parti della suite di test sto usando Rspec.
Ho un selenio hub del server 2.6.0 standalone sulla mia macchina dev Mac OSX.
java -jar selenium-server-standalone-2.6.0.jar -role hub
corro più macchine virtuali ciascuno collegato al mozzo con un nodo selenio:
java -jar selenium-server-standalone-2.6.0.jar -role webdriver -hub http://0.0.1.12:4444/grid/register port 5555 -browser browserName="internet explorer",version=8,platform=WINDOWS
Questo funziona bene, In questa immagine la console mostra che ho un IE7 e un IE8 browser connesso al mozzo:
ho installato capibara a correre contro il mozzo di selenio (che i delegati dei test ai nodi).
Capybara.app_host = "myapp.dev"
Capybara.default_driver = :selenium
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(app,
:browser => :remote,
:url => "http://localhost:4444/wd/hub",
:desired_capabilities => :internet_explorer)
end
Funziona, tuttavia sarà eseguito solo il test su un singolo nodo internet_explorer. Sembra essere quello che è "in prima fila"; Se lo spengo, il test verrà eseguito correttamente sull'altro nodo.
Ho provato il progetto parallel_tests, configurando capibara come suggerito, ma questo avrebbe comunque avviato solo un test di integrazione.
Come posso eseguire il mio integrazione su tutti i nodi internet_explorer contemporaneamente?
Domanda bonus: se volessi eseguire i miei test di integrazione in tutti i nodi connessi, a prescindere dalla capacità del browser, come potrei farlo?
Daniel, ho lo stesso problema di te, sei riuscito a trovare una soluzione? – Farooq
Ho capito che se si hanno 1 Hub e 3 Nodi in esecuzione e si eseguono 3 test contemporaneamente in 3 diverse schede, i test verranno eseguiti su tutti i nodi. 1 test per ogni nodo. Fondamentalmente il test preleva il prossimo nodo vuoto in linea e lo esegue lì. – Farooq