Потрогаем selenium из JS
Кузьмин Валерий, Kontur.Recognition, КонфУР осень 2017,
Екатеринбург
План мастер-класса
- Selenium wtf? (5 минут)
- Тесты на JS (5 минут)
- WDIO (5 минут)
- Практика с WDIO (7 по 10 минут)
- Заключение (5 минут)
1.5 часа (90 минут)
НЕ будет
- юнит-тестов
- моков-спаев
- настройки wdio
- настройки селениум-сервера
Окружение
- node.js > 6
- yarn
- JRE
- chrome
- Все тестировалось на Win10
Selenium wtf?
Test
Test engine,
Bindings
Selenium server
Async code
HTTP
HTTP
Selenium Protocol
+Driver
Устройство
Тесты на JS
Собери себе сам
- Тест-фреймворк (mocha, jasmine)
- Ассерты (assert, chai)
- Раннер (mocha, wdio)
- Репортер (dot, teamcity)
- Моки/спаи (sinon)
Варианты
- Nightwatch
- TestCafe
- Webdriver.io
- selenium-webdriver
WDIO
Как выглядит тест
(mocha.bdd + chai.expect)
describe('basic import functions set', () => {
beforeEach(() => {
browser.clearTestClaim('a#clearTestClaimNew');
browser.goToTestClaim('testClaimNew');
browser.waitForMainPageToLoad();
});
it('can upload a formalized document', () => {
browser.uploadDocumentAndWait(testFiles.formalized_act);
const isDocumentRecognized =
browser.isDocumentRecognized(
FnsType.XmlAcceptanceCertificate);
return chai.expect(isDocumentRecognized).to.be.true;
});
});
Особенности и что можно делать
- Собирается из плагинов
- Асинхронные тесты можно писать синхронно
- Все команды селениума
- Хелперы-ожидания, настройка таймаутов
- Свои команды
- PageObject-ы
Практика
Запусти проект
Открой 3 консоли в директории с проектом, от админа
- yarn, подожди пока установится
- yarn selenium, разреши файрвол
- yarn start, откроется браузер
В 2 консолях оставляем selenium и start
В 3-й будем запускать тесты:
yarn test или yarn test-grep "my test"
01 - открой сайт и проверь текст
browser.url('where')
browser.getText('[data-testid=...]')
assert.equal(actual, expected)
02 - заполни форму
browser.selectByValue('#sel', 'option-value')
browser.setValue('#sel', 'text')
browser.click('#sel')
assert.include(actual, 'substring')
03 - подожди элемент
browser.waitForVisible('#sel')
04 - выполни скрипт
browser.executeAsync((done) => {
...; done();
})
05 - проверь консоль
browser.log('browser').value
msg.level === 'SEVERE'
06 - напиши команду
./wdio-custom-commands.js
browser.ensureNoErrorsInConsole()
На этом все.
Спасибо, что пришел на мой мастер-класс!
vkuzmin@kontur.ru
malcoriel
wdio-at-konfur2017
By Valeriy Kuzmin
wdio-at-konfur2017
- 801