Prima di tutto, si dovrebbe assolutamente passare ad usare il modello di pagina Oggetto e tenere gli oggetti della pagina in una directory separata - penso si consiglia di chiamare il directory po
.
Ecco un esempio per voi, la struttura del progetto al momento non abbiamo:
$ cd e2e
$ tree -L 1
.
├── config
├── db
├── helpers
├── mocks
├── po
└── specs
config
è directory speciale dove teniamo i nostri protractor
configurazioni - ci potrebbero essere molteplici configurazioni - per esempio, per il test locale e per test su, per esempio, .
helpers
è, in pratica, la nostra directory "libs"/"utils". Manteniamo abbinamenti personalizzati di gelsomino, moduli aggiuntivi "helper" con funzioni di supporto. Inoltre, abbiamo i moduli localStorage
e sessionStorage
che sono involucri convenienti intorno agli oggetti window.localStorage
e window.sessionStorage
.
mocks
è una directory in cui manteniamo protractor-http-mock
mocks.
po
è una directory in cui vengono definiti gli oggetti della pagina. Ogni oggetto della pagina in un file separato.
specs
è dove tutte le nostre specifiche vivono - sono organizzate in sottodirectory logicamente.
Alcuni dei helpers
librerie sono made globally available via global
, ad esempio:
onPrepare: function() {
global.helpers = require("../helpers/helpers.js");
// ...
},
Inoltre, per rendere l'aiutanti e po importazione più conveniente e di evitare l'attraversamento delle directory nella struttura e per gestire meglio il nestedness , abbiamo passati a usare requirePO
e requireHelper
funzione di supporto suggerito da @ Michael Radionov, vediamo:
Mi piace molto anche l'idea, proposta da @finspin, di creare un pacchetto nodo da ogni oggetto Page.
avete qualche esempio di oggetto pagina? –
@GianlucaGhettini yup, fondamentalmente seguiamo ciò che è suggerito qui: https://github.com/angular/protractor/blob/master/docs/page-objects.md. – alecxe
ha senso avere qualcosa come gli oggetti di pagina anche per i test di unità? – ganqqwerty