Alex Pavlov
Fullstack web developer
Александр Павлов
AndersenLab
- качество кода / проекта
- качество кода / проекта
- безопасный рефакторинг
- качество кода / проекта
- безопасный рефакторинг
- хороший сон
Вера в профессионализм...
Все и так работает как часы
Разработка / деплой
Через которые прошли мы
- ZombieJs
- PhantomJs
- Selenium Web Driver
+ низкий порог вхождения
+ низкий порог вхождения
+ синхронный flow
+ низкий порог вхождения
+ синхронный flow
+ быстрее, чем selenium
+ низкий порог вхождения
+ синхронный flow
+ быстрее, чем selenium
- не реальный браузер
http://zombie.js.org/
+ низкий порог вхождения
+ синхронный flow
+ быстрее, чем selenium
- не реальный браузер
- периодические глюки
http://zombie.js.org/
- порог вхождения выше
- порог вхождения выше
- нужен мост для nodejs (phridge)
- порог вхождения выше
- нужен мост для nodejs (phridge)
+ быстрее, чем selenium
- порог вхождения выше
- нужен мост для nodejs (phridge)
+ быстрее, чем selenium
- не реальный браузер
- порог вхождения выше
- нужен мост для nodejs (phridge)
+ быстрее, чем selenium
- не реальный браузер
http://phantomjs.org/
- порог вхождения еще выше
- порог вхождения еще выше
- нужен selenium
- порог вхождения еще выше
- нужен selenium
+ реальные браузеры
- порог вхождения еще выше
- нужен selenium
+ реальные браузеры
+ самый реальный результат
https://www.w3.org/TR/webdriver/
- WebDriver.io
- WebDriver.io
- TheIntern
- WebDriver.io
- TheIntern
- Nightwatch.js
- локальный
- в облаке
- локальный (selenium-standalone / руками)
- в облаке (SauceLab / Browserstack / другое)
Мое выражение, когда я только
начал в этом разбираться
1) Ставим установщик selenium:
$npm install selenium-standalone
2) Запускаем установщик:
$node_modules/.bin/selenium-standalone install
3) Запускаем selenium:
$node_modules/.bin/selenium-standalone start
4) Ставим nightwatch:
$npm install nightwatch
5) Ставим lodash:
$npm install lodash
Создаем файл nigthwatch.json
{
"src_folders" : ["e2e"],
"output_folder" : "reports",
"test_settings" : {
"default" : {
"filter" : "*.spec.js",
"selenium_host": "127.0.0.1",
"selenium_port": 4444,
"launch_url" : "https://alexpts.ru",
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
}
}
}
$node_modules/.bin/nightwatch
Создаем файл test.spec.js
в папке e2e
module.exports = {
before: function(client) {
client.windowMaximize();
},
after: function(client) {
client.end();
},
'open main page': function(client) {
client.url(client.launchUrl);
},
'check title': function(client) {
client.assert.title('Alexpts блог');
}
};
Выносим общие тесты и подмешиваем их в основной файл тестов
module.exports = {
before: function(client) {
client.windowMaximize();
},
after: function(client) {
client.end();
}
};
var _ = require('lodash');
var boot = require('./inc/bootstrap.js');
module.exports = _.assign(boot, {
'open main page': function(client) {
client.url(client.launchUrl + '/');
},
'check title': function(client) {
client.assert.title('Alexpts блог');
}
});
- Все поехало
- Все поехало
- Поехало только в 1 браузере
- Все поехало
- Поехало только в 1 браузере
- Виджет не отработал
Подключили еще один скрипт и...
Инструмент для регрессионного тестирования веб страниц на основе скриншотов
$npm install gemini
$npm install gemini-gui
$npm install selenium-standalone
rootUrl: https://alexpts.ru
tolerance: 3.5
screenshotsDir: './screens'
browsers:
chrome:
desiredCapabilities:
acceptSslCerts: true
browserName: chrome
sets:
alexpts.ru:
files:
- ./test/
var gemini = require('gemini');
gemini.suite('header', function(suite) {
suite
.setUrl('/')
.setCaptureElements('header')
.capture('header');
});
var gemini = require('gemini');
gemini.suite('menu', function(suite) {
suite
.setUrl('/')
.setCaptureElements('.technologies', '.fast-menu')
.capture('menu')
.capture('menu hover first', function(actions, find){
var selector = '.technologies > span:nth-child(2)';
actions
.mouseMove(find(selector))
.wait(200);
});
});
$node_modules/.bin/selenium-standalone install
$node_modules/.bin/selenium-standalone start
$node_modules/.bin/gemini update
$node_modules/.bin/gemini test
- BrowserStack.com
- SauseLabs.com
- TestingBot.com
- Lo-Fi (без изображений)
- Заранее настроенный профиль с расширениями
- Proxy / Filter
- Несколько потоков
Александр Павлов
AndersenLab
By Alex Pavlov
Отказ от zombieJs и phantomJs. Обзор инструментов для selenium тестирования на платформе nodeJs. Тестирование верстки с помощью selenium. Работа с selenium фермой. Способы ускорения тестов.