Не вдаваясь в рассуждения, зачем мне вдруг понадобилось писать веб-тесты на js, расскажу как это сделать. А некоторые выводы и прочая философия будут в конце поста. Поехали!
Для начала тебе понадобится тестовый фреймворк. Из всего разнообразия, я остановил свой выбор на mocha - он очень простой, там есть необходимый минимум и нет ничего лишнего.
- Устанавливаешь:
npm install -g mocha
- Создаёшь папочку
test
- Внутри создаёшь тесты
- Запускаешь их все одной командой:
mocha
Тесты пишутся в BDD-стиле: описывается фича (фичи могут быть вложенными), внутри неё - сценарии использования:
Как это ни странно, но assert’ов в этом фреймворке тестирования нет. Поэтому для проверок придётся подключить одну из сторонних библиотек. Я использовал chai. Ну и главная составляющая веб-тестов - webdriver, а точнее - его js-имплементация webdriverjs. Вот как это выглядит вместе:
Подобного кода web-тестов в java я не видел уже лет 5-7 =). Тут есть всё, от чего java-автоматизаторы давно ушли:
- Прямая работа с webdriver (заменилась работой с PageObject)
- Локаторы элементов в константах (заменились PageObject и HtmlElements)
- setUp и tearDown процедуры (заменились рулами )
Теперь философия. Исследуя инструменты автоматизации тестирования javascript, я наткнулся на огромное количество велосипедов, которые являются по сути синтаксическим сахаром к одним и тем же библиотекам. Такое ощущение, что каждый js-разработчик считает своим долгом написать какую-нибудь opensource-библиотеку. С другой стороны, я не нашёл хоть сколько-нибудь приличных фреймворков, изолирующих работу с webdriver. Даже нормальной реализации PageObject нету. Есть, конечно, и приятные исключения. Например, protractor - содержит вроде всё необходимое, но работает только с фронтом, написанном на AngularJS.
В целом мне кажется, что область автоматизации веб-тестирования в javascript довольна сырая и нужны действительно серьёзные причины выбрать этот язык.
comments powered by Disqus