PayPS, Петунин Владимир
Руками?
Тестировщик?
Автоматические
тесты?
Selenium
PhantomJS
SlimerJS
> slimerjs test.js --headless param1 param2
var page = require('webpage').create();
page.viewportSize = { width:650, height:320 };
page
.open('http://mypage.com') // загружаем страницу
.then(() => {
page.sendEvent('click', x, y, 'left', modifier);
page.sendEvent('keypress', 'A');
page.render('page.png');
slimer.exit();
});
page.onResourceRequested((requestData, request) => {});
page.onResourceReceived((response) => {});
page.onConsoleMessage((message, line, file) => {});
page.onPrompt((question, defaultResponse) => "Answer");
page.onFilePicker(() => "/path/to/file");
var result = page.evaluate(() => document.getElementById('result'));
expect.click = (page, selector) => {
var coords = page.evaluate((selector) => {
var element = document.querySelector(selector)
element.scrollIntoView();
var rect = element.getBoundingClientRect();
return rect;
}, selector);
page.sendEvent('click', coords.x, coords.y, 'left');
}
page.open('http://mysite.com/login')
.then(() => expect.fill(page, '#login', 'admin'))
.then(() => expect.fill(page, '#password', 'topsecret'))
.then(() => expect.setOn(page, '#time', 'day'))
.then(() => expect.click(page, '#submit'))
.then(() => expect.waitFor(page, '#success'))
.catch(error => {
console.error(error);
page.render('login.jpg');
slimer.exit(-1);
});
slimerjs.org