@wdio/types
Version:
Utility package providing type information for a variety of WebdriverIO interfaces
247 lines • 11.3 kB
TypeScript
import type { Testrunner as TestrunnerOptions, WebdriverIO as WebdriverIOOptions } from './Options.js';
import type { RequestedStandaloneCapabilities, RequestedMultiremoteCapabilities, TestrunnerCapabilities, ResolvedTestrunnerCapabilities } from './Capabilities.js';
import type { Suite, Test, TestResult } from './Frameworks.js';
import type { Worker } from './Workers.js';
export interface RunnerInstance {
initialize(): Promise<void>;
shutdown(): Promise<boolean>;
closeSession?: (cid: number) => Promise<void>;
getWorkerCount(): number;
run(args: any): Worker;
workerPool: any;
browserPool: any;
}
export interface RunnerClass {
new (options: WebdriverIO.BrowserRunnerOptions, config: Omit<WebdriverIOOptions, 'capabilities' | keyof Hooks>): RunnerInstance;
}
export interface RunnerPlugin extends RunnerClass {
default: RunnerClass;
launcher?: RunnerClass;
}
export interface ServiceOption {
[key: string]: any;
}
export interface ServiceClass {
new (options: WebdriverIO.ServiceOption, capabilities: ResolvedTestrunnerCapabilities, config: WebdriverIOOptions): ServiceInstance;
}
export interface ServicePlugin extends ServiceClass {
default: ServiceClass;
launcher?: ServiceClass;
}
export interface ServiceInstance extends HookFunctions {
options?: Record<string, any>;
capabilities?: WebdriverIO.Capabilities;
config?: TestrunnerOptions;
}
interface AssertionHookParams {
/**
* name of the matcher, e.g. `toHaveText` or `toBeClickable`
*/
matcherName: string;
/**
* Value that the user has passed in
*
* @example
* ```
* expect(el).toBeClickable() // expectedValue is undefined
* expect(el).toHaveText('foo') // expectedValue is `'foo'`
* expect(el).toHaveAttribute('attr', 'value', { ... }) // expectedValue is `['attr', 'value]`
* ```
*/
expectedValue?: any;
/**
* Options that the user has passed in, e.g. `expect(el).toHaveText('foo', { ignoreCase: true })` -> `{ ignoreCase: true }`
*/
options: object;
}
interface AfterAssertionHookParams extends AssertionHookParams {
result: {
message: () => string;
result: boolean;
};
}
export type ServiceEntry = (
/**
* e.g. `services: ['@wdio/sauce-service']`
*/
string |
/**
* e.g. `services: [{ onPrepare: () => { ... } }]`
*/
HookFunctions |
/**
* e.g. `services: [CustomClass]`
*/
ServiceClass |
/**
* e.g. `services: [['@wdio/sauce-service', { ... }]]`
*
* Note: we use `WebdriverIO.ServiceOptions` rather than referencing the
* interface directly to allow other services to extend the service option
* with theirs
*/
[
string,
WebdriverIO.ServiceOption
] |
/**
* e.g. `services: [[CustomClass, { ... }]]`
*
* Note: we use `WebdriverIO.ServiceOptions` rather than referencing the
* interface directly to allow other services to extend the service option
* with theirs
*/
[
ServiceClass,
WebdriverIO.ServiceOption
]);
export type Hooks = {
[k in keyof HookFunctions]: HookFunctions[k] | NonNullable<HookFunctions[k]>[];
};
export interface HookFunctions {
/**
* Gets executed once before all workers get launched.
* @param config wdio configuration object
* @param capabilities list of capabilities details
*/
onPrepare?(config: TestrunnerOptions, capabilities: TestrunnerCapabilities): unknown | Promise<unknown>;
/**
* 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 exitCode runner exit code: 0 - success, 1 - fail
* @param config wdio configuration object
* @param capabilities list of capabilities details
* @param results test results
*/
onComplete?(exitCode: number, config: Omit<TestrunnerOptions, 'capabilities'>, capabilities: TestrunnerCapabilities, results: any): unknown | Promise<unknown>;
/**
* 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 cid capability id (e.g 0-0)
* @param capabilities object containing capabilities for session that will be spawn in the worker
* @param specs specs to be run in the worker process
* @param args object that will be merged with the main configuration once worker is initialized
* @param execArgv list of string arguments passed to the worker process
*/
onWorkerStart?(cid: string, capabilities: WebdriverIO.Capabilities, specs: string[], args: TestrunnerOptions, execArgv: string[]): unknown | Promise<unknown>;
/**
* Gets executed just after a worker process has exited.
* @param {string} cid capability id (e.g 0-0)
* @param {number} exitCode 0 - success, 1 - fail
* @param {object} specs specs to be run in the worker process
* @param {number} retries number of retries used
*/
onWorkerEnd?(cid: string, exitCode: number, specs: string[], retries: number): unknown | Promise<unknown>;
/**
* 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 capabilities list of capabilities details
* @param specs specs to be run in the worker process
* @param browser instance of created browser/device session
*/
before?(capabilities: RequestedStandaloneCapabilities | RequestedMultiremoteCapabilities, specs: string[], browser: any): unknown | Promise<unknown>;
/**
* Gets executed after all tests are done. You still have access to all global variables from
* the test.
* @param result number of total failing tests
* @param capabilities list of capabilities details
* @param specs list of spec file paths that are to be run
*/
after?(result: number, capabilities: RequestedStandaloneCapabilities | RequestedMultiremoteCapabilities, specs: string[]): unknown | Promise<unknown>;
/**
* Gets executed just before initialising the webdriver session and test framework. It allows you
* to manipulate configurations depending on the capability or spec.
* @param config wdio configuration object
* @param capabilities list of capabilities details
* @param specs list of spec file paths that are to be run
* @param cid worker id (e.g. 0-0)
*/
beforeSession?(config: Omit<TestrunnerOptions, 'capabilities'>, capabilities: RequestedStandaloneCapabilities | RequestedMultiremoteCapabilities, specs: string[], cid: string): unknown | Promise<unknown>;
/**
* Gets executed right after terminating the webdriver session.
* @param config wdio configuration object
* @param capabilities list of capabilities details
* @param specs list of spec file paths that are to be run
*/
afterSession?(config: TestrunnerOptions, capabilities: WebdriverIO.Capabilities, specs: string[]): unknown | Promise<unknown>;
/**
* Gets executed when a refresh happens.
* @param oldSessionId session id of old session
* @param newSessionId session id of new session
*/
onReload?(oldSessionId: string, newSessionId: string): unknown | Promise<unknown>;
/**
* Hook that gets executed before the suite starts.
* @param suite suite details
*/
beforeSuite?(suite: Suite): unknown | Promise<unknown>;
/**
* Hook that gets executed after the suite has ended
* @param suite suite details
*/
afterSuite?(suite: Suite): unknown | Promise<unknown>;
/**
* 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?(test: Test, context: any): unknown | Promise<unknown>;
/**
* 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?(test: Test, context: any, result: TestResult): unknown | Promise<unknown>;
/**
* Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling
* beforeEach in Mocha). `stepData` and `world` are Cucumber framework specific properties.
* @param test details to current running test (represents step in Cucumber)
* @param context context to current running test (represents World object in Cucumber)
* @param hookName name of the hook
*/
beforeHook?(test: any, context: any, hookName: string): unknown | Promise<unknown>;
/**
* Hook that gets executed _after_ a hook within the suite ends (e.g. runs after calling
* afterEach in Mocha). `stepData` and `world` are Cucumber framework specific.
* @param test details to current running test (represents step in Cucumber)
* @param context context to current running test (represents World object in Cucumber)
* @param result test result
* @param hookName name of the hook
*/
afterHook?(test: Test, context: any, result: TestResult, hookName: string): unknown | Promise<unknown>;
/**
* Runs before a WebdriverIO command gets executed.
* @param commandName command name
* @param args arguments that command would receive
*/
beforeCommand?(commandName: string, args: any[]): unknown | Promise<unknown>;
/**
* Runs after a WebdriverIO command gets executed
* @param commandName command name
* @param args arguments that command would receive
* @param result result of the command
* @param error error in case something went wrong
*/
afterCommand?(commandName: string, args: any[], result: any, error?: Error): unknown | Promise<unknown>;
/**
* Runs before a WebdriverIO assertion library makes an assertion.
* @param commandName command name
* @param args arguments that command would receive
*/
beforeAssertion?(params: AssertionHookParams): unknown | Promise<unknown>;
/**
* Runs after a WebdriverIO command gets executed
* @param commandName command name
* @param args arguments that command would receive
* @param result result of the command
* @param error error in case something went wrong
*/
afterAssertion?(params: AfterAssertionHookParams): unknown | Promise<unknown>;
}
export {};
//# sourceMappingURL=Services.d.ts.map