2011-09-27 11 views
8

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:

The hub console showing connected nodes

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?

+0

Daniel, ho lo stesso problema di te, sei riuscito a trovare una soluzione? – Farooq

+0

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

risposta

1

Per IE webdrive è possibile eseguire al massimo 1 test su un nodo fisico! Se si desidera ottenere il parallelismo con il webdriver IE, è possibile provare aggiungendo/registrando un altro nodo fisico all'hub.

Per quanto riguarda sopra colpo di schermo della console hub, ma mostra anche una sola icona di IE. Il messaggio è sbagliato "Supporta fino a 5 ...." ma puoi considerare il numero di icone per il rispettivo browser visualizzato sotto di esso.

2

qui si deve sparare gli stessi test per i diversi browser in modo può provare ad avviare due processo di test vale a dire eseguire lo stesso comando per due volte.

Come avete iniziato i nodi della rete gestirà l'esecuzione su nodi differenti.

Nel tuo caso si sta eseguendo il test e solo su/suite processo viene avviato rispetto alla griglia. Solo per il test Scopo prova a sparare questi test due volte uno dopo l'altro. Se non si è in grado di ottenere da questo uso, utilizzare Ant o simili per controllare l'esecuzione dei test.

Problemi correlati