exports.config = {
hostname: 'localhost',
port: 4444,
path: '/',
user: 'webdriverio',
key: 'xxxxxxxxxxxxxxxx-xxxxxx-xxxxx-xxxxxxxxx',
region: 'us',
specs: [
'test/spec/**'
],
exclude: [
'test/spec/multibrowser/**',
'test/spec/mobile/**'
],
maxInstances: 10,
maxInstancesPerCapability: 10,
injectGlobals: true,
capabilities: [{
browserName: 'chrome'
}, {
maxInstances: 5,
browserName: 'firefox',
specs: [
'test/ffOnly/*'
]
}],
logLevel: 'info',
outputDir: __dirname,
baseUrl: 'http://localhost:8080',
bail: 0,
waitforTimeout: 1000,
framework: 'mocha',
specFileRetries: 1,
specFileRetriesDelay: 0,
specFileRetriesDeferred: false,
reporters: [
'dot',
['allure', {
outputDir: './allureReports'
}]
],
mochaOpts: {
ui: 'bdd'
},
jasmineOpts: {
defaultTimeoutInterval: 5000,
expectationResultHandler: function(passed, assertion) {
},
grep: null,
invertGrep: null
},
cucumberOpts: {
require: [],
backtrace: false,
requireModule: [],
dryRun: false,
failFast: false,
snippets: true,
source: true,
strict: false,
tagExpression: '',
timeout: 20000,
ignoreUndefinedDefinitions: false,
},
tsConfigPath: './path/to/tsconfig.json',
* Gets executed once before all workers get launched.
* @param {object} config wdio configuration object
* @param {Array.<Object>} capabilities list of capabilities details
*/
onPrepare: function (config, capabilities) {
},
* Gets executed before a worker process is spawned and can be used to initialize specific service
* for that worker as well as modify runtime environments in an async fashion.
* @param {string} cid capability id (e.g 0-0)
* @param {object} caps object containing capabilities for session that will be spawn in the worker
* @param {string[]} specs specs to be run in the worker process
* @param {object} args object that will be merged with the main configuration once worker is initialized
* @param {object} execArgv list of string arguments passed to the worker process
*/
onWorkerStart: function (cid, caps, specs, args, execArgv) {
},
* Gets executed just after a worker process has exited.
* @param {string} cid capability id (e.g 0-0)
* @param {number} exitCode exit code returned from worker process
* @param {string[]} specs specs to be run in the worker process
* @param {number} retries number of retries used
*/
onWorkerEnd: function (cid, exitCode, specs, retries) {
},
* Gets executed just before initialising the webdriver session and test framework. It allows you
* to manipulate configurations depending on the capability or spec.
* @param {object} config wdio configuration object
* @param {Array.<Object>} capabilities list of capabilities details
* @param {Array.<String>} specs List of spec file paths that are to be run
* @param {string} cid worker id (e.g. 0-0)
*/
beforeSession: function (config, capabilities, specs, cid) {
},
* Gets executed before test execution begins. At this point you can access to all global
* variables like `browser`. It is the perfect place to define custom commands.
* @param {Array.<Object>} capabilities list of capabilities details
* @param {Array.<String>} specs List of spec file paths that are to be run
* @param {object} browser instance of created browser/device session
*/
before: function (capabilities, specs, browser) {
},
* Hook that gets executed before the suite starts
* @param {object} suite suite details
*/
beforeSuite: function (suite) {
},
* Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling
* beforeEach in Mocha). In Cucumber `context` is the World object.
*/
beforeHook: function (test, context, hookName) {
},
* Hook that gets executed _after_ a hook within the suite ends (e.g. runs after calling
* afterEach in Mocha). In Cucumber `context` is the World object.
*/
afterHook: function (test, context, { error, result, duration, passed, retries }, hookName) {
},
* Function to be executed before a test (in Mocha/Jasmine only)
* @param {object} test test object
* @param {object} context scope object the test was executed with
*/
beforeTest: function (test, context) {
},
* Runs before a WebdriverIO command gets executed.
* @param {string} commandName command name
* @param {Array} args arguments that command would receive
*/
beforeCommand: function (commandName, args) {
},
* Runs after a WebdriverIO command gets executed.
* @param {string} commandName hook command name
* @param {Array} args arguments that command would receive
* @param {number} result 0 - command success, 1 - command error
* @param {object} error error object if any
*/
afterCommand: function (commandName, args, result, error) {
},
* Function to be executed after a test (in Mocha/Jasmine only)
* @param {object} test test object
* @param {object} context scope object the test was executed with
* @param {Error} result.error error object in case the test fails, otherwise `undefined`
* @param {*} result.result return object of test function
* @param {number} result.duration duration of test
* @param {boolean} result.passed true if test has passed, otherwise false
* @param {object} result.retries information about spec related retries, e.g. `{ attempts: 0, limit: 0 }`
*/
afterTest: function (test, context, { error, result, duration, passed, retries }) {
},
* Hook that gets executed after the suite has ended
* @param {object} suite suite details
*/
afterSuite: function (suite) {
},
* Gets executed after all tests are done. You still have access to all global variables from
* the test.
* @param {number} result 0 - test pass, 1 - test fail
* @param {Array.<Object>} capabilities list of capabilities details
* @param {Array.<String>} specs List of spec file paths that ran
*/
after: function (result, capabilities, specs) {
},
* Gets executed right after terminating the webdriver session.
* @param {object} config wdio configuration object
* @param {Array.<Object>} capabilities list of capabilities details
* @param {Array.<String>} specs List of spec file paths that ran
*/
afterSession: function (config, capabilities, specs) {
},
* Gets executed after all workers got shut down and the process is about to exit. An error
* thrown in the onComplete hook will result in the test run failing.
* @param {object} exitCode 0 - success, 1 - fail
* @param {object} config wdio configuration object
* @param {Array.<Object>} capabilities list of capabilities details
* @param {<Object>} results object containing test results
*/
onComplete: function (exitCode, config, capabilities, results) {
},
* Gets executed when a refresh happens.
* @param {string} oldSessionId session ID of the old session
* @param {string} newSessionId session ID of the new session
*/
onReload: function(oldSessionId, newSessionId) {
},
* Cucumber Hooks
*
* Runs before a Cucumber Feature.
* @param {string} uri path to feature file
* @param {GherkinDocument.IFeature} feature Cucumber feature object
*/
beforeFeature: function (uri, feature) {
},
*
* Runs before a Cucumber Scenario.
* @param {ITestCaseHookParameter} world world object containing information on pickle and test step
* @param {object} context Cucumber World object
*/
beforeScenario: function (world, context) {
},
*
* Runs before a Cucumber Step.
* @param {Pickle.IPickleStep} step step data
* @param {IPickle} scenario scenario pickle
* @param {object} context Cucumber World object
*/
beforeStep: function (step, scenario, context) {
},
*
* Runs after a Cucumber Step.
* @param {Pickle.IPickleStep} step step data
* @param {IPickle} scenario scenario pickle
* @param {object} result results object containing scenario results
* @param {boolean} result.passed true if scenario has passed
* @param {string} result.error error stack if scenario failed
* @param {number} result.duration duration of scenario in milliseconds
* @param {object} context Cucumber World object
*/
afterStep: function (step, scenario, result, context) {
},
*
* Runs after a Cucumber Scenario.
* @param {ITestCaseHookParameter} world world object containing information on pickle and test step
* @param {object} result results object containing scenario results
* @param {boolean} result.passed true if scenario has passed
* @param {string} result.error error stack if scenario failed
* @param {number} result.duration duration of scenario in milliseconds
* @param {object} context Cucumber World object
*/
afterScenario: function (world, result, context) {
},
*
* Runs after a Cucumber Feature.
* @param {string} uri path to feature file
* @param {GherkinDocument.IFeature} feature Cucumber feature object
*/
afterFeature: function (uri, feature) {
}
}