webdriverio/__mocks__/@wdio/utils.ts
2022-07-19 11:19:59 +00:00

113 lines
3.5 KiB
TypeScript

import { vi } from 'vitest'
import {
sleep as sleepOrig,
isFunctionAsync as isFnAsync,
getArgumentType as getArgumentTypeOrig,
isValidParameter as isValidParameterOrig,
commandCallStructure as commandCallStructureOrig
} from '../../packages/wdio-utils/src/utils'
import webdriverMonadOrig from '../../packages/wdio-utils/src/monad'
import {
isW3C as isW3cOrig,
sessionEnvironmentDetector as sessionEnvDetector,
capabilitiesEnvironmentDetector as capabilitiesEnvDetector,
devtoolsEnvironmentDetector as devtoolsEnvDetector
} from '../../packages/wdio-utils/src/envDetector'
import { UNICODE_CHARACTERS as UNICODE_CHARACTERS_ORIG } from '../../packages/wdio-utils/src/constants'
class DotReporter {
options: any
emit: any
constructor (options: any) {
this.options = options
this.emit = vi.fn()
}
}
class RunnerMock {
shutdown = vi.fn()
initialise = vi.fn()
}
class FoobarServiceMock {
beforeSuite () {}
afterCommand () {}
}
const frameworkMocks = {
testNoFailures: {
init () { return this },
hasTests () { return true },
run() { return 0 }
},
testWithFailures: {
init () { return this },
hasTests () { return true },
run() { return 123 }
},
testThrows: {
init () { return this },
hasTests () { return true },
run() { throw new Error('framework testThrows failed') }
},
testNoTests: {
init () { return this },
hasTests () { return false }
}
}
const pluginMocks = {
reporter: {
dot: DotReporter
},
service: {
foobar: FoobarServiceMock
},
runner: {
local: RunnerMock
},
framework: frameworkMocks
}
export const initialisePlugin = vi.fn().mockImplementation(
async (name: keyof typeof frameworkMocks, type: keyof typeof pluginMocks) => (
{ default: (pluginMocks[type] as any)[name] }
)
)
export const initialiseWorkerService = vi.fn().mockReturnValue([])
export const initialiseLauncherService = vi.fn().mockReturnValue({
launcherServices: [],
ignoredWorkerServices: []
})
export const isValidParameter = isValidParameterOrig
export const commandCallStructure = commandCallStructureOrig
export const isFunctionAsync = isFnAsync
export const safeRequire = vi.fn().mockReturnValue(() => {})
export const webdriverMonad = webdriverMonadOrig
export const getArgumentType = getArgumentTypeOrig
/**
* shim
*/
export const executeSync = vi.fn()
export const executeAsync = vi.fn()
export const wrapCommand = (_: any, origFn: any) => origFn
export const runTestInFiberContext = vi.fn().mockReturnValue(vi.fn())
export const executeHooksWithArgs = vi.fn()
export const runFnInFiberContext = vi.fn().mockImplementation((fn) => {
return function (this: unknown, ...args: any[]) {
return Promise.resolve(fn.apply(this, args))
}
})
export const setWdioSyncSupport = (value: boolean) => { hasWdioSyncSupport = value }
export let hasWdioSyncSupport = false
export const testFnWrapper = vi.fn()
export const isW3C = isW3cOrig
export const sessionEnvironmentDetector = vi.fn().mockImplementation(
// @ts-ignore
(...args) => sessionEnvDetector(...args))
export const capabilitiesEnvironmentDetector = capabilitiesEnvDetector
export const devtoolsEnvironmentDetector = devtoolsEnvDetector
export const transformCommandLogResult = vi.fn().mockImplementation((data) => data)
export const canAccess = vi.fn()
export const sleep = vi.fn().mockImplementation(sleepOrig)
export const UNICODE_CHARACTERS = UNICODE_CHARACTERS_ORIG