🏡 index : quine-global/webdriverio.git

/* 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.
 *
 * <b>
 * 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: <code> { "compilerOptions": { "types": ["@wdio/globals/types"] } } </code>
 * </b>
 *
 * @param params Options to create the session with
 * @param remoteModifier Modifier function to change the monad object
 * @return browser object with sessionId
 * @see <a href="https://webdriver.io/docs/typescript">Typescript setup</a>
 */
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.
 *
 * <b>
 * 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).
 * </b>
 *
 * @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 <a href="https://webdriver.io/docs/multiremote">External document and example usage</a>.
 */
exports.multiremote = async function(
    params: any,
    { automationProtocol }: { automationProtocol?: string } = {}
) {
    const { multiremote } = await import('./node.js')
    return multiremote(params, { automationProtocol })
}