Sto usando Protractor e Jasmine per creare test end-to-end per una pagina web. Per testare questa pagina iniziale, ho astratto alcune funzioni di utilità comuni per creare circa 20 casi di test per questa particolare pagina. Un esempio di questo è mostrato.
describe('User is on the page and', function () {
beforeEach(function () {
browser.get('http://test.test');
});
it('page title of the page should be blahblah', function () {
expect(browser.getTitle()).toEqual('blahblah');
});
it('main header of the page should be test', function () {
expect(element(by.css('#entry-header h1')).getText()).toEqual('test');
});
...
}
Il problema è che ora ho 6 altre pagine che hanno estremamente funzionalità simili. Non mi piace il pensiero di duplicare tutti questi test e di mantenerli per ogni pagina, quindi sono tentato di astrarre questi casi di test in modo che possano essere riutilizzati attraverso le diverse pagine passando in specifici pagine come parametri.
Tuttavia, anche questa sembra una cattiva pratica. I casi di test non sono più descrittivi, sono funzioni con parametri passati. Anche i test case non saranno leggibili, in quanto avrebbero a che fare con una logica leggermente diversa tra le pagine. Inoltre, le modifiche ai casi di test potrebbero effettivamente causare regressioni per altre pagine.
Esiste una best practice o schema accettati per questo caso d'uso?