Я думаю, что лучшим подходом для вас было бы иметь список всех маршрутов в вашем приложении и создать тест на основе данных, чтобы выполнить итерацию по каждому из них.
Вам потребуется общая навигационная функция, которая может попасть на каждую страницу, например navigateTo (routeName). Этот код будет выглядеть примерно так:
var routes = [
'homepage',
'myheroes',
'mainpage',
'heroprofile'
]
describe('blank App', () => {
for (let i = 0; i < routes.length; i++) {
it('should display message saying app works', () => {
navigateTo(routes[i]);
browser.takeScreenshot().then((png) => {
var stream = createWriteStream(routes[i] + ".png"); /** change the png file name */
stream.write(new Buffer(png, 'base64'));
stream.end;
});
});
}
});
транспортир-изображения сравнения
Действительно, хотя я бы порекомендовал вам использовать пакет npm protractor-image-сравнение . Я работал с этим пакетом, и он делает визуальную проверку очень простой. Это позволяет вам сохранять новые базовые изображения (золотые изображения, как вы их называете), если они отсутствуют, и сравнивать их, если они присутствуют. Сравнение очень чувствительно к изменениям, но вы можете указать, какую разницу вы хотите разрешить.
При таком подходе база данных не требуется.
Примечание
Имейте в виду также, что разные браузеры делают скриншоты по-разному. Chrome считает «область просмотра» видимой частью браузера, но я уверен, что в Firefox вы можете сделать снимок всего веб-страницы сразу.