UNPKG

cybernaut

Version:

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

99 lines 5.73 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 stubs_1 = require("./stubs"); proxyquire.noPreserveCache(); proxyquire.preserveCache(); proxyquire('../implementation', { 'selenium-webdriver': { Builder: stubs_1.implementationStubs.Builder }, './test': { Test: stubs_1.implementationStubs.Test } }); const implementation_1 = require("../implementation"); let driver; let options; let tap; ava_1.default.beforeEach(() => { stubs_1.resetAll(stubs_1.implementationStubs); stubs_1.implementationStubs.Builder.returns({ withCapabilities: stubs_1.implementationStubs.withCapabilities }); stubs_1.implementationStubs.withCapabilities.returns({ build: stubs_1.implementationStubs.build }); stubs_1.implementationStubs.build.returns(driver = { manage: stubs_1.implementationStubs.manage, quit: stubs_1.implementationStubs.quit }); stubs_1.implementationStubs.manage.returns({ timeouts: stubs_1.implementationStubs.timeouts }); stubs_1.implementationStubs.timeouts.returns({ implicitlyWait: stubs_1.implementationStubs.implicitlyWait, pageLoadTimeout: stubs_1.implementationStubs.pageLoadTimeout, setScriptTimeout: stubs_1.implementationStubs.setScriptTimeout }); options = { capabilities: { browserName: 'chrome' }, retries: 100, retryDelay: 200, timeouts: { element: 300, page: 400, script: 500 } }; tap = { pass: stubs_1.implementationStubs.pass }; }); ava_1.default('`execute` should create a WebDriver and set its timeouts', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () { t.plan(15); yield t.notThrows(implementation_1.execute(stubs_1.implementationStubs.implementation, tap, options)); t.is(stubs_1.implementationStubs.Builder.callCount, 1); t.true(stubs_1.implementationStubs.Builder.calledWithNew()); t.is(stubs_1.implementationStubs.withCapabilities.callCount, 1); t.deepEqual(stubs_1.implementationStubs.withCapabilities.args[0][0], { browserName: 'chrome' }); t.is(stubs_1.implementationStubs.build.callCount, 1); t.is(stubs_1.implementationStubs.implicitlyWait.callCount, 1); t.is(stubs_1.implementationStubs.implicitlyWait.args[0][0], 300); t.is(stubs_1.implementationStubs.pageLoadTimeout.callCount, 1); t.is(stubs_1.implementationStubs.pageLoadTimeout.args[0][0], 400); t.is(stubs_1.implementationStubs.setScriptTimeout.callCount, 1); t.is(stubs_1.implementationStubs.setScriptTimeout.args[0][0], 500); t.is(stubs_1.implementationStubs.manage.callCount, 3); t.is(stubs_1.implementationStubs.timeouts.callCount, 3); t.is(stubs_1.implementationStubs.quit.callCount, 1); })); ava_1.default('`execute` should create a Test and call `implementation`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () { t.plan(9); yield t.notThrows(implementation_1.execute(stubs_1.implementationStubs.implementation, tap, options)); t.is(stubs_1.implementationStubs.implementation.callCount, 1); t.is(stubs_1.implementationStubs.Test.callCount, 1); t.is(stubs_1.implementationStubs.Test.args[0][0], driver); t.is(stubs_1.implementationStubs.Test.args[0][1], 100); t.is(stubs_1.implementationStubs.Test.args[0][2], 200); const test = stubs_1.implementationStubs.implementation.args[0][0]; t.throws(() => test.fail('foo', new Error('bar')), 'foo (cause: bar)'); test.pass('baz'); t.is(stubs_1.implementationStubs.pass.callCount, 1); t.is(stubs_1.implementationStubs.pass.args[0][0], 'baz'); })); ava_1.default('`execute` should await `implicitlyWait`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () { t.plan(4); stubs_1.implementationStubs.implicitlyWait.rejects(new Error('foo')); yield t.throws(implementation_1.execute(stubs_1.implementationStubs.implementation, tap, options), 'foo'); t.is(stubs_1.implementationStubs.implicitlyWait.callCount, 1); t.is(stubs_1.implementationStubs.implementation.callCount, 0); t.is(stubs_1.implementationStubs.quit.callCount, 1); })); ava_1.default('`execute` should await `pageLoadTimeout`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () { t.plan(4); stubs_1.implementationStubs.pageLoadTimeout.rejects(new Error('foo')); yield t.throws(implementation_1.execute(stubs_1.implementationStubs.implementation, tap, options), 'foo'); t.is(stubs_1.implementationStubs.pageLoadTimeout.callCount, 1); t.is(stubs_1.implementationStubs.implementation.callCount, 0); t.is(stubs_1.implementationStubs.quit.callCount, 1); })); ava_1.default('`execute` should await `setScriptTimeout`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () { t.plan(4); stubs_1.implementationStubs.setScriptTimeout.rejects(new Error('foo')); yield t.throws(implementation_1.execute(stubs_1.implementationStubs.implementation, tap, options), 'foo'); t.is(stubs_1.implementationStubs.setScriptTimeout.callCount, 1); t.is(stubs_1.implementationStubs.implementation.callCount, 0); t.is(stubs_1.implementationStubs.quit.callCount, 1); })); ava_1.default('`execute` should await `implementation`', (t) => tslib_1.__awaiter(this, void 0, void 0, function* () { t.plan(3); stubs_1.implementationStubs.implementation.rejects(new Error('foo')); yield t.throws(implementation_1.execute(stubs_1.implementationStubs.implementation, tap, options), 'foo'); t.is(stubs_1.implementationStubs.implementation.callCount, 1); t.is(stubs_1.implementationStubs.quit.callCount, 1); })); //# sourceMappingURL=implementation.test.js.map