import type { WebDriver as WebDriverOptions, WebdriverIO as WebDriverIOOptions, Connection as ConnectionOptions } from './Options.js'; type JSONLike = { [property: string]: JSONLike; } | readonly JSONLike[] | string | number | boolean | null; type RemoveAppiumPrefix = { [K in keyof T as K extends `appium:${infer R}` ? R : K]: T[K]; }; export type PageLoadingStrategy = 'none' | 'eager' | 'normal'; export type LoggingPreferenceType = 'OFF' | 'SEVERE' | 'WARNING' | 'INFO' | 'CONFIG' | 'FINE' | 'FINER' | 'FINEST' | 'ALL'; export interface LoggingPreferences { browser?: LoggingPreferenceType; driver?: LoggingPreferenceType; server?: LoggingPreferenceType; client?: LoggingPreferenceType; } export type Timeouts = Record<'script' | 'pageLoad' | 'implicit', number>; export type ProxyTypes = 'pac' | 'noproxy' | 'autodetect' | 'system' | 'manual'; export interface ProxyObject { proxyType?: ProxyTypes; proxyAutoconfigUrl?: string; ftpProxy?: string; ftpProxyPort?: number; httpProxy?: string; httpProxyPort?: number; sslProxy?: string; sslProxyPort?: number; socksProxy?: string; socksProxyPort?: number; socksVersion?: string; socksUsername?: string; socksPassword?: string; noProxy?: string[]; } declare global { namespace WebdriverIO { interface Capabilities extends VendorExtensions, ConnectionOptions { /** * Identifies the user agent. */ browserName?: string; /** * Identifies the version of the user agent. */ browserVersion?: string; /** * Identifies the operating system of the endpoint node. */ platformName?: string; /** * Indicates whether untrusted and self-signed TLS certificates are implicitly trusted on navigation for the duration of the session. */ acceptInsecureCerts?: boolean; /** * Defines the current session’s page load strategy. */ pageLoadStrategy?: PageLoadingStrategy; /** * Defines the current session’s proxy configuration. */ proxy?: ProxyObject; /** * Indicates whether the remote end supports all of the resizing and repositioning commands. */ setWindowRect?: boolean; /** * Describes the timeouts imposed on certain session operations. */ timeouts?: Timeouts; /** * Defines the current session’s strict file interactability. */ strictFileInteractability?: boolean; /** * Describes the current session’s user prompt handler. Defaults to the dismiss and notify state. */ unhandledPromptBehavior?: string; /** * WebDriver clients opt in to a bidirectional connection by requesting a capability with the name "webSocketUrl" and value true. */ webSocketUrl?: boolean; } } } export interface W3CCapabilities { alwaysMatch: WebdriverIO.Capabilities; firstMatch: WebdriverIO.Capabilities[]; } export type RequestedStandaloneCapabilities = W3CCapabilities | WebdriverIO.Capabilities; export type RequestedMultiremoteCapabilities = { [instanceName: string]: WebDriverIOOptions & WithRequestedCapabilities; }; /** * Configuration object for the `webdriver` package */ export type RemoteConfig = WebDriverOptions & WithRequestedCapabilities; /** * Configuration object for the `webdriverio` package */ export type WebdriverIOConfig = WebDriverIOOptions & WithRequestedCapabilities; export type WebdriverIOMultiremoteConfig = WebDriverIOOptions & { capabilities: RequestedMultiremoteCapabilities; }; /** * A type referencing all possible capability types when using Testrunner * e.g. everything a user can provide in the `capabilities` property */ export type TestrunnerCapabilities = RequestedStandaloneCapabilities[] | RequestedMultiremoteCapabilities | RequestedMultiremoteCapabilities[]; /** * The capabilities that will be resolved within a worker instance, e.g. either * a single set of capabilities or a single multiremote instance */ export type ResolvedTestrunnerCapabilities = WebdriverIO.Capabilities | Record; /** * The `capabilities` property is a required property when using the `remote` method. */ export interface WithRequestedCapabilities { /** * Defines the capabilities you want to run in your WebDriver session. Check out the * documentation on [Capabilities](https://webdriver.io/docs/capabilities) for more details. * * @example * ```js * // WebDriver session * const browser = remote({ * capabilities: { * browserName: 'chrome', * browserVersion: 86 * platformName: 'Windows 10' * } * }) * * // multiremote session * const browser = remote({ * capabilities: { * browserA: { * browserName: 'chrome', * browserVersion: 86 * platformName: 'Windows 10' * }, * browserB: { * browserName: 'firefox', * browserVersion: 74 * platformName: 'Mac OS X' * } * } * }) * ``` */ capabilities: RequestedStandaloneCapabilities; } /** * The `capabilities` property is a required property when defining a testrunner configuration. */ export interface WithRequestedTestrunnerCapabilities { /** * Defines a set of capabilities you want to run in your WebDriver session. Check out the * documentation on [Capabilities](https://webdriver.io/docs/capabilities) for more details. * * @example * ```js * // wdio.conf.js * export const config = { * // define parallel running capabilities * capabilities: [{ * browserName: 'safari', * platformName: 'MacOS 10.13', * ... * }, { * browserName: 'microsoftedge', * platformName: 'Windows 10', * ... * }, { * // using alwaysMatch and firstMatch * alwaysMatch: { * browserName: 'chrome', * browserVersion: 86 * // ... * }, * firstMatch: [{ * browserName: 'chrome', * // ... * }] * } * ``` */ capabilities: RequestedStandaloneCapabilities[]; } /** * The `capabilities` property is a required property when using the `remote` method to initiate a multiremote session. */ export interface WithRequestedMultiremoteCapabilities { /** * Defines the capabilities for each Multiremote client. Check out the * documentation on [Capabilities](https://webdriver.io/docs/capabilities) for more details. * * @example * ``` * // wdio.conf.js * export const config = { * // multiremote example * capabilities: { * browserA: { * browserName: 'chrome', * browserVersion: 86 * platformName: 'Windows 10' * }, * browserB: { * browserName: 'firefox', * browserVersion: 74 * platformName: 'Mac OS X' * } * } * }) * ``` * // or with parallel multiremote sessions * ``` * // wdio.conf.js * export const config = { * capabilities: [{ * browserA: { * port: 4444, * capabilities: { * browserName: 'chrome', * browserVersion: 86 * platformName: 'Windows 10' * } * }, * browserB: { * port: 4444, * capabilities: { * browserName: 'firefox', * browserVersion: 74 * platformName: 'Mac OS X' * } * } * }, { * browserA: { * port: 4444, * capabilities: { * browserName: 'chrome', * browserVersion: 86 * platformName: 'Windows 10' * } * }, * browserB: { * port: 4444, * capabilities: { * browserName: 'firefox', * browserVersion: 74 * platformName: 'Mac OS X' * } * } * }] * }) * ``` */ capabilities: RequestedMultiremoteCapabilities | RequestedMultiremoteCapabilities[]; } export interface VendorExtensions extends EdgeCapabilities, AppiumCapabilities, WebdriverIOCapabilities, WebdriverIO.WDIOVSCodeServiceOptions, AppiumXCUITestCapabilities, AppiumAndroidCapabilities { 'appium:options'?: AppiumOptions; 'selenoid:options'?: SelenoidOptions; 'moon:options'?: MoonOptions; 'tb:options'?: TestingbotCapabilities; 'sauce:options'?: SauceLabsCapabilities; 'sauce:visual'?: SauceLabsVisualCapabilities; 'experitest:accessKey'?: string; 'LT:Options'?: LambdaTestCapabilities; 'lt:options'?: LambdaTestCapabilities; 'bstack:options'?: BrowserStackCapabilities; 'browserstack.local'?: boolean; 'browserstack.accessibility'?: boolean; 'browserstack.accessibilityOptions'?: { [key: string]: any; }; /** * @private */ 'browserstack.wdioService'?: string; 'browserstack.buildIdentifier'?: string; 'browserstack.localIdentifier'?: string; 'browserstack.testhubBuildUuid'?: string; 'browserstack.buildProductMap'?: { [key: string]: boolean; }; 'goog:chromeOptions'?: ChromeOptions; 'moz:firefoxOptions'?: FirefoxOptions; 'moz:debuggerAddress'?: string | boolean; 'ms:edgeOptions'?: MicrosoftEdgeOptions; 'ms:edgeChromium'?: MicrosoftEdgeOptions; 'ms:experimental-webdriver'?: boolean; 'ms:waitForAppLaunch'?: string; 'safari.options'?: { [name: string]: any; }; /** * Selenium 4.0 Specific */ 'se:cdp'?: string; } export type AppiumOptions = RemoveAppiumPrefix; export interface WebdriverIOCapabilities { /** * process id of driver attached to given session */ 'wdio:driverPID'?: number; 'wdio:chromedriverOptions'?: WebdriverIO.ChromedriverOptions; 'wdio:safaridriverOptions'?: WebdriverIO.SafaridriverOptions; 'wdio:geckodriverOptions'?: WebdriverIO.GeckodriverOptions; 'wdio:edgedriverOptions'?: WebdriverIO.EdgedriverOptions; /** * Maximum number of total parallel running workers (per capability) */ 'wdio:maxInstances'?: number; /** * Define specs for test execution. You can either specify a glob * pattern to match multiple files at once or wrap a glob or set of * paths into an array to run them within a single worker process. */ 'wdio:specs'?: string[]; /** * Exclude specs from test execution. */ 'wdio:exclude'?: string[]; /** * If flag is set to `true` WebdriverIO will not automatically opt-in * to the WebDriver BiDi protocol. This is useful if you want to use * the WebDriver protocol only. */ 'wdio:enforceWebDriverClassic'?: boolean; } export interface ChromeOptions { /** * List of command-line arguments to use when starting Chrome. Arguments with an * associated value should be separated by a '=' sign (e.g., `['start-maximized', 'user-data-dir=/tmp/temp_profile']`). * See here for a list of Chrome arguments. */ args?: string[]; /** * Path to the Chrome executable to use (on Mac OS X, this should be the actual binary, * not just the app. e.g., '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome') */ binary?: string; /** * A list of Chrome extensions to install on startup. Each item in the list should * be a base-64 encoded packed Chrome extension (.crx) */ extensions?: string[]; /** * A dictionary with each entry consisting of the name of the preference and its value. * These preferences are applied to the Local State file in the user data folder. */ localState?: { [name: string]: any; }; /** * If false, Chrome will be quit when ChromeDriver is killed, regardless of whether * the session is quit. If true, Chrome will only be quit if the session is quit * (or closed). Note, if true, and the session is not quit, ChromeDriver cannot clean * up the temporary user data directory that the running Chrome instance is using. */ detach?: boolean; /** * An address of a Chrome debugger server to connect to, in the form of ``, * e.g. '127.0.0.1:38947' */ debuggerAddress?: string; /** * List of Chrome command line switches to exclude that ChromeDriver by default passes * when starting Chrome. Do not prefix switches with --. */ excludeSwitches?: string[]; /** * Directory to store Chrome minidumps . (Supported only on Linux.) */ minidumpPath?: string; /** * A dictionary with either a value for "deviceName", or values for "deviceMetrics" and * "userAgent". Refer to Mobile Emulation for more information. */ mobileEmulation?: { userAgent?: string; deviceName?: string; deviceMetrics?: { width?: number; height?: number; pixelRatio?: number; touch?: boolean; }; }; /** * An optional dictionary that specifies performance logging preferences. See * [Chromedriver docs](http://chromedriver.chromium.org/capabilities) for * more information. */ perfLoggingPrefs?: { /** * Whether or not to collect events from Network domain. * @default true */ enableNetwork?: boolean; /** * Whether or not to collect events from Page domain. * @default true */ enablePage?: boolean; /** * A comma-separated string of Chrome tracing categories for which trace events * should be collected. An unspecified or empty string disables tracing. * @default '' */ tracingCategories?: string; /** * The requested number of milliseconds between DevTools trace buffer * usage events. For example, if 1000, then once per second, DevTools * will report how full the trace buffer is. If a report indicates the * buffer usage is 100%, a warning will be issued. * @default 1000 */ bufferUsageReportingInterval?: number; }; /** * A dictionary with each entry consisting of the name of the preference and its value. * These preferences are only applied to the user profile in use. See the 'Preferences' * file in Chrome's user data directory for examples. */ prefs?: Record; /** * A list of window types that will appear in the list of window handles. For access * to elements, include "webview" in this list. */ windowTypes?: string[]; } /** * Chromium Edge */ interface MicrosoftEdgeOptions extends ChromeOptions { } export type FirefoxLogLevels = 'trace' | 'debug' | 'config' | 'info' | 'warn' | 'error' | 'fatal'; export interface FirefoxLogObject { level: FirefoxLogLevels; } export interface FirefoxOptions { debuggerAddress?: string; binary?: string; args?: string[]; profile?: string; log?: FirefoxLogObject; prefs?: { [name: string]: string[] | string | number | boolean; }; } export interface SelenoidOptions { enableVNC?: boolean; screenResolution?: string; enableVideo?: boolean; videoName?: string; videoScreenSize?: string; videoFrameRate?: number; videoCodec?: string; enableLog?: boolean; logName?: string; name?: string; sessionTimeout?: string; timeZone?: string; env?: string[]; applicationContainers?: string[]; hostsEntries?: string[]; dnsServers?: string[]; additionalNetworks?: string[]; labels?: Map; skin?: string; s3KeyPattern?: string; } export type MoonMobileDeviceOrientation = 'portrait' | 'vertical' | 'landscape' | 'horizontal'; export interface MoonOptions extends SelenoidOptions { mobileDevice?: { deviceName: string; orientation: MoonMobileDeviceOrientation; }; logLevel?: string; } export interface EdgeCapabilities { 'ms:inPrivate'?: boolean; 'ms:extensionPaths'?: string[]; 'ms:startPage'?: string; } /** * Appium General W3C Capabilities * * @see https://appium.io/docs/en/latest/guides/caps/ */ export interface AppiumCapabilities { /** * Which automation engine to use. * * Acceptable values: * + 'Appium' (default) * + 'UiAutomator2' for Android * + 'Espresso' for Android * + 'UiAutomator1' for Android * + 'XCUITest' or 'Instruments' for iOS * + 'YouiEngine' for application built with You.i Engine */ 'appium:automationName'?: string; /** * Which mobile OS platform to use. * * Acceptable values: * + 'iOS' * + 'Android' * + 'FirefoxOS' */ 'appium:platformName'?: string; /** * Expected mobile OS version, eg: '7.1', '4.4' etc. */ 'appium:platformVersion'?: string; /** * The kind of mobile device or emulator to use, for each platform, it accept different kind of values. * * ### For iOS, it could be: * * + Simulator name, eg: 'iPhone Simulator', 'iPad Simulator', 'iPhone Retina 4-inch'. * + Instruments name, which comes from 'instruments -s devices' command. * + xctrace device name, which comes from 'xcrun xctrace list devices' command. (since Xcode 12) * * ### For Android, this capability is currently ignored, though it remains required. * Note: This document is written with appium 1.22.1 release, this behavior may changed later. */ 'appium:deviceName'?: string; /** * The absolute local path or remote http URL to a .ipa file (IOS), .app folder (IOS Simulator), .apk file (Android) * or [.apks file (Android App Bundle)](https://github.com/appium/appium-uiautomator2-driver/blob/master/docs/android-appbundle.md), * or a .zip file containing one of these. * * Appium will attempt to install this app binary on the appropriate device first. * Note that this capability is not required for Android if you specify appPackage and appActivity capabilities. * UiAutomator2 and XCUITest allow to start the session without app or appPackage. */ 'appium:app'?: string; /** * The id of the app to be tested. eg: 'com.android.chrome'. */ 'appium:appPackage'?: string; 'appium:appWaitActivity'?: string; 'appium:newCommandTimeout'?: number; 'appium:language'?: string; 'appium:locale'?: string; 'appium:animationCoolOffTimeout'?: number; /** * iOS Unique Device Identifier */ 'appium:udid'?: string; 'appium:orientation'?: string; 'appium:autoWebview'?: boolean; 'appium:noReset'?: boolean; 'appium:fullReset'?: boolean; 'appium:eventTimings'?: boolean; 'appium:enablePerformanceLogging'?: boolean; 'appium:printPageSourceOnFindFailure'?: boolean; 'appium:nativeWebTap'?: boolean; /** * Users as directConnect feature by the server * https://appiumpro.com/editions/86-connecting-directly-to-appium-hosts-in-distributed-environments */ 'appium:directConnectProtocol'?: string; 'appium:directConnectHost'?: string; 'appium:directConnectPort'?: number; 'appium:directConnectPath'?: string; /** * Windows-specific capability: Please see https://github.com/appium/appium-windows-driver#usage * This is a hexadecimal handle of an existing application top level window to attach to. Either this * capability or 'appium:app' must be provided on session startup. */ 'appium:appTopLevelWindow'?: string; /** * https://appium.io/docs/en/latest/guides/settings/#initializing-settings-via-capabilities */ 'appium:settings'?: Record; } /** * Appium Android Only Capabilities * * @see https://github.com/appium/appium-uiautomator2-driver#capabilities */ export interface AppiumAndroidCapabilities { 'appium:appiumVersion'?: string; 'appium:appActivity'?: string; 'appium:appPackage'?: string; 'appium:appWaitActivity'?: string; 'appium:appWaitPackage'?: string; 'appium:appWaitDuration'?: number; 'appium:deviceReadyTimeout'?: number; 'appium:allowTestPackages'?: boolean; 'appium:androidCoverage'?: string; 'appium:androidCoverageEndIntent'?: string; 'appium:androidDeviceReadyTimeout'?: number; 'appium:androidInstallTimeout'?: number; 'appium:androidInstallPath'?: string; 'appium:adbPort'?: number; 'appium:systemPort'?: number; 'appium:remoteAdbHost'?: string; 'appium:androidDeviceSocket'?: string; 'appium:avd'?: string; 'appium:avdLaunchTimeout'?: number; 'appium:avdReadyTimeout'?: number; 'appium:avdArgs'?: string; 'appium:useKeystore'?: boolean; 'appium:keystorePath'?: string; 'appium:keystorePassword'?: string; 'appium:keyAlias'?: string; 'appium:keyPassword'?: string; 'appium:chromedriverExecutable'?: string; 'appium:chromedriverArgs'?: string[]; 'appium:chromedriverExecutableDir'?: string; 'appium:chromedriverChromeMappingFile'?: string; 'appium:chromedriverUseSystemExecutable'?: boolean; 'appium:autoWebviewTimeout'?: number; 'appium:chromedriverPort'?: number; 'appium:chromedriverPorts'?: (number | number[])[]; 'appium:intentAction'?: string; 'appium:intentCategory'?: string; 'appium:intentFlags'?: string; 'appium:optionalIntentArguments'?: string; 'appium:dontStopAppOnReset'?: boolean; 'appium:unicodeKeyboard'?: boolean; 'appium:resetKeyboard'?: boolean; 'appium:noSign'?: boolean; 'appium:ignoreUnimportantViews'?: boolean; 'appium:disableAndroidWatchers'?: boolean; 'appium:recreateChromeDriverSessions'?: boolean; 'appium:nativeWebScreenshot'?: boolean; 'appium:androidScreenshotPath'?: string; 'appium:autoGrantPermissions'?: boolean; 'appium:networkSpeed'?: string; 'appium:gpsEnabled'?: boolean; 'appium:isHeadless'?: boolean; 'appium:adbExecTimeout'?: number; 'appium:localeScript'?: string; 'appium:skipDeviceInitialization'?: boolean; 'appium:chromedriverDisableBuildCheck'?: boolean; 'appium:skipUnlock'?: boolean; 'appium:unlockType'?: string; 'appium:unlockKey'?: string; 'appium:autoLaunch'?: boolean; 'appium:skipLogcatCapture'?: boolean; 'appium:uninstallOtherPackages'?: string; 'appium:disableWindowAnimation'?: boolean; 'appium:otherApps'?: string | string[]; 'appium:uiautomator2ServerLaunchTimeout'?: number; 'appium:uiautomator2ServerInstallTimeout'?: number; 'appium:skipServerInstallation'?: boolean; 'appium:espressoServerLaunchTimeout'?: number; 'appium:disableSuppressAccessibilityService'?: boolean; 'appium:hideKeyboard'?: boolean; 'appium:autoWebviewName'?: string; 'appium:uiautomator2ServerReadTimeout'?: number; 'appium:appWaitForLaunch'?: boolean; 'appium:remoteAppsCacheLimit'?: number; 'appium:enforceAppInstall'?: boolean; 'appium:clearDeviceLogsOnStart'?: boolean; 'appium:buildToolsVersion'?: string; 'appium:suppressKillServer'?: boolean; 'appium:ignoreHiddenApiPolicyError'?: boolean; 'appium:mockLocationApp'?: string; 'appium:logcatFormat'?: string; 'appium:logcatFilterSpecs'?: string; 'appium:allowDelayAdb'?: boolean; 'appium:avdEnv'?: { [key: string]: string; }; 'appium:unlockStrategy'?: string; 'appium:unlockSuccessTimeout'?: number; 'appium:webviewDevtoolsPort'?: number; 'appium:ensureWebviewsHavePages'?: boolean; 'appium:enableWebviewDetailsCollection'?: boolean; 'appium:extractChromeAndroidPackageFromContextName'?: boolean; 'appium:showChromedriverLog'?: boolean; 'appium:chromeOptions'?: { [key: string]: any; }; 'appium:chromeLoggingPrefs'?: { [key: string]: any; }; 'appium:userProfile'?: number; } /** * Appium xcuitest Capabilities * * @see https://appium.github.io/appium-xcuitest-driver/latest/reference/capabilities/ */ export interface AppiumXCUITestCapabilities { 'appium:platformName'?: string; 'appium:browserName'?: string; 'appium:app'?: string; 'appium:calendarFormat'?: string; 'appium:bundleId'?: string; 'appium:launchTimeout'?: number; 'appium:udid'?: string; 'appium:appName'?: string; 'appium:waitForAppScript'?: string; 'appium:sendKeyStrategy'?: string; 'appium:screenshotWaitTimeout'?: number; 'appium:interKeyDelay'?: number; 'appium:nativeInstrumentsLib'?: boolean; 'appium:autoAcceptAlerts'?: boolean; 'appium:autoDismissAlerts'?: boolean; 'appium:nativeWebTap'?: boolean; 'appium:safariInitialUrl'?: string; 'appium:safariAllowPopups'?: boolean; 'appium:safariIgnoreFraudWarning'?: boolean; 'appium:safariOpenLinksInBackground'?: boolean; 'appium:safariShowFullResponse'?: boolean; 'appium:keepKeyChains'?: boolean; 'appium:locationServicesEnabled'?: boolean; 'appium:locationServicesAuthorized'?: boolean; 'appium:resetLocationService'?: boolean; 'appium:localizableStringsDir'?: string; 'appium:processArguments'?: string | AppiumXCUIProcessArguments; 'appium:showIOSLog'?: boolean; 'appium:webviewConnectRetries'?: number; 'appium:clearSystemFiles'?: boolean; 'appium:customSSLCert'?: string; 'appium:webkitResponseTimeout'?: number; 'appium:webkitDebugProxyPort'?: number; 'appium:remoteDebugProxy'?: string; 'appium:enablePerformanceLogging'?: boolean; 'appium:enableAsyncExecuteFromHttps'?: boolean; 'appium:fullContextList'?: boolean; 'appium:ignoreAboutBlankUrl'?: boolean; 'appium:skipLogCapture'?: boolean; 'appium:deviceName'?: string; 'appium:showXcodeLog'?: boolean; 'appium:wdaLocalPort'?: number; 'appium:wdaBaseUrl'?: string; 'appium:iosInstallPause'?: number; 'appium:xcodeConfigFile'?: string; 'appium:xcodeOrgId'?: string; 'appium:xcodeSigningId'?: string; 'appium:keychainPath'?: string; 'appium:keychainPassword'?: string; 'appium:bootstrapPath'?: string; 'appium:agentPath'?: string; 'appium:tapWithShortPressDuration'?: number; 'appium:scaleFactor'?: string; 'appium:usePrebuiltWDA'?: boolean; 'appium:usePreinstalledWDA'?: boolean; 'appium:webDriverAgentUrl'?: string; 'appium:derivedDataPath'?: string; 'appium:launchWithIDB'?: boolean; 'appium:useNewWDA'?: boolean; 'appium:wdaLaunchTimeout'?: number; 'appium:wdaConnectionTimeout'?: number; 'appium:updatedWDABundleId'?: string; 'appium:resetOnSessionStartOnly'?: boolean; 'appium:commandTimeouts'?: string | AppiumXCUICommandTimeouts; 'appium:wdaStartupRetries'?: number; 'appium:wdaStartupRetryInterval'?: number; 'appium:prebuildWDA'?: boolean; 'appium:connectHardwareKeyboard'?: boolean; 'appium:forceTurnOnSoftwareKeyboardSimulator'?: boolean; 'appium:simulatorPasteboardAutomaticSync'?: string; 'appium:simulatorDevicesSetPath'?: string; 'appium:calendarAccessAuthorized'?: boolean; 'appium:useSimpleBuildTest'?: boolean; 'appium:waitForQuiescence'?: boolean; 'appium:maxTypingFrequency'?: number; 'appium:nativeTyping'?: boolean; 'appium:simpleIsVisibleCheck'?: boolean; 'appium:shouldUseSingletonTestManager'?: boolean; 'appium:isHeadless'?: boolean; 'appium:autoGrantPermissions'?: boolean; 'appium:useXctestrunFile'?: boolean; 'appium:absoluteWebLocations'?: boolean; 'appium:simulatorWindowCenter'?: string; 'appium:simulatorStartupTimeout'?: number; 'appium:simulatorTracePointer'?: boolean; 'appium:useJSONSource'?: boolean; 'appium:enforceFreshSimulatorCreation'?: boolean; 'appium:shutdownOtherSimulators'?: boolean; 'appium:keychainsExcludePatterns'?: string; 'appium:showSafariConsoleLog'?: boolean; 'appium:showSafariNetworkLog'?: boolean; 'appium:safariGarbageCollect'?: boolean; 'appium:safariGlobalPreferences'?: AppiumXCUISafariGlobalPreferences; 'appium:safariLogAllCommunication'?: boolean; 'appium:safariLogAllCommunicationHexDump'?: boolean; 'appium:safariSocketChunkSize'?: number; 'appium:mjpegServerPort'?: number; 'appium:reduceMotion'?: boolean; 'appium:mjpegScreenshotUrl'?: string; 'appium:permissions'?: string; 'appium:screenshotQuality'?: number; 'appium:wdaEventloopIdleDelay'?: number; 'appium:otherApps'?: string | string[]; 'appium:includeSafariInWebviews'?: boolean; 'appium:additionalWebviewBundleIds'?: Array; 'appium:webviewConnectTimeout'?: number; 'appium:iosSimulatorLogsPredicate'?: string; 'appium:appPushTimeout'?: number; 'appium:nativeWebTapStrict'?: boolean; 'appium:safariWebInspectorMaxFrameLength'?: number; 'appium:allowProvisioningDeviceRegistration'?: boolean; 'appium:waitForIdleTimeout'?: number; 'appium:resultBundlePath'?: string; 'appium:resultBundleVersion'?: number; 'appium:safariIgnoreWebHostnames'?: string; 'appium:includeDeviceCapsToSessionInfo'?: boolean; 'appium:disableAutomaticScreenshots'?: boolean; 'appium:shouldTerminateApp'?: boolean; 'appium:forceAppLaunch'?: boolean; 'appium:useNativeCachingStrategy'?: boolean; 'appium:appInstallStrategy'?: string; /** * Windows Application Driver capabilities */ 'appium:appArguments'?: string; } export interface AppiumXCUISafariGlobalPreferences { [key: string]: any; } export interface AppiumXCUIProcessArguments { args?: Array; env?: { [key: string]: any; }; } export interface AppiumXCUICommandTimeouts { [key: string]: any; } /** * see also https://docs.saucelabs.com/dev/test-configuration-options */ export interface SauceLabsCapabilities { /** * Desktop Browser Capabilities: Sauce-Specific – Optional * see https://docs.saucelabs.com/dev/test-configuration-options/#desktop-browser-capabilities-sauce-specific--optional */ /** * Allows you to specify the ChromeDriver version you want to use for your tests. * The default version of ChromeDriver when no value is specified depends on the version of Chrome used. * As of Chrome 73, the major version of the driver and the browser must match. * * Desktop Virtual Devices only. * * For a list of ChromeDriver versions, see chromedriver versions list. * @see https://docs.saucelabs.com/dev/test-configuration-options/#chromedriverversion * @see https://chromedriver.storage.googleapis.com/index.html */ chromedriverVersion?: string; /** * Specifies the Microsoft Edge driver version you want to use for your tests. * * Desktop Virtual Devices only. * * For a list of edgedriver versions, see the Microsoft Edge Driver website. * @see https://docs.saucelabs.com/dev/test-configuration-options/#edgedriverversion * @see https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ */ edgedriverVersion?: string; /** * Specifies the Firefox GeckoDriver version. * The default geckodriver version varies based on the version of Firefox specified. * * Desktop Virtual Devices only. * * For a list of geckodriver versions and the Firefox versions they support, see geckodriver Supported Platforms. * @see https://docs.saucelabs.com/dev/test-configuration-options/#geckodriverversion * @see https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html */ geckodriverVersion?: string; /** * Specifies the Internet Explorer Driver version. If no version is specified, it defaults to 2.53.1. * * Desktop Virtual Devices only. * * For a list of IE Driver versions, see Internet Explorer Driver Server CHANGELOG. * @see https://docs.saucelabs.com/dev/test-configuration-options/#iedriverversion * @see https://raw.githubusercontent.com/SeleniumHQ/selenium/trunk/cpp/iedriverserver/CHANGELOG */ iedriverVersion?: string; /** * Specifies the Selenium version you want to use for your test. * Sauce Labs will default to different versions, depending on the age of the browser and platform, * and whether or not you're initializing a session with valid W3C syntax. * * Desktop Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#seleniumversion */ seleniumVersion?: string; /** * Allows the browser to communicate directly with servers without going through a proxy. * By default, Sauce routes traffic from Internet Explorer and Safari through an HTTP proxy server * so that HTTPS connections with self-signed certificates will work. * * The proxy server can cause problems for some users, and this setting allows you to avoid it. * * Any test run with a Sauce Connect tunnel has to use the proxy and this flag will be ignored. * * Desktop Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#avoidproxy */ avoidProxy?: boolean; /** * Enables Extended Debugging features. This applies to Firefox and Chrome only. * It records HAR files and console logs for both of these browsers. * In Chrome, it also enables network interception, network and cpu throttling as well as access to network logs * during the session. It is required to be true for capturePerformance. The default value is false. * * Desktop Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#extendeddebugging * @see https://docs.saucelabs.com/insights/debug/ */ extendedDebugging?: boolean; /** * Enables Performance Capture feature. * Sauce Performance Testing can be enabled by setting both extendedDebugging and capturePerformance to true. * Default value is false. * * Desktop Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#captureperformance * @see https://docs.saucelabs.com/performance/ */ capturePerformance?: boolean; /** * Specifies the screen resolution to be used during your test session. * Default screen resolution for Sauce tests is 1024x768. * * Desktop Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#screenresolution */ screenResolution?: string; /** * Sets command timeout in seconds. * As a safety measure to prevent Selenium crashes from making your tests run indefinitely, * we limit how long Selenium can take to run a command in our browsers. * This is set to 300 seconds by default. The maximum command timeout value allowed is 600 seconds. * * Desktop Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#commandtimeout */ commandTimeout?: number; /** * Sets idle test timeout in seconds. * As a safety measure to prevent tests from running too long after something has gone wrong, * we limit how long a browser can wait for a test to send a new command. * This is set to 90 seconds by default and limited to a maximum value of 1000 seconds. * * Desktop Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#idletimeout */ idleTimeout?: number; /** * Mobile App Appium Capabilities: Sauce-Specific – Optional * see https://docs.saucelabs.com/dev/test-configuration-options/#mobile-app-appium-capabilities-sauce-specific--optional */ /** * Specifies the Appium driver version you want to use. * For most use cases, setting the appiumVersion is unnecessary because Sauce Labs defaults to the version that supports the broadest number of device combinations. * Sauce Labs advises against setting this property unless you need to test a particular Appium feature or patch. * * Virtual and Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#appiumversion */ appiumVersion?: string; /** * Specifies the orientation of the virtual skin and screen during the test. * * Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#deviceorientation */ deviceOrientation?: 'portrait' | 'landscape'; /** * If your app creates an extra log then you can use the customLogFiles to store those additional logs in the "Logs" tab of the executed automated session. * It is created in the form of a list of search filters that enumerate after an app test to locate text files to upload as logs. * Files are uploaded with the .log extension appended. The search paths are rooted at the application under test. * * Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#customlogfiles */ customLogFiles?: string[]; /** * By default, our emulator uses software rendering to handle graphics for maximum compatibility. * This involves the CPU calculating how everything looks on your app's screen. * However, this could lead to an emulator crash when testing apps with intricate or heavy graphical elements. * To mitigate this, use the hardware rendering option by specifying "android.gpu.mode"="hardware" in your test capabilities. * * Android Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#androidgpumode */ 'android.gpu.mode'?: 'software' | 'hardware'; /** * Android allows apps to use the full screen, hiding the status bar and navigation bar. * This is called "immersive mode". When you run an Android test, the device will show a popup asking if you want to allow the app to use immersive mode. * This popup can interfere with your test, and by default we disable it. * If you want to enable it, set disableImmersiveModePopUp to false. * * Android Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#disableimmersivemodepopup */ disableImmersiveModePopUp?: boolean; /** * Sets up the device pin code for the automated test session. * This capability sets your device in the state required for your application to launch successfully. * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#disableimmersivemodepopup */ setupDeviceLock?: boolean; /** * Use this capability to select only tablet devices for testing. * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#tabletonly */ tabletOnly?: boolean; /** * Use this capability to select only phone devices for testing. * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#phoneonly */ phoneOnly?: boolean; /** * Use this capability to select only private devices for testing. * * Private Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#privatedevicesonly */ privateDevicesOnly?: boolean; /** * Use this capability to select only public devices for testing. * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#publicdevicesonly */ publicDevicesOnly?: boolean; /** * Use this capability to allocate only devices connected to a carrier network. * * Private Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#carrierconnectivityonly */ carrierConnectivityOnly?: boolean; /** * Keeps the device allocated to you between test sessions and bypasses the device cleaning process and session exit that occurs by default after each test completes. * Normally, you'd need to start over and reopen another device. * You'll need to launch your next test within 10 seconds of your previous test ending * to ensure that the same device will be allocated for the test (not cleaned or reset). * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#cacheid */ cacheId?: string; /** * Controls Sauce Labs default resigning (iOS) or instrumentation (Android) of mobile apps installed on our devices. * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#resigningenabled */ resigningEnabled?: boolean; /** * Enables the camera image injection feature. resigningEnabled needs to be enabled if this is set to true. * * Real Devices only. * @see https://docs.saucelabs.com/mobile-apps/features/camera-image-injection/ * @see https://docs.saucelabs.com/dev/test-configuration-options/#saucelabsimageinjectionenabled */ sauceLabsImageInjectionEnabled?: boolean; /** * Bypasses the restriction on taking screenshots for secure screens (i.e., secure text entry). resigningEnabled needs to be enabled if this is set to true. * * Android Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#saucelabsbypassscreenshotrestriction */ sauceLabsBypassScreenshotRestriction?: boolean; /** * Enables the interception of biometric input, allowing the test to simulate Touch ID interactions (not a Sauce Labs-specific capability). * resigningEnabled needs to be enabled if this is set to true. * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#allowtouchidenroll */ allowTouchIdEnroll?: boolean; /** * Enables audio recording in your iOS and Android native mobile app tests. * The audio will be part of the Test Results page video file, which you can play back and download in our built-in media player. * The default value is false. * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#audiocapture */ audioCapture?: boolean; /** * Enables mobile app instrumentation (Android or iOS) and recording of HTTP/HTTPS network traffic for debugging purposes. * API calls are collected into a HAR file, which you can view and download from your Test Results > Network tab console. * The default value is false. * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#networkcapture */ networkCapture?: boolean; /** * Enables the use of the app's private app container directory instead of the shared app group container directory. * For testing on the Real Device Cloud, the app gets resigned, which is why the shared directory is not accessible. * * iOS Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#groupfolderredirectenabled */ groupFolderRedirectEnabled?: boolean; /** * Use this capability to enable animations for Android real devices by setting it to true. By default, animations are disabled. * * Android Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#enableanimations */ enableAnimations?: boolean; /** * Delays system alerts, such as alerts asking for permission to access the camera, to prevent app crashes at startup. * resigningEnabled needs to be enabled if this is set to true. * * iOS Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#systemalertsdelayenabled */ systemAlertsDelayEnabled?: boolean; /** * Specify the amount of time (in milliseconds) that the test should be allowed to find and assign an available device before the test will fail. * The default value is 900000 milliseconds (15 minutes) and the max is 1800000 milliseconds (30 minutes). * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#sessioncreationtimeout */ sessionCreationTimeout?: boolean; /** * Specify the amount of automatic retries that Sauce Labs will execute to find and assign an available device before the test will fail. * The default value is 1 and the max is 3. * * Real Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#sessioncreationretry */ sessionCreationRetry?: number; /** * Desktop and Mobile Capabilities: Sauce-Specific – Optional * see https://docs.saucelabs.com/dev/test-configuration-options/#desktop-and-mobile-capabilities-sauce-specific--optional */ /** * Used to record test names for jobs and make it easier to find individual tests. * @see https://docs.saucelabs.com/dev/test-configuration-options/#name */ name?: string; /** * Used to associate jobs with a build number or app version, which is then displayed * on both the Dashboard and Archives view * * @see https://docs.saucelabs.com/dev/test-configuration-options/#build * @example `build-1234` */ build?: string | number; /** * User-defined tags for grouping and filtering jobs in the Dashboard and Archives view. * @see https://docs.saucelabs.com/dev/test-configuration-options/#tags * @example * ``` * ["tag1", "tag2", "tag3"] * ``` */ tags?: string[]; /** * Sets your Sauce Labs username for a test. * * You can either set "username" in capabilities or specify it in the Sauce URL as Basic Authentication. For Visual Tests), this must be set in capabilities. * @see https://docs.saucelabs.com/dev/test-configuration-options/#username */ username?: string; /** * Sets your Sauce Labs access key for the test. * * You can either set "accessKey" in capabilities or specify it in the Sauce URL as Basic Authentication. For Visual Tests, this must be set in capabilities. * @see https://docs.saucelabs.com/dev/test-configuration-options/#accesskey */ accessKey?: string; /** * User-defined custom data that will accept any valid JSON object, limited to 64KB in size. * @see https://docs.saucelabs.com/dev/test-configuration-options/#custom-data * @example * ``` * { * "release": "1.0", * "commit": "0k392a9dkjr", * "staging": true, * "execution_number": 5, * "server": "test.customer.com" * } * ``` */ 'custom-data'?: any; /** * We support several test/job result visibility levels, which control who can view the test details. * The visibility level for a test can be set manually from the test results page, but also programmatically when starting a test or with our REST API. * For more information about sharing test results, see the topics under Sharing the Results of Sauce Labs Tests. * * Desktop and Virtual Devices only. * * @see https://docs.saucelabs.com/test-results/sharing-test-results/ */ public?: 'public' | 'public restricted' | 'share' | 'team' | 'private'; /** * Specify a Sauce Connect tunnel to establish connectivity with Sauce Labs for your test. * Tunnels allow you to test an app that is behind a firewall or on your local machine by providing a secure connection to the Sauce Labs platform. * @see https://docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/basic-setup/ * @see https://docs.saucelabs.com/dev/test-configuration-options/#tunnelname */ tunnelName?: string; /** * Specify a Sauce Connect tunnel name to establish connectivity with a Sauce Labs test platform. This is an alias for tunnelName. * @see https://docs.saucelabs.com/dev/test-configuration-options/#tunnelidentifier * @deprecated */ tunnelIdentifier?: string; /** * If the tunnelName you've specified to establish connectivity with a Sauce Labs test platform is a shared tunnel, * and you are not the user who created the tunnel, you must identify the Sauce Labs user who did create the tunnel in order to use it for your test. * @see https://docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/basic-setup/#using-tunnel-names * @see https://docs.saucelabs.com/dev/test-configuration-options/#tunnelowner */ tunnelOwner?: string; /** * If the tunnelName (or tunnelIdentifier) you've specified to establish connectivity with a Sauce Labs test platform is a shared tunnel, * and you are not the user who created the tunnel, you must identify the Sauce Labs user who did create the tunnel in order to use it for your test. * This is an alias for tunnelOwner. * @see https://docs.saucelabs.com/dev/test-configuration-options/#parenttunnel * @deprecated */ parentTunnel?: string; /** * Use this to disable video recording. By default, Sauce Labs records a video of every test you run. * Disabling video recording can be useful for debugging failing tests as well as having a visual confirmation that a certain feature works (or still works). * However, there is an added wait time for screen recording during a test run. * @see https://docs.saucelabs.com/dev/test-configuration-options/#recordvideo */ recordVideo?: boolean; /** * Disables video upload for passing tests. videoUploadOnPass is an alternative to recordVideo; it lets you discard videos for tests you've marked as passing. * It disables video post-processing and uploading that may otherwise consume some extra time after your test is complete. * @see https://docs.saucelabs.com/dev/test-configuration-options/#videouploadonpass */ videoUploadOnPass?: boolean; /** * Disables step-by-step screenshots. In addition to capturing video, Sauce Labs captures step-by-step screenshots of every test you run. * Most users find it very useful to get a quick overview of what happened without having to watch the complete video. * However, this feature may add some extra time to your tests. * @see https://docs.saucelabs.com/dev/test-configuration-options/#recordscreenshots */ recordScreenshots?: boolean; /** * In the same way Sauce Labs captures step-by-step screenshots, you can capture the HTML source at each step of a test. * This feature is disabled by default, but when it is enabled you can view the HTML source captures on the Test Results page. * @see https://docs.saucelabs.com/dev/test-configuration-options/#capturehtml */ captureHtml?: boolean; /** * Disables log recording. By default, Sauce creates a log of all the actions that you execute to create a report for the test run * that lets you troubleshoot test failures more easily. * This option disables only the recording of the log.json file; the selenium-server.log will still be recorded. * @see https://docs.saucelabs.com/dev/test-configuration-options/#recordlogs */ recordLogs?: boolean; /** * Desktop and Virtual Device Capabilities: Sauce-Specific – Optional * see https://docs.saucelabs.com/dev/test-configuration-options/#desktop-and-virtual-device-capabilities-sauce-specific--optional */ /** * Sets maximum test duration in seconds. As a safety measure to prevent tests from running indefinitely, * the default is 1,800 seconds (30 minutes) and the maximum is 10,800 seconds (three hours). * * Desktop and Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#maxduration */ maxDuration?: number; /** * Setting to prioritize jobs. If you have multiple new jobs waiting to start (i.e., across a collection of sub-accounts), * jobs with a lower priority number take precedence over jobs with a higher number. * * So, for example, if you have multiple jobs simultaneously waiting to start, * we'll first attempt to find resources to start all the jobs with priority 0,then all the jobs with priority 1, etc. * * When we run out of available virtual machines, or when you hit your concurrency limit, any jobs not yet started will wait. * Within each priority level, jobs that have been waiting the longest take precedence. * * Desktop and Virtual Devices only. * @see https://docs.saucelabs.com/dev/test-configuration-options/#priority */ priority?: number; /** * Allows you to set a custom time zone for your test based on a city name. Most major cities are supported. * * Desktop and Virtual Devices only. * @example Los_Angeles * @example Honolulu * @see https://docs.saucelabs.com/dev/test-configuration-options/#timezone */ timeZone?: string; /** * You can provide a URL to an executable file, which will be downloaded and executed to configure the * VM before the test starts. For faster performance, you may want to upload the executable to [Sauce Storage](https://docs.saucelabs.com/mobile-apps/app-storage/#uploading-apps), * a private temporary storage space. This capability takes a JSON object with four main keys. * Check out the topics under [Using Pre-Run Executables to Configure Browsers and Virtual Machines](https://docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/) for * more information. * * __Running AutoIt Scripts__ * * If you want to run an AutoIt script during your test, compile it as an .exe, send it using this * capability, and set background to true to allow AutoIt to continue running throughout the full * duration of your test. * * __Using Multiple Pre-Run Executables__ * * If you need to send multiple pre-run executables, the best way is to bundle them into a single * executable file, such as a self-extracting zip file. */ prerun?: { executable: string; args: string[]; background: boolean; timeout: number; }; recordDeviceVitals?: boolean; } export interface LambdaTestCapabilities { username?: string; accessKey?: string; platformName?: string; deviceName?: string; platformVersion?: string; app?: string; appiumVersion?: string; browserName?: string; browserVersion?: string; w3c?: boolean; /** * Set the resolution of the VM. */ resolution?: string; selenium_version?: string; driver_version?: string; headless?: boolean; seCdp?: boolean; /** * Specify a name for a logical group of builds. */ project?: string; /** * Specify a name for a logical group of tests. */ build?: string | number; /** * Use this capability to add a custom tag to the builds. * These tags can be used to filter the builds on the Automate dashboard. */ buildTags?: Array; 'smartUI.project'?: string; /** * Use this capability to add names to the tests. */ name?: string; /** * Use this capability to add a custom tag to the tests. * These tags can be used to filter the tests on the Automate dashboard. */ tags?: Array; devicelog?: boolean; visual?: boolean; video?: boolean; /** * Test locally hosted websites on LambdaTest. * To enable access to the local machine you need to setup the * LambdaTest Tunnel (https://www.lambdatest.com/support/docs/testing-locally-hosted-pages). */ tunnel?: boolean; tunnelName?: string; /** * Capture browser console logs at various steps in the test. */ console?: 'warn' | 'error' | 'warn' | 'info' | 'true' | 'false'; network?: boolean; timezone?: string; geoLocation?: string; location?: { lat: string; long: string; }; language?: string; locale?: string; idleTimeout?: number; queueTimeout?: number; /** * Appium specific */ autoGrantPermissions?: boolean; autoAcceptAlerts?: boolean; otherApps?: Array; isRealMobile?: boolean; networkThrottling?: string; deviceOrientation?: 'portrait' | 'landscape'; bundleId?: string; appPackage?: string; appActivity?: string; appWaitActivity?: string; appWaitPackage?: string; autoWebview?: boolean; } export interface BrowserStackCapabilities { browser?: string; browser_version?: string; os?: string; os_version?: string; osVersion?: string; desired?: unknown; device?: string; platformName?: string; platformVersion?: string; /** * Specify a name for a logical group of builds. */ projectName?: string; /** * Specify a name for a logical group of tests. */ buildName?: string; /** * Specify an identifier for the test run. */ sessionName?: string; /** * Test locally hosted websites on BrowserStack. * To enable access to the local machine you need to setup the * [BrowserStack Local Binary](https://www.browserstack.com/local-testing/automate). */ local?: boolean; /** * Generate screenshots at various steps of the test. * * @default false */ debug?: boolean; networkLogs?: boolean; /** * https://www.browserstack.com/docs/app-automate/appium/debug-failed-tests/network-logs * Enable viewing the response data in the Network Logs tab on your session */ networkLogsOptions?: { captureContent?: boolean; }; networkLogsExcludeHosts?: Array; networkLogsIncludeHosts?: Array; /** * https://www.browserstack.com/docs/app-automate/appium/debug-failed-tests/interactive-session * Enable an interactive debugging session while your test session is running */ interactiveDebugging?: boolean; seleniumVersion?: string; seleniumCdp?: boolean; ie?: { noFlash?: boolean; compatibility?: number; arch?: string; driver?: string; enablePopups?: boolean; }; userName?: string; accessKey?: string; localIdentifier?: string; /** * Capture browser console logs at various steps in the test. * Console Logs are available for Selenium tests on Desktop Chrome * and Mobile Chrome (Android devices). * * @default 'errors' */ consoleLogs?: 'disable' | 'errors' | 'warnings' | 'info' | 'verbose'; appiumLogs?: boolean; video?: boolean; seleniumLogs?: boolean; geoLocation?: string; timezone?: string; /** * Set the resolution of the VM. */ resolution?: string; /** * Mask the data sent or retrieved by certain commands. * * Note: Multiple commands can be passed in a single array, separated by commas. */ 'browserstack.maskCommands'?: string[]; /** * BrowserStack triggers `BROWSERSTACK_IDLE_TIMEOUT` error when a session * is left idle for more than `idleTimeout` seconds. This happens as BrowserStack by * default waits for the timeout duration for additional steps or commands * to run. If no command is received during that time, the session is stopped, * changing the session status to `TIMEOUT` on the Automate dashboard. * * Valid range: 0-300 seconds. * * @default 90 */ idleTimeout?: number; /** * Mask credentials from test logs if using basic authentication. */ maskBasicAuth?: boolean; /** * Specify a custom delay between the execution of Selenium commands. * * @default 20 */ autoWait?: number; /** * iOS specific. For IOS 13 & above, behavior will flip if popup has more than 2 buttons * @see https://www.browserstack.com/docs/app-automate/appium/advanced-features/handle-permission-pop-ups */ autoAcceptAlerts?: boolean; /** * iOS specific. For IOS 13 & above, behavior will flip if popup has more than 2 buttons * @see https://www.browserstack.com/docs/app-automate/appium/advanced-features/handle-permission-pop-ups */ autoDismissAlerts?: boolean; /** * Add a host entry (/etc/hosts) to the remote BrowserStack machine. * * Format: ip_address domain_name * @example * { "bstack:options": { hosts: "1.2.3.4 staging.website.com" } } */ hosts?: string; /** * IE 11 uses cached pages when navigating using the backward or forward buttons. * To disable page caching, set this value to 1. * * @default 0 */ bfcache?: 0 | 1; /** * Enable WSS (WebSocket Secure) connections to work with Network Logs * on Chrome v71 and above. * * Note: if using `localhost` in your test, change it to `bs-local.com`. * * @default false */ wsLocalSupport?: boolean; /** * Use this capability to disable cross origin restrictions in Safari. * Available for Monterey, Big Sur, Catalina and Mojave. * * @default false */ disableCorsRestrictions?: boolean; /** * Use this capability to add a custom tag to the builds. * These tags can be used to filter the builds on the Automate dashboard. */ buildTag?: string; /** * Specify a particular mobile device for the test environment. */ deviceName?: string; /** * Use this flag to test on a physical mobile device. * * @default false */ realMobile?: boolean; appiumVersion?: string; deviceOrientation?: 'portrait' | 'landscape'; customNetwork?: string; networkProfile?: string; chrome?: { driver?: string; }; edge?: { enablePopups?: boolean; }; 'browserstack.sendKeys'?: boolean; safari?: { enablePopups?: boolean; allowAllCookies?: boolean; }; firefox?: { driver?: string; }; browserName?: string; browserVersion?: string; /** * Ignore invalid certificate errors. * * @default false */ acceptSslCerts?: boolean; /** * @private */ wdioService?: string; /** * Specify an identifier for a build consists group of tests. */ buildIdentifier?: string; accessibility?: boolean; accessibilityOptions?: { [key: string]: any; }; 'browserstack.buildIdentifier'?: string; 'browserstack.localIdentifier'?: string; 'browserstack.accessibility'?: boolean; 'browserstack.accessibilityOptions'?: { [key: string]: any; }; appStoreConfiguration?: { username: string; password: string; }; gpsLocation?: string; disableAnimations?: boolean; midSessionInstallApps?: Array; uploadMedia?: Array; enablePasscode?: boolean; deviceLogs?: boolean; /** * Disable re-signing of Enterprise signed app uploaded on BrowserStack * @default true */ resignApp?: boolean; /** * Hides data that you send to or retrieve from the remote browsers through the following commands: * Example: 'setValues, getValues, setCookies, getCookies' */ maskCommands?: string; /** * Enables the camera image injection feature. * * Real Devices only. * @see https://www.browserstack.com/docs/app-automate/appium/advanced-features/camera-image-injection */ enableCameraImageInjection?: boolean; testhubBuildUuid?: string; buildProductMap?: { [key: string]: boolean; }; } export interface SauceLabsVisualCapabilities { /** * Project name */ projectName?: string; /** * API Key for user's Screener account. */ apiKey?: string; /** * A x representation of desired viewport size. * @default "1024x768" */ viewportSize?: string; /** * Branch or environment name. * @example "main" */ branch?: string; /** * Branch name of project's base branch. Used for baseline branching and merging. * @example "main" */ baseBranch?: string; /** * Visual diff options to control validations. * @default * ```js * { * structure: true, * layout: true, * style: true, * content: true, * minLayoutPosition: 4, * minLayoutDimension: 10 * } * ``` */ diffOptions?: { structure?: boolean; layout?: boolean; style?: boolean; content?: boolean; minLayoutPosition?: number; minLayoutDimension?: number; }; /** * A comma-delimited list of css selectors to ignore when performing visual diffs. * @example "#some-id, .some-selector" */ ignore?: string; /** * Option to set build to failure when new states are found, and to disable * using new states as a baseline. * * This option defaults to true, and can be set to false if user wants new * states to automatically be the visual baseline without needing to review * and accept them. * @default true */ failOnNewStates?: boolean; /** * Option to automatically accept new and changed states in base branch. * Assumes base branch should always be correct. * @default false */ alwaysAcceptBaseBranch?: boolean; /** * Option to disable independent baseline for each feature branch, and * only use base branch as baseline. Must be used with "baseBranch" option. * @default false */ disableBranchBaseline?: boolean; /** * Option to capture a full-page screenshot using a scrolling and stitching * strategy instead of using native browser full-page screenshot capabilities. * @default false */ scrollAndStitchScreenshots?: boolean; /** * Option to disable adding CORS headers. By default, CORS headers are set * for all cross-origin requests. * @default false */ disableCORS?: boolean; } /** * https://testingbot.com/support/other/test-options#platform */ export interface TestingbotCapabilities { appiumVersion?: string; appiumPlugins?: string[]; name?: string; tags?: string[]; build?: string | number; public?: boolean; 'tunnel-identifier'?: string; realDevice?: boolean; 'selenium-version'?: string; chromedriverVersion?: string; iedriverVersion?: string; edgedriverVersion?: string; geckodriverVersion?: string; operaDriverVersion?: string; 'screen-resolution'?: string; timeZone?: string; 'throttle_network'?: any; tabletOnly?: boolean; phoneOnly?: boolean; recordLogs?: boolean; screenshot?: boolean; screenrecorder?: boolean; maxDuration?: number; upload?: string; 'testingbot.geoCountryCode'?: string; idletimeout?: number; 'load-extension'?: string; } export {}; //# sourceMappingURL=Capabilities.d.ts.map