Вы знаете, что такое Selenium и/или PhantomJS? И с чем их едят? Тогда, возможно, вам будет интересен проект Dalek.js — кроссбраузерная утилита для тестирования веб-приложений.
Dalek.js позволяет писать тесты, которые ходят по веб-страничкам, щелкают ссылки, заполняют формы, отправляют данные и делают скриншоты. То же самое и даже больше делают тесты, написанные с использованием Selenium'а или Phantom.js, в чем подвох?
Но! Посмотрите, как прост этот тест.
test.js
module.exports = {
'Page title is correct': function (test) {
test
.open('http://google.com')
.assert.title().is('Google', 'It has title')
.done();
}
};
Открываем google.com в браузере и убеждаемся, что в заголовке страницы действительно написано 'Google'.
Чтобы его запустить необходимо:
а ) установить Dalek.js и драйвера для желаемых браузеров (PhantomJS работает из коробки) в директорию заранее созданного проекта node (хотя сам проект по сути не нужен)
Например: Dalek.js + Chrome Driver
$ npm install dalek-cli -g
$ npm install dalekjs --save-dev
$ npm install dalek-browser-chrome --save-dev
б) и выполнить команду:
$ dalek test.js //для тестирования в PhantomJS
$ dalek test.js -b chrome //для тестирования в Chrome
Еще простой тест из документации:
module.exports = {
'Amazon does its thing': function (test) {
test
.open('http://www.amazon.com/')
.type('#twotabsearchtextbox', 'Blues Brothers VHS')
.click('.nav-submit-input')
.waitForElement('#result_0')
.assert.text('#result_0 .newaps a span').is('The Blues Brothers')
.done();
}
};
На Amazon'е ищем видеокассету Blues Brothers и убеждаемся, что в результатах поиска действительно есть искомое.
Не буду дальше копипастить официальную документацию и примеры (всё подробно и понятно на www.dalekjs.com ), а попрошу поддержать проект вашим вниманием. Почему?
Решив освоить использование PhantomJS для тестирования взамен Selenium, стал искать на каком фреймворке (Mocha,Jasmine,...) будет удобнее писать тесты. Слово за слово, и вот Google дал ссылку на этот проект. Написать тест и запустить его сначала в визуальном режиме (на Chrome), а затем в консольном (на PhantomJS ) получилось очень быстро.
Считаю, что Dalek.js имеет несколько удобных фишек: chain-стиль вызовов функций с минимумом параметров, не требует супершаманских танцев с установкой, неплохо документирован. У проекта большое количество открытых багов и обещаний добавить функциональности (например, как минимум, хочется движений мыши, загрузки файлов в формы).
Внимание сообщества в виде увеличения количества звездочек на GitHub'е и твитов в медиапространстве может быть хоть немного поспособствует активности разработки Dalek.js, который пилят уже примерно год несколько ребят из Германии, как считаете?
Оф.сайт Dalek.js
Dalek.js на GitHub
Dalek.js в Твиттере
Автор: antirek