UNPKG

cybernaut

Version:

Reliable, zero configuration end-to-end testing in BDD-style.

187 lines 9.21 kB
// tslint:disable no-any "use strict"; 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