Введение в тестирование пользовательского интерфейса с Protractor
Тестирование пользовательского интерфейса (UI) играет важную роль при разработке веб-приложений. Оно позволяет проверить, что интерфейс удобен и понятен для пользователя. Также с помощью тестирования можно убедиться, что все элементы UI работают корректно.
Для автоматизации тестирования UI существуют специальные инструменты. Одним из популярных является Protractor - библиотека для тестирования Angular приложений. Далее мы разберем основы работы с этим инструментом.
Что такое Protractor?
Protractor - это инструмент для end-to-end тестирования Angular приложений. Он позволяет писать и запускать автоматизированные UI тесты, написанные на JavaScript.
Основные возможности Protractor:
- Тестирование AngularJS приложений
- Использование WebDriver для взаимодействия с браузером
- Синхронизация с AngularJS для упрощения тестирования
- Ожидания для элементов страницы
- Мощный API для поиска элементов и взаимодействия с ними
Protractor хорошо подходит для:
Установка и настройка Protractor
Для работы с Protractor нужно установить:
npm install -g protractor
npm install -g webdriver-manager webdriver-manager update
Первый тест на Protractor
Рассмотрим пример простого теста на Protractor:
describe('Protractor Demo App', function() {
it('should have a title', function() {
browser.get('http://juliemr.github.io/protractor-demo/');
expect(browser.getTitle()).toEqual('Super Calculator');
});
});describeиit- блоки для группировки тестовbrowser- объект для взаимодействия с браузеромbrowser.get- переходит на указанный urlexpect- утверждение, что title страницы равен 'Super Calculator'toEqual- проверка равенства текущего и ожидаемого значения
Этот простой тест открывает страницу приложения и проверяет заголовок.
Работа с элементами
Чтобы тестировать UI, нужно уметь находить элементы на странице и взаимодействовать с ними.
Основные локаторы в Protractor:
element- поиск по css selectorby.binding- по связыванию в Angularby.model- по ng-modelby.repeater- по ng-repeat
let button = element(by.css('button.calculate'));click()- клик по элементуsendKeys()- ввод текста в полеclear()- очистка поля вводаgetAttribute()- получение атрибутаgetText()- получение текста элемента
let input = element(by.model('first'));
input.sendKeys('10');Ожидания и утверждения
Чтобы тесты были стабильны, нужно использовать ожидания. Они позволяют дождаться загрузки элементов перед взаимодействием.
browser.wait- явное ожиданиеelement(by.css('.class')).isPresent()- неявное ожидание элементаelement.isDisplayed()- элемент видим на странице
Утверждения используются для проверок:
expect(value).toBe(true)- проверка на истинностьexpect(input.getAttribute('value')).toBe('10')- проверка атрибута
Это позволяет писать стабильные и надежные UI тесты.
Запуск тестов и отчеты
Чтобы запустить тесты, используем команду:
protractor protractor.conf.js
По умолчанию, она запускает тесты в браузере и выводит результаты в консоль.
Для генерации отчетов, можно использовать пакет jasmine-spec-reporter:
npm install --save-dev jasmine-spec-reporter
onPrepare: () => {
require('jasmine-spec-reporter');
}Теперь после запуска тестов будет сгенерирован подробный отчет о прогоне.
Итог
Эти знания позволят вам начать писать автоматизированные UI тесты для своих Angular проектов с помощью Protractor! Для более продвинутого использования стоит изучить Page Objects, тестирование форм, работу с элементами и другие возможности этого инструмента. Удачи в тестировании!