UNPKG

wdio-mocha-framework

Version:

A WebdriverIO plugin. Adapter for Mocha testing framework.

710 lines (560 loc) 22 kB
import configQPromises from './fixtures/hooks.using.q.promises' import configNativePromises from './fixtures/hooks.using.native.promises' import configWDIOCommands from './fixtures/hooks.using.wdio.commands' import configCustomCommands from './fixtures/hooks.using.custom.commands' import configAsyncCommands from './fixtures/hooks.using.async.conf' import { MochaAdapter } from '../lib/adapter' const specs = ['./test/fixtures/sample.spec.js'] const specs2 = ['./test/fixtures/sample2.spec.js'] const specs3 = ['./test/fixtures/sample3.spec.js'] const specs4 = ['./test/fixtures/sample4.spec.js'] const specs5 = ['./test/fixtures/sample5.spec.js'] const NOOP = () => {} const WebdriverIO = class {} WebdriverIO.prototype = { /** * task of this command is to add 1 so we can have a simple demo test like * browser.command(1).should.be.equal(2) */ command: (a) => new Promise((resolve) => { setTimeout(() => resolve(a + 1), 2000) }), pause: (ms = 500) => new Promise((resolve) => { setTimeout(() => resolve(), ms) }), addCommand: (name, fn) => { WebdriverIO.prototype[name] = fn }, getPrototype: () => WebdriverIO.prototype } process.send = NOOP describe('MochaAdapter executes hooks using native Promises', () => { before(async () => { global.browser = new WebdriverIO() global.browser.options = {} const adapter = new MochaAdapter(0, configNativePromises, specs, configNativePromises.capabilities); (await adapter.run()).should.be.equal(0, 'actual test failed') }) describe('before', () => { let beforeHook before(() => { beforeHook = global._wdio.before }) it('should get executed', () => { beforeHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = beforeHook.end - beforeHook.start duration.should.be.greaterThan(490) }) it('should contain capabilities and spec parameters', () => { beforeHook.args[0].should.be.equal(configNativePromises.capabilities) beforeHook.args[1].should.be.equal(specs) }) }) describe('beforeSuite', () => { let beforeSuiteHook before(() => { beforeSuiteHook = global._wdio.beforeSuite }) it('should get executed', () => { beforeSuiteHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = beforeSuiteHook.end - beforeSuiteHook.start duration.should.be.greaterThan(490) }) it('should contain right suite data', () => { let suite = beforeSuiteHook.args[0] suite.type.should.be.equal('beforeSuite') suite.title.should.be.equal('dummy test') }) }) describe('beforeHook', () => { let beforeHookHook before(() => { beforeHookHook = global._wdio.beforeHook }) it('should get executed', () => { beforeHookHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = beforeHookHook.end - beforeHookHook.start duration.should.be.greaterThan(490) }) }) describe('afterHook', () => { let afterHookHook before(() => { afterHookHook = global._wdio.afterHook }) it('should get executed', () => { afterHookHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = afterHookHook.end - afterHookHook.start duration.should.be.greaterThan(490) }) }) describe('beforeTest', () => { let beforeTestHook before(() => { beforeTestHook = global._wdio.beforeTest }) it('should get executed', () => { beforeTestHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = beforeTestHook.end - beforeTestHook.start duration.should.be.greaterThan(490) }) it('should contain right test data', () => { let test = beforeTestHook.args[0] test.type.should.be.equal('beforeTest') test.title.should.be.equal('sample test') test.fullTitle.should.be.equal('dummy test sample test') test.parent.should.be.equal('dummy test') test.passed.should.be.false() }) }) describe('beforeCommand', () => { let beforeCommandHook before(() => { beforeCommandHook = global._wdio.beforeCommand }) it('should get executed', () => { beforeCommandHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = beforeCommandHook.end - beforeCommandHook.start duration.should.be.greaterThan(490) }) it('should contain right command parameter', () => { beforeCommandHook.args[0].should.be.equal('command') beforeCommandHook.args[1][0].should.be.equal(1) // input }) }) describe('afterCommand', () => { let afterCommandHook before(() => { afterCommandHook = global._wdio.afterCommand }) it('should get executed', () => { afterCommandHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = afterCommandHook.end - afterCommandHook.start duration.should.be.greaterThan(490) }) it('should contain right command parameter', () => { afterCommandHook.args[0].should.be.equal('command') afterCommandHook.args[1][0].should.be.equal(1) // input afterCommandHook.args[2].should.be.equal(2) // result }) }) describe('afterTest', () => { let afterTestHook before(() => { afterTestHook = global._wdio.afterTest }) it('should get executed', () => { afterTestHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = afterTestHook.end - afterTestHook.start duration.should.be.greaterThan(490) }) it('should contain right test data', () => { let test = afterTestHook.args[0] test.type.should.be.equal('afterTest') test.title.should.be.equal('sample test') test.fullTitle.should.be.equal('dummy test sample test') test.parent.should.be.equal('dummy test') test.duration.should.be.greaterThan(2990) // 2000ms command, 2 * 500ms hooks test.passed.should.be.true() }) }) describe('afterSuite', () => { let afterSuiteHook before(() => { afterSuiteHook = global._wdio.afterSuite }) it('should get executed', () => { afterSuiteHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = afterSuiteHook.end - afterSuiteHook.start duration.should.be.greaterThan(490) }) it('should contain right suite data', () => { let suite = afterSuiteHook.args[0] suite.type.should.be.equal('afterSuite') suite.title.should.be.equal('dummy test') }) }) describe('after', () => { let afterHook before(() => { afterHook = global._wdio.after }) it('should get executed', () => { afterHook.wasExecuted.should.be.true() }) it('should defer execution until promise was resolved', () => { let duration = afterHook.end - afterHook.start duration.should.be.greaterThan(490) }) it('should contain capabilities and spec parameters', () => { afterHook.args[0].should.be.equal(0) afterHook.args[1].should.be.equal(configNativePromises.capabilities) afterHook.args[2].should.be.equal(specs) }) }) after(() => { delete global.browser }) }) describe('MochaAdapter executes hooks using WDIO commands', () => { before(async () => { global.browser = new WebdriverIO() global.browser.options = {} const adapter = new MochaAdapter(0, configWDIOCommands, specs2, configWDIOCommands.capabilities); (await adapter.run()).should.be.equal(0, 'actual test failed') }) describe('before', () => { let beforeHook before(() => { beforeHook = global.__wdio.before }) it('should defer execution until promise was resolved', () => { let duration = beforeHook.end - beforeHook.start duration.should.be.greaterThan(490) }) }) describe('beforeSuite', () => { let beforeSuiteHook before(() => { beforeSuiteHook = global.__wdio.beforeSuite }) it('should defer execution until promise was resolved', () => { let duration = beforeSuiteHook.end - beforeSuiteHook.start duration.should.be.greaterThan(490) }) }) describe('beforeHook', () => { let beforeHookHook before(() => { beforeHookHook = global.__wdio.beforeHook }) it('should defer execution until promise was resolved', () => { let duration = beforeHookHook.end - beforeHookHook.start duration.should.be.greaterThan(490) }) }) describe('afterHook', () => { let afterHookHook before(() => { afterHookHook = global.__wdio.afterHook }) it('should defer execution until promise was resolved', () => { let duration = afterHookHook.end - afterHookHook.start duration.should.be.greaterThan(490) }) }) describe('beforeTest', () => { let beforeTestHook before(() => { beforeTestHook = global.__wdio.beforeTest }) it('should defer execution until promise was resolved', () => { let duration = beforeTestHook.end - beforeTestHook.start duration.should.be.greaterThan(490) }) }) describe('beforeCommand', () => { let beforeCommandHook before(() => { beforeCommandHook = global.__wdio.beforeCommand }) it('should defer execution until promise was resolved', () => { let duration = beforeCommandHook.end - beforeCommandHook.start duration.should.be.greaterThan(490) }) }) describe('afterCommand', () => { let afterCommandHook before(() => { afterCommandHook = global.__wdio.afterCommand }) it('should defer execution until promise was resolved', () => { let duration = afterCommandHook.end - afterCommandHook.start duration.should.be.greaterThan(490) }) }) describe('afterTest', () => { let afterTestHook before(() => { afterTestHook = global.__wdio.afterTest }) it('should defer execution until promise was resolved', () => { let duration = afterTestHook.end - afterTestHook.start duration.should.be.greaterThan(490) }) }) describe('afterSuite', () => { let afterSuiteHook before(() => { afterSuiteHook = global.__wdio.afterSuite }) it('should defer execution until promise was resolved', () => { let duration = afterSuiteHook.end - afterSuiteHook.start duration.should.be.greaterThan(490) }) }) describe('after', () => { let afterHook before(() => { afterHook = global.__wdio.after }) it('should defer execution until promise was resolved', () => { let duration = afterHook.end - afterHook.start duration.should.be.greaterThan(490) }) }) }) describe('MochaAdapter executes hooks using 3rd party libs (q library)', () => { before(async () => { global.browser = new WebdriverIO() global.browser.options = {} const adapter = new MochaAdapter(0, configQPromises, specs3, configQPromises.capabilities); (await adapter.run()).should.be.equal(0, 'actual test failed') }) describe('before', () => { let beforeHook before(() => { beforeHook = global.___wdio.before }) it('should defer execution until promise was resolved', () => { let duration = beforeHook.end - beforeHook.start duration.should.be.greaterThan(490) }) }) describe('beforeSuite', () => { let beforeSuiteHook before(() => { beforeSuiteHook = global.___wdio.beforeSuite }) it('should defer execution until promise was resolved', () => { let duration = beforeSuiteHook.end - beforeSuiteHook.start duration.should.be.greaterThan(490) }) }) describe('beforeHook', () => { let beforeHookHook before(() => { beforeHookHook = global.___wdio.beforeHook }) it('should defer execution until promise was resolved', () => { let duration = beforeHookHook.end - beforeHookHook.start duration.should.be.greaterThan(490) }) }) describe('afterHook', () => { let afterHookHook before(() => { afterHookHook = global.___wdio.afterHook }) it('should defer execution until promise was resolved', () => { let duration = afterHookHook.end - afterHookHook.start duration.should.be.greaterThan(490) }) }) describe('beforeTest', () => { let beforeTestHook before(() => { beforeTestHook = global.___wdio.beforeTest }) it('should defer execution until promise was resolved', () => { let duration = beforeTestHook.end - beforeTestHook.start duration.should.be.greaterThan(490) }) }) describe('beforeCommand', () => { let beforeCommandHook before(() => { beforeCommandHook = global.___wdio.beforeCommand }) it('should defer execution until promise was resolved', () => { let duration = beforeCommandHook.end - beforeCommandHook.start duration.should.be.greaterThan(490) }) }) describe('afterCommand', () => { let afterCommandHook before(() => { afterCommandHook = global.___wdio.afterCommand }) it('should defer execution until promise was resolved', () => { let duration = afterCommandHook.end - afterCommandHook.start duration.should.be.greaterThan(490) }) }) describe('afterTest', () => { let afterTestHook before(() => { afterTestHook = global.___wdio.afterTest }) it('should defer execution until promise was resolved', () => { let duration = afterTestHook.end - afterTestHook.start duration.should.be.greaterThan(490) }) }) describe('afterSuite', () => { let afterSuiteHook before(() => { afterSuiteHook = global.___wdio.afterSuite }) it('should defer execution until promise was resolved', () => { let duration = afterSuiteHook.end - afterSuiteHook.start duration.should.be.greaterThan(490) }) }) describe('after', () => { let afterHook before(() => { afterHook = global.___wdio.after }) it('should defer execution until promise was resolved', () => { let duration = afterHook.end - afterHook.start duration.should.be.greaterThan(490) }) }) }) describe('MochaAdapter executes custom commands', () => { before(async () => { global.browser = new WebdriverIO() global.browser.options = {} const adapter = new MochaAdapter(0, configCustomCommands, specs4, configCustomCommands.capabilities); (await adapter.run()).should.be.equal(0, 'actual test failed') }) it('should defer execution until custom wdio command completes', () => { let duration = global.____wdio.customWdio.end - global.____wdio.customWdio.start duration.should.be.greaterThan(990) }) it('should defer execution until custom wdio promise command resolves', () => { let duration = global.____wdio.customWdioPromise.end - global.____wdio.customWdioPromise.start duration.should.be.greaterThan(990) }) it('should defer execution until custom native promise command resolves', () => { let duration = global.____wdio.customNativePromise.end - global.____wdio.customNativePromise.start duration.should.be.greaterThan(990) }) it('should defer execution until custom q promise command resolves', () => { let duration = global.____wdio.customQPromise.end - global.____wdio.customQPromise.start duration.should.be.greaterThan(990) }) it('should defer execution until custom command wrapping custom wdio command resolves', () => { let duration = global.____wdio.customWrapWdio.end - global.____wdio.customWrapWdio.start duration.should.be.greaterThan(990) }) it('should defer execution until custom command wrapping custom wdio promise command resolves', () => { let duration = global.____wdio.customWrapWdioPromise.end - global.____wdio.customWrapWdioPromise.start duration.should.be.greaterThan(990) }) it('should defer execution until custom command wrapping two native promise commands resolves', () => { let duration = global.____wdio.customWrapTwoPromises.end - global.____wdio.customWrapTwoPromises.start duration.should.be.greaterThan(1990) }) it('should defer execution until custom command wrapping wdio comamnd treated as promise resolves', () => { let duration = global.____wdio.customHandleWdioAsPromise.end - global.____wdio.customHandleWdioAsPromise.start duration.should.be.greaterThan(1990) }) }) describe('MochaAdapter executes async hooks', () => { before(async () => { global.browser = new WebdriverIO() global.browser.options = { sync: false } const adapter = new MochaAdapter(0, configAsyncCommands, specs5, configAsyncCommands.capabilities); (await adapter.run()).should.be.equal(0, 'actual test failed') }) describe('before', () => { let beforeHook before(() => { beforeHook = global._____wdio.before }) it('should defer execution until promise was resolved', () => { let duration = beforeHook.end - beforeHook.start duration.should.be.greaterThan(490) }) }) describe('beforeSuite', () => { let beforeSuiteHook before(() => { beforeSuiteHook = global._____wdio.beforeSuite }) it('should defer execution until promise was resolved', () => { let duration = beforeSuiteHook.end - beforeSuiteHook.start duration.should.be.greaterThan(490) }) }) describe('beforeHook', () => { let beforeHookHook before(() => { beforeHookHook = global._____wdio.beforeHook }) it('should defer execution until promise was resolved', () => { let duration = beforeHookHook.end - beforeHookHook.start duration.should.be.greaterThan(490) }) }) describe('afterHook', () => { let afterHookHook before(() => { afterHookHook = global._____wdio.afterHook }) it('should defer execution until promise was resolved', () => { let duration = afterHookHook.end - afterHookHook.start duration.should.be.greaterThan(490) }) }) describe('beforeTest', () => { let beforeTestHook before(() => { beforeTestHook = global._____wdio.beforeTest }) it('should defer execution until promise was resolved', () => { let duration = beforeTestHook.end - beforeTestHook.start duration.should.be.greaterThan(490) }) }) describe('afterTest', () => { let afterTestHook before(() => { afterTestHook = global._____wdio.afterTest }) it('should defer execution until promise was resolved', () => { let duration = afterTestHook.end - afterTestHook.start duration.should.be.greaterThan(490) }) }) describe('afterSuite', () => { let afterSuiteHook before(() => { afterSuiteHook = global._____wdio.afterSuite }) it('should defer execution until promise was resolved', () => { let duration = afterSuiteHook.end - afterSuiteHook.start duration.should.be.greaterThan(490) }) }) describe('after', () => { let afterHook before(() => { afterHook = global._____wdio.after }) it('should defer execution until promise was resolved', () => { let duration = afterHook.end - afterHook.start duration.should.be.greaterThan(490) }) }) })