cybernaut
Version:
Reliable, zero configuration end-to-end testing in BDD-style.
187 lines • 9.21 kB
JavaScript
// tslint:disable no-any
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const proxyquire = require("proxyquire");
const ava_1 = require("ava");
const sinon_1 = require("sinon");
const description_1 = require("../description");
const stubs_1 = require("./stubs");
proxyquire.noPreserveCache();
proxyquire.preserveCache();
proxyquire('../browser', {
'fs-promise': { outputFile: stubs_1.browserStubs.outputFile },
'uuid/v4': stubs_1.browserStubs.uuidV4,
'./utils': { sleep: stubs_1.browserStubs.sleep }
});
const browser_1 = require("../browser");
function createTestName(method, result) {
return `\`Browser.${method}\` should return an ${result}`;
}
let browser;
ava_1.default.beforeEach(() => {
stubs_1.resetAll(stubs_1.browserStubs);
browser = new browser_1.Browser('screenshotDirectory');
});
ava_1.default(createTestName('pageTitle', 'accessor'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const accessor = browser.pageTitle;
t.is(description_1.format(accessor.description), 'page title');
const getTitle = sinon_1.stub().resolves('pageTitle');
t.is(yield accessor.get({ getTitle }), 'pageTitle');
t.is(getTitle.callCount, 1);
}));
ava_1.default(createTestName('pageUrl', 'accessor'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const accessor = browser.pageUrl;
t.is(description_1.format(accessor.description), 'page url');
const getCurrentUrl = sinon_1.stub().resolves('pageUrl');
t.is(yield accessor.get({ getCurrentUrl }), 'pageUrl');
t.is(getCurrentUrl.callCount, 1);
}));
ava_1.default(createTestName('windowX', 'accessor'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const accessor = browser.windowX;
t.is(description_1.format(accessor.description), 'window x-position');
const getPosition = sinon_1.stub().resolves({ x: 123, y: 456 });
t.is(yield accessor.get({
manage: () => ({ window: () => ({ getPosition }) })
}), 123);
t.is(getPosition.callCount, 1);
}));
ava_1.default(createTestName('windowY', 'accessor'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const accessor = browser.windowY;
t.is(description_1.format(accessor.description), 'window y-position');
const getPosition = sinon_1.stub().resolves({ x: 123, y: 456 });
t.is(yield accessor.get({
manage: () => ({ window: () => ({ getPosition }) })
}), 456);
t.is(getPosition.callCount, 1);
}));
ava_1.default(createTestName('windowWidth', 'accessor'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const accessor = browser.windowWidth;
t.is(description_1.format(accessor.description), 'window width');
const getSize = sinon_1.stub().resolves({ width: 123, height: 456 });
t.is(yield accessor.get({
manage: () => ({ window: () => ({ getSize }) })
}), 123);
t.is(getSize.callCount, 1);
}));
ava_1.default(createTestName('windowHeight', 'accessor'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const accessor = browser.windowHeight;
t.is(description_1.format(accessor.description), 'window height');
const getSize = sinon_1.stub().resolves({ width: 123, height: 456 });
t.is(yield accessor.get({
manage: () => ({ window: () => ({ getSize }) })
}), 456);
t.is(getSize.callCount, 1);
}));
ava_1.default(createTestName('scriptResult', 'accessor'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(4);
const script = () => undefined;
const accessor = browser.scriptResult('scriptName', script);
t.is(description_1.format(accessor.description), 'result of script \'scriptName\'');
const executeAsyncScript = sinon_1.stub().resolves('scriptResult');
t.is(yield accessor.get({ executeAsyncScript }), 'scriptResult');
t.is(executeAsyncScript.callCount, 1);
t.is(executeAsyncScript.args[0][0], script);
}));
ava_1.default(createTestName('executeScript', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(4);
const script = () => undefined;
const action = browser.executeScript('scriptName', script);
t.is(description_1.format(action.description), 'execute script \'scriptName\'');
const executeAsyncScript = sinon_1.stub().rejects(new Error('foo'));
yield t.throws(action.perform({ executeAsyncScript }), 'foo');
t.is(executeAsyncScript.callCount, 1);
t.is(executeAsyncScript.args[0][0], script);
}));
ava_1.default(createTestName('loadPage', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(4);
const action = browser.loadPage('pageUrl');
t.is(description_1.format(action.description), 'load page \'pageUrl\'');
const to = sinon_1.stub().rejects(new Error('foo'));
yield t.throws(action.perform({ navigate: () => ({ to }) }), 'foo');
t.is(to.callCount, 1);
t.is(to.args[0][0], 'pageUrl');
}));
ava_1.default(createTestName('maximizeWindow', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const action = browser.maximizeWindow();
t.is(description_1.format(action.description), 'maximize window');
const maximize = sinon_1.stub().rejects(new Error('foo'));
yield t.throws(action.perform({ manage: () => ({ window: () => ({ maximize }) }) }), 'foo');
t.is(maximize.callCount, 1);
}));
ava_1.default(createTestName('navigateBack', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const action = browser.navigateBack();
t.is(description_1.format(action.description), 'navigate back');
const back = sinon_1.stub().rejects(new Error('foo'));
yield t.throws(action.perform({ navigate: () => ({ back }) }), 'foo');
t.is(back.callCount, 1);
}));
ava_1.default(createTestName('navigateForward', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const action = browser.navigateForward();
t.is(description_1.format(action.description), 'navigate forward');
const forward = sinon_1.stub().rejects(new Error('foo'));
yield t.throws(action.perform({ navigate: () => ({ forward }) }), 'foo');
t.is(forward.callCount, 1);
}));
ava_1.default(createTestName('reloadPage', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(3);
const action = browser.reloadPage();
t.is(description_1.format(action.description), 'reload page');
const refresh = sinon_1.stub().rejects(new Error('foo'));
yield t.throws(action.perform({ navigate: () => ({ refresh }) }), 'foo');
t.is(refresh.callCount, 1);
}));
ava_1.default(createTestName('setWindowPosition', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(5);
const action = browser.setWindowPosition(123, 456);
t.is(description_1.format(action.description), 'set window position to 123,456');
const setPosition = sinon_1.stub().rejects(new Error('foo'));
yield t.throws(action.perform({
manage: () => ({ window: () => ({ setPosition }) })
}), 'foo');
t.is(setPosition.callCount, 1);
t.is(setPosition.args[0][0], 123);
t.is(setPosition.args[0][1], 456);
}));
ava_1.default(createTestName('setWindowSize', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(5);
const action = browser.setWindowSize(123, 456);
t.is(description_1.format(action.description), 'set window size to 123x456');
const setSize = sinon_1.stub().rejects(new Error('foo'));
yield t.throws(action.perform({ manage: () => ({ window: () => ({ setSize }) }) }), 'foo');
t.is(setSize.callCount, 1);
t.is(setSize.args[0][0], 123);
t.is(setSize.args[0][1], 456);
}));
ava_1.default(createTestName('sleep', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(4);
const action = browser.sleep(50);
t.is(description_1.format(action.description), `sleep for 50 ms`);
stubs_1.browserStubs.sleep.rejects(new Error('foo'));
yield t.throws(action.perform({}), 'foo');
t.is(stubs_1.browserStubs.sleep.callCount, 1);
t.is(stubs_1.browserStubs.sleep.args[0][0], 50);
}));
ava_1.default(createTestName('takeScreenshot', 'action'), (t) => tslib_1.__awaiter(this, void 0, void 0, function* () {
t.plan(6);
stubs_1.browserStubs.uuidV4.returns('uuid');
const action = browser.takeScreenshot();
t.is(description_1.format(action.description), 'take screenshot \'screenshotDirectory/uuid.png\'');
const takeScreenshot = sinon_1.stub().resolves('screenshot');
stubs_1.browserStubs.outputFile.rejects(new Error('foo'));
yield t.throws(action.perform({ takeScreenshot }), 'foo');
t.is(stubs_1.browserStubs.outputFile.callCount, 1);
t.is(stubs_1.browserStubs.outputFile.args[0][0], 'screenshotDirectory/uuid.png');
t.is(stubs_1.browserStubs.outputFile.args[0][1], 'screenshot');
t.deepEqual(stubs_1.browserStubs.outputFile.args[0][2], { encoding: 'base64' });
}));
//# sourceMappingURL=browser.test.js.map