Sono nuovo per Cucumber e Ruby. Sono un analista di affari abituato a scrivere requisiti e casi di test, e ho letto su Cucumber e Watir, ma ho difficoltà a trovare ciò che mi serve per funzionare.Profili cetriolo e ganci globali per selezionare il browser
Sto testando un set di pagine Web in IE, Firefox e Chrome e come diversi tipi di utenti. Sto scrivendo e taggando le caratteristiche e creando profili in cucumber.yml in modo da poter eseguire cetriolo con -p per eseguire solo i test codificati appropriati per diversi tipi di utenti.
Sto creando diversi oggetti di pagina in modo che possa accedere facilmente come utente di base, utente di report, utente di editor, ecc. I file di funzionalità avranno scenari leggermente diversi e condizioni pass/fail per ciascun tipo di utente e step defs richiamerà gli oggetti pagina appropriati per l'accesso come tali tipi di utenti.
Anziché duplicare i test tre volte ciascuno per aprire il browser giusto con watir-webdriver, e piuttosto che avere il browser aperto e chiuso con ogni scenario, ho voluto creare un hook globale in env.rb o hooks.rb per aprire il browser una volta e solo una volta prima dell'esecuzione di tutte le funzionalità, quindi chiuderlo con e dopo l'istruzione dagli hook globali quando tutte le funzioni sono state eseguite. Ancora una volta, sto usando i profili che chiamano scenari con tag per scegliere quali test eseguire per ogni tipo di utente.
Il problema che sto avendo è un passo avanti, basta aprire il browser. So come utente watir-webdriver per aprire ciascun browser.
Quello che volevo era inserire ganci globali per aprire un browser prima di qualsiasi test. Quindi nell'env.rb stavo per mettere la chiamata browser = Watir :: Browser.new.
Quello che voglio fare è avere tre hook globali separati, uno per IE, Chrome e Firefox, e chiamarli in base a una condizione passata da un profilo in cetriolo.yml, ma non riesco a ottenerlo lavorare. Ho provato a taggarli e questo non ha funzionato. Non puoi taggare gli hook globali? L'ho provato con un setup if/then/else ma non ha funzionato neanche.
Vorrei poter passare un parametro o tag da un profilo in cucumber.yml chiamare un solo gancio globale, come ad esempio:
basicuser_overviewtests_ie: --tags @basic @overview @ie
basicuser_overviewtests_ff: --tags @basic @overview @firefox
Basicuser_newpagetests_ie: --tags @basic @newpage @ie
Ecc ... i primi due tag farebbero riferimento agli scenari, il terzo al hook env.rb corretto.
Oppure, se potessi passare una variabile dal profilo, funzionerebbe anche quella. Non sono riuscito a capire come potrei usare una variabile d'ambiente lì.
Mi manca qualcosa? Questa informazione è sufficiente per spiegare il problema? Grazie!
UPDATE: Parte del problema sembra essere che il cetriolo non ha riconosciuto la cartella [supporto] quando era sullo stesso livello della cartella [caratteristiche], aveva bisogno di essere in [Impostazioni]. Le informazioni su cuke avevo detto che sarebbe stato Ok allo stesso livello piuttosto che all'interno delle funzionalità. Non è il caso.
Così ora posso ottenere i miei tre hook globali per l'esecuzione dei browser, ma il tagging non aiuta, vengono eseguiti tutti contemporaneamente anche se taggati per essere eseguiti solo prima di feature tagged @ie o con profili taggati solo per l'esecuzione @ vale a dire.
Ha funzionato, grazie! Sembra che fossi sulla buona strada: avevo tentato di lavorare con le variabili di ambiente, ma non avevo la sintassi corretta, e passai al tagging, che non funzionava affatto. Funziona esattamente come mi serve e il tuo post sul blog ha aiutato moltissimo - è parallelo al tipo di test che sto svolgendo. Grazie ancora! –
Ottimo! Sono contento di poterti aiutare. Se non lo hai ancora, prendi il Libro di Cetriolo. È stato così utile per me. –