Введение в тестирование пользовательского интерфейса с 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, тестирование форм, работу с элементами и другие возможности этого инструмента. Удачи в тестировании!