import type { ConfigEnv, InlineConfig } from 'vite'
import type { Workers } from '@wdio/types'
import type { MochaOpts } from '@wdio/mocha-framework'
import type { IstanbulPluginOptions } from 'vite-plugin-istanbul'
declare global {
interface Window {
__wdioEnv__: Environment
wdioDebugContinue: (value: unknown) => void
}
}
export type FrameworkPreset = 'react' | 'preact' | 'vue' | 'svelte' | 'lit' | 'solid' | 'stencil'
type Arrayable<T> = T | Array<T>
type CoverageReporter = 'clover' | 'cobertura' | 'html-spa' | 'html' | 'json-summary' | 'json' | 'lcov' | 'lcovonly' | 'none' | 'teamcity' | 'text-lcov' | 'text-summary' | 'text'
export interface CoverageOptions extends Omit<IstanbulPluginOptions, 'cypress' | 'checkProd' | 'forceBuildInstrument'> {
* Enables coverage collection.
*
* @default false
*/
enabled: boolean
* Directory to write coverage report to.
*
* @default ./coverage
*/
reportsDirectory?: string
* Coverage reporters to use.
* See [istanbul documentation](https://istanbul.js.org/docs/advanced/alternative-reporters/) for detailed list of all reporters.
*
* @default ['text', 'html', 'clover', 'json-summary']
*/
reporter?: Arrayable<CoverageReporter>
* Check thresholds per file.
* See `lines`, `functions`, `branches` and `statements` for the actual thresholds.
*
* @default false
*/
perFile?: boolean
* Clean coverage results before running tests.
*
* @default true
*/
clean?: boolean
* Threshold for lines
*
* @default undefined
*/
lines?: number
* Threshold for functions
*
* @default undefined
*/
functions?: number
* Threshold for branches
*
* @default undefined
*/
branches?: number
* Threshold for statements
*
* @default undefined
*/
statements?: number
}
export interface BrowserRunnerOptions {
* Project root directory
* @default process.cwd()
*/
rootDir?: string
* WebdriverIOs browser runner supports a set of presets to test for a specific framework.
*/
preset?: FrameworkPreset
* Vite configuration to overwrite the preset
*/
viteConfig?: string | InlineConfig | ((env: ConfigEnv) => InlineConfig | Promise<InlineConfig>)
* Run tests in headless mode
* @default false // true in CI environment
*/
headless?: boolean
* test coverage settings
*/
coverage?: CoverageOptions
* If set to `true` WebdriverIO will automatically mock dependencies within the `automockDir` directory
* @default true
*/
automock?: boolean
* Path of auto-mock directory. This tells WebdriverIO where to look for dependencies to mock out.
* @default ./__mocks__
*/
automockDir?: string
* Set a custom hostname for the server hosting the test files (e.g. the system that runs the WebdriverIO process)
* in case you are running on a remote grid. Let's say you've set the following capabilities:
* ```js
* {
* hostname: 'company.grid.com',
* port: 4444,
* path: '/',
* protocol: 'http',
* }
* ```
* In order for the browser to connect to the correct server, you need to set the `hostname` to the IP or hostname
* of the machine that runs the WebdriverIO process.
*
* @default http://0.0.0.0
*/
host?: string
}
export interface RunArgs extends Workers.WorkerRunPayload {
command: string
args: Record<string, string>
cid: string
}
export interface Environment {
args: MochaOpts
config: WebdriverIO.Config
capabilities: WebdriverIO.Capabilities
sessionId: string
injectGlobals: boolean
}
export type MockFactoryWithHelper = (importOriginal: <T = unknown>() => Promise<T>) => unknown