Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Webdriverio Webdriverio EnvDetector

From Leeroopedia
Revision as of 11:57, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/Webdriverio_Webdriverio_EnvDetector.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Sources
Domains Environment_Detection, Protocol_Support
Last Updated 2026-02-12 00:00 GMT

Overview

Detects WebDriver session environment characteristics such as protocol compliance, browser type, mobile platform, and vendor-specific features based on session capabilities.

Description

The EnvDetector module inspects capability objects returned from WebDriver sessions to determine the runtime environment. It provides functions like isW3C to check W3C protocol compliance, isBidi to detect WebDriver BiDi support via the presence of a webSocketUrl capability, and composite detectors that return a full environment flags object. Internal helpers detect specific browsers (Chrome, Firefox, Edge), mobile platforms (iOS, Android), automation names (Windows, Mac), and cloud providers (Sauce Labs with extended debugging). The module distinguishes between pre-session detection (capabilitiesEnvironmentDetector) and post-session detection (sessionEnvironmentDetector), where the latter can additionally determine Selenium Standalone and W3C compliance.

Usage

Use capabilitiesEnvironmentDetector before session creation to determine browser and platform characteristics from user-provided capabilities. Use sessionEnvironmentDetector after the session is created to inspect the resolved capabilities returned by the driver, including W3C compliance and Selenium Standalone detection.

Code Reference

Source Location

Signature

export function isW3C(capabilities?: WebdriverIO.Capabilities): boolean

export function isBidi(capabilities: WebdriverIO.Capabilities): boolean

export function capabilitiesEnvironmentDetector(capabilities: WebdriverIO.Capabilities): {
    isChrome: boolean;
    isFirefox: boolean;
    isMobile: boolean;
    isIOS: boolean;
    isAndroid: boolean;
    isSauce: boolean;
    isBidi: boolean;
    isChromium: boolean;
    isWindowsApp: boolean;
    isMacApp: boolean;
}

export function sessionEnvironmentDetector(params: {
    capabilities: WebdriverIO.Capabilities;
    requestedCapabilities: Capabilities.RequestedStandaloneCapabilities;
}): {
    isW3C: boolean;
    isChrome: boolean;
    isFirefox: boolean;
    isMobile: boolean;
    isIOS: boolean;
    isAndroid: boolean;
    isSauce: boolean;
    isSeleniumStandalone: boolean;
    isBidi: boolean;
    isChromium: boolean;
    isWindowsApp: boolean;
    isMacApp: boolean;
}

Import

import { sessionEnvironmentDetector, capabilitiesEnvironmentDetector } from '@wdio/utils'

I/O Contract

Inputs

Name Type Required Description
capabilities WebdriverIO.Capabilities Yes (optional for isW3C) The resolved or requested session capabilities object containing browser name, platform, vendor extensions, etc.
requestedCapabilities Capabilities.RequestedStandaloneCapabilities Yes (sessionEnvironmentDetector only) The original capabilities sent in the session request, used to detect Sauce Labs extended debugging.

Outputs

Name Type Description
isW3C boolean True if the session follows the W3C WebDriver protocol.
isChrome boolean True if the session is running Chrome (has goog:chromeOptions).
isFirefox boolean True if the session is running Firefox (has moz: capabilities).
isMobile boolean True if the session is on a mobile device (iOS/Android platform or mobile-specific capabilities).
isIOS boolean True if the session is running on an iOS device.
isAndroid boolean True if the session is running on an Android device.
isSauce boolean True if Sauce Labs extended debugging is enabled.
isSeleniumStandalone boolean True if the session uses Selenium Standalone server (session-level only).
isBidi boolean True if the session supports WebDriver BiDi (webSocketUrl present).
isChromium boolean True if the session is a Chromium-based browser (Chrome or Edge).
isWindowsApp boolean True if automationName matches "windows".
isMacApp boolean True if automationName matches "mac2".

Usage Examples

import { sessionEnvironmentDetector, capabilitiesEnvironmentDetector } from '@wdio/utils'

// Before session creation
const preSessionFlags = capabilitiesEnvironmentDetector({
    browserName: 'chrome',
    'goog:chromeOptions': {}
})
console.log(preSessionFlags.isChrome)  // true
console.log(preSessionFlags.isMobile)  // false

// After session creation with resolved capabilities
const postSessionFlags = sessionEnvironmentDetector({
    capabilities: {
        browserName: 'chrome',
        browserVersion: '120.0.6099.71',
        platformName: 'linux',
        'goog:chromeOptions': { debuggerAddress: 'localhost:9222' },
        setWindowRect: true,
        webSocketUrl: 'ws://localhost:9222/session/abc123'
    },
    requestedCapabilities: {
        browserName: 'chrome'
    }
})
console.log(postSessionFlags.isW3C)    // true
console.log(postSessionFlags.isBidi)   // true
console.log(postSessionFlags.isChrome) // true

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment