/* eslint-disable @typescript-eslint/no-explicit-any */ exports.SevereServiceError = class SevereServiceError extends Error { constructor(message = 'Severe Service Error occurred.') { super(message) this.name = 'SevereServiceError' } } exports.Key = { Ctrl: 'WDIO_CONTROL', NULL: '\uE000', Cancel: '\uE001', Help: '\uE002', Backspace: '\uE003', Tab: '\uE004', Clear: '\uE005', Return: '\uE006', Enter: '\uE007', Shift: '\uE008', Control: '\uE009', Alt: '\uE00A', Pause: '\uE00B', Escape: '\uE00C', Space: '\uE00D', PageUp: '\uE00E', PageDown: '\uE00F', End: '\uE010', Home: '\uE011', ArrowLeft: '\uE012', ArrowUp: '\uE013', ArrowRight: '\uE014', ArrowDown: '\uE015', Insert: '\uE016', Delete: '\uE017', Semicolon: '\uE018', Equals: '\uE019', Numpad0: '\uE01A', Numpad1: '\uE01B', Numpad2: '\uE01C', Numpad3: '\uE01D', Numpad4: '\uE01E', Numpad5: '\uE01F', Numpad6: '\uE020', Numpad7: '\uE021', Numpad8: '\uE022', Numpad9: '\uE023', Multiply: '\uE024', Add: '\uE025', Separator: '\uE026', Subtract: '\uE027', Decimal: '\uE028', Divide: '\uE029', F1: '\uE031', F2: '\uE032', F3: '\uE033', F4: '\uE034', F5: '\uE035', F6: '\uE036', F7: '\uE037', F8: '\uE038', F9: '\uE039', F10: '\uE03A', F11: '\uE03B', F12: '\uE03C', Command: '\uE03D', ZenkakuHankaku: '\uE040' } /** * A method to create a new session with WebdriverIO. * * * NOTE: If you hit "error TS2694: Namespace 'global.WebdriverIO' has no exported member 'Browser'" when using typescript, * add "@wdio/globals/types" into tsconfig.json's "types" array will solve it: { "compilerOptions": { "types": ["@wdio/globals/types"] } } * * * @param params Options to create the session with * @param remoteModifier Modifier function to change the monad object * @return browser object with sessionId * @see Typescript setup */ exports.remote = async function( params: any, remoteModifier?: () => any ) { const { remote } = await import('./node.js') return remote(params, remoteModifier) } exports.attach = async function(attachOptions: any) { const { attach } = await import('./node.js') return attach(attachOptions) } /** * WebdriverIO allows you to run multiple automated sessions in a single test. * This is handy when you're testing features that require multiple users (for example, chat or WebRTC applications). * * Instead of creating a couple of remote instances where you need to execute common commands like newSession() or url() on each instance, * you can simply create a multiremote instance and control all browsers at the same time. * * * NOTE: Multiremote is not meant to execute all your tests in parallel. * It is intended to help coordinate multiple browsers and/or mobile devices for special integration tests (e.g. chat applications). * * * @param params capabilities to choose desired devices. * @param automationProtocol * @return All remote instances, the first result represents the capability defined first in the capability object, * the second result the second capability and so on. * * @see External document and example usage. */ exports.multiremote = async function( params: any, { automationProtocol }: { automationProtocol?: string } = {} ) { const { multiremote } = await import('./node.js') return multiremote(params, { automationProtocol }) }