* fix(webdriver): better type check for webSocketUrl capability - fixes #13415 * update mock
122 lines
3.8 KiB
TypeScript
122 lines
3.8 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.js'
|
|
import webdriverMonadOrig from '../../packages/wdio-utils/src/monad.js'
|
|
import {
|
|
isW3C as isW3cOrig,
|
|
isBidi as isBidiOrig,
|
|
sessionEnvironmentDetector as sessionEnvDetector,
|
|
capabilitiesEnvironmentDetector as capabilitiesEnvDetector
|
|
} from '../../packages/wdio-utils/src/envDetector.js'
|
|
import { UNICODE_CHARACTERS as UNICODE_CHARACTERS_ORIG, HOOK_DEFINITION as HOOK_DEFINITION_ORIG } from '../../packages/wdio-utils/src/constants.js'
|
|
|
|
class DotReporter {
|
|
options: any
|
|
emit: any
|
|
constructor (options: any) {
|
|
this.options = options
|
|
this.emit = vi.fn()
|
|
}
|
|
}
|
|
|
|
class RunnerMock {
|
|
shutdown = vi.fn().mockResolvedValue(true)
|
|
initialize = 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 initializePlugin = vi.fn().mockImplementation(
|
|
async (name: keyof typeof frameworkMocks, type: keyof typeof pluginMocks) => (
|
|
{ default: (pluginMocks[type] as any)[name] }
|
|
)
|
|
)
|
|
export const initializeWorkerService = vi.fn().mockReturnValue([])
|
|
export const initializeLauncherService = 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 wrapGlobalTestMethod = 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 isBidi = isBidiOrig
|
|
export const sessionEnvironmentDetector = vi.fn().mockImplementation(
|
|
// @ts-ignore
|
|
(...args) => sessionEnvDetector(...args))
|
|
export const capabilitiesEnvironmentDetector = capabilitiesEnvDetector
|
|
export const transformCommandLogResult = vi.fn().mockImplementation((data) => data)
|
|
export const sleep = vi.fn().mockImplementation(sleepOrig)
|
|
export const UNICODE_CHARACTERS = UNICODE_CHARACTERS_ORIG
|
|
export const HOOK_DEFINITION = HOOK_DEFINITION_ORIG
|
|
|
|
export const startWebDriver = vi.fn((params) => {
|
|
params.hostname = '0.0.0.0'
|
|
params.port = 4444
|
|
params.path = '/'
|
|
})
|
|
export const setupBrowser = vi.fn()
|
|
export const setupDriver = vi.fn()
|
|
export const enableFileLogging = vi.fn()
|