# WebdriverIO > WebdriverIO is an open source, openly governed (OpenJS Foundation) test automation framework for Node.js. It automates web browsers (WebDriver and WebDriver BiDi), native, hybrid and mobile web apps (Appium), desktop apps (macOS, Windows, Electron, Tauri, Dioxus), VS Code and browser extensions, and supports visual, accessibility and component testing. These docs describe WebdriverIO v10. Notes for agents: - Every link below points to the Markdown version of a page. Any page on webdriver.io is available as Markdown by appending `.md` to its URL or by sending `Accept: text/markdown`. - Each section below is also available as one file under `/llms/
.txt` (listed next to the section heading), and the complete documentation is at https://webdriver.io/llms-full.txt. - The docs are also available as an MCP server (Streamable HTTP) at https://webdriver.io/mcp with `search_docs`, `get_page` and `list_sections` tools. See https://webdriver.io/docs/ai-agents.md for how to set up coding agents. - All WebdriverIO commands are async; always `await` them. Configuration lives in `wdio.conf.ts`; run tests with `npx wdio run wdio.conf.ts`. - Documentation for WebdriverIO v9 is at https://v9.webdriver.io. Older versions are no longer documented, see https://webdriver.io/docs/v10-migration.md for upgrading. ## Get Started All pages of this section in one file: https://webdriver.io/llms/get-started.txt - [Getting Started](https://webdriver.io/docs/gettingstarted.md): Create a WebdriverIO project with npm init wdio@latest, run your first test and find the next guide for your platform. - [Why WebdriverIO?](https://webdriver.io/docs/why-webdriverio.md): What sets WebdriverIO apart from other test automation tools - one API for every platform, web standards, open governance and first-class support for coding agents. - [Setup Types](https://webdriver.io/docs/setuptypes.md): Compare the ways to use WebdriverIO, from raw protocol bindings to standalone mode and the WDIO testrunner, and pick the right one. - [Boilerplate Projects](https://webdriver.io/docs/boilerplates.md): Browse community boilerplate projects for WebdriverIO with Mocha, Jasmine, Cucumber, Electron and mobile setups to bootstrap your own test suite. - [Automation Protocols](https://webdriver.io/docs/automationProtocols.md): Understand the WebDriver Bidi and WebDriver automation protocols and choose which one WebdriverIO uses to automate browsers and devices. ## AI Agents All pages of this section in one file: https://webdriver.io/llms/ai-agents.txt - [WebdriverIO for Coding Agents](https://webdriver.io/docs/ai-agents.md): Set up Cursor, Claude Code, Copilot or any other coding agent to write, run and debug WebdriverIO tests using the machine-readable docs, the WebdriverIO MCP server and DevTools traces. ### AI Agents / MCP - [MCP (Model Context Protocol)](https://webdriver.io/docs/mcp.md): Let AI assistants automate browsers and mobile apps through the WebdriverIO MCP server, including installation, usage with Claude and available tools. - [Configuration](https://webdriver.io/docs/mcp/configuration.md): Configure the WebdriverIO MCP server, including session, browser, mobile, cloud provider, element detection and Appium options. - [Transport](https://webdriver.io/docs/mcp/transport.md): Run the WebdriverIO MCP server over the default stdio transport or over Streamable HTTP, and pick the right mode for your client. - [Cloud Providers](https://webdriver.io/docs/mcp/cloud-providers.md): Run WebdriverIO MCP browser and mobile sessions on cloud device farms, including credentials, app uploads, tunnels and reporting. - [Selectors](https://webdriver.io/docs/mcp/selectors.md): Choose selectors to locate elements on web pages and mobile apps when automating with the WebdriverIO MCP server. - [Tools](https://webdriver.io/docs/mcp/tools.md): Look up the tools exposed by the WebdriverIO MCP server for sessions, navigation, element interaction, screenshots, gestures and app lifecycle. - [Resources](https://webdriver.io/docs/mcp/resources.md): Read live session state, session history and cloud provider setup details through the read-only wdio:// resources of the WebdriverIO MCP server. - [FAQ](https://webdriver.io/docs/mcp/faq.md): Find answers to common questions about installing, using and troubleshooting the WebdriverIO MCP server for browser and mobile automation. ## Writing Tests All pages of this section in one file: https://webdriver.io/llms/writing-tests.txt - [Selectors](https://webdriver.io/docs/selectors.md): Find elements with CSS, text, XPath, accessibility name, ARIA role and other selector strategies, and learn which ones are most resilient. - [Auto-waiting](https://webdriver.io/docs/autowait.md): Understand how WebdriverIO automatically waits for elements to become interactable, when to wait manually, and why implicit timeouts are discouraged. - [Timeouts](https://webdriver.io/docs/timeouts.md): Configure WebDriver session timeouts, WebdriverIO waitfor timeouts and test framework timeouts to keep tests reliable. - [Assertion](https://webdriver.io/docs/assertion.md): Write assertions on browser and element state with the built-in expect-webdriverio library, use soft assertions and migrate from Chai. - [Page Object Pattern](https://webdriver.io/docs/pageobjects.md): Structure your tests with the page object pattern by moving selectors and page-specific actions into reusable page classes. - [Request Mocks and Spies](https://webdriver.io/docs/mocksandspies.md): Mock network requests and responses in your tests with browser.mock, abort requests and inspect calls with spies. - [Emulation](https://webdriver.io/docs/emulation.md): Emulate geolocation, color scheme, user agent, online state, clock and devices in the browser with the emulate command. - [Snapshot](https://webdriver.io/docs/snapshot.md): Assert objects, DOM structures and command results with snapshot and inline snapshot tests, and compare visual snapshots. - [Custom Commands](https://webdriver.io/docs/customcommands.md): Add your own browser and element commands with addCommand, overwrite existing commands and extend the TypeScript type definitions. - [Custom Matchers](https://webdriver.io/docs/custommatchers.md): Register custom browser and element matchers with expect.extend and add TypeScript types for them. - [Parameterize Tests](https://webdriver.io/docs/parameterize-tests.md): Parameterize tests with loops and dynamic functions, environment variables, .env files or data from a CSV file. - [Organizing Test Suite](https://webdriver.io/docs/organizingsuites.md): Organize a growing test suite by sharing config files, grouping specs into suites, running specs sequentially and including or excluding tests. - [Multiremote](https://webdriver.io/docs/multiremote.md): Control multiple browser or device sessions from a single test with multiremote, in standalone mode or with the WDIO testrunner. - [Security](https://webdriver.io/docs/security.md): Protect sensitive test data by following security best practices and masking passwords and keys in logs and reports. ### Writing Tests / Best Practices - [Best Practices](https://webdriver.io/docs/bestpractices.md): Write fast, resilient tests with WebdriverIO by using stable selectors, fewer element queries, built-in assertions and no manual pauses. - [File Download](https://webdriver.io/docs/best-practices/file-download.md): Configure download directories for Chrome, Firefox and Edge, wait for downloads to finish and verify downloaded files across browsers. - [Browser Logs](https://webdriver.io/docs/best-practices/browser-logs.md): Capture browser console logs during a test with WebDriver Bidi log events and assert against the collected messages. ## Platforms All pages of this section in one file: https://webdriver.io/llms/platforms.txt ### Platforms / Web Browsers - [Web Browsers](https://webdriver.io/docs/platforms/web.md): Set up and run WebdriverIO end-to-end, component, visual and accessibility tests in Chrome, Firefox, Microsoft Edge and Safari. - [Driver Binaries](https://webdriver.io/docs/driverbinaries.md): Let WebdriverIO download and manage browser drivers automatically, or set up Chromedriver, Geckodriver, Edgedriver and Safaridriver manually. - [Web Extension Testing](https://webdriver.io/docs/extension-testing/web-extensions.md): Load a web extension into Chrome or Firefox during a WebdriverIO session and test its content scripts and popup end to end. ### Platforms / Web Browsers / Component Testing - [Component Testing](https://webdriver.io/docs/component-testing.md): Run unit and component tests in real browsers with the WebdriverIO browser runner, powered by Vite, including setup, test harness and debugging. - [Coverage](https://webdriver.io/docs/component-testing/coverage.md): Collect code coverage for component tests with the browser runner, which instruments your code with istanbul through Vite. - [Mocking](https://webdriver.io/docs/component-testing/mocking.md): Mock functions, modules and network requests in browser runner component tests with fn, spyOn and mock from @wdio/browser-runner. ### Platforms / Web Browsers / Component Testing / Framework Setup - [Lit](https://webdriver.io/docs/component-testing/lit.md): Set up the WebdriverIO browser runner for Lit web components and write tests that query elements inside nested shadow roots. - [Vue.js](https://webdriver.io/docs/component-testing/vue.md): Set up the WebdriverIO browser runner for Vue.js, write component tests with Testing Library and test async components and Nuxt apps. - [Svelte](https://webdriver.io/docs/component-testing/svelte.md): Set up the WebdriverIO browser runner for a Svelte project with the svelte preset and write component tests with Testing Library. - [SolidJS](https://webdriver.io/docs/component-testing/solid.md): Set up the WebdriverIO browser runner for a SolidJS project with the solid preset and write component tests that render into the page. - [React](https://webdriver.io/docs/component-testing/react.md): Set up the WebdriverIO browser runner for a React project with the react preset and write component tests with Testing Library. - [Preact](https://webdriver.io/docs/component-testing/preact.md): Set up the WebdriverIO browser runner for a Preact project with the preact preset and write component tests with Testing Library. - [Stencil](https://webdriver.io/docs/component-testing/stencil.md): Set up the WebdriverIO browser runner for Stencil components, render them with the render helper and wait for element updates. ### Platforms / Mobile Apps - [Mobile Apps](https://webdriver.io/docs/platforms/mobile.md): Set up and run WebdriverIO tests for native, hybrid and mobile web apps on Android and iOS emulators, simulators, real devices and device clouds. - [Appium Setup](https://webdriver.io/docs/appium.md): Set up Appium and its drivers with the appium-installer toolkit to test native mobile, hybrid and desktop apps with WebdriverIO. ### Platforms / Mobile Apps / Flutter Testing - [Introduction](https://webdriver.io/docs/flutter-testing/introduction.md): Get an overview of end-to-end testing of Flutter apps on Android and iOS with WebdriverIO, Appium and the Appium Flutter Driver. - [Preparing the Flutter App](https://webdriver.io/docs/flutter-testing/preparing-flutter-application.md): Enable the flutter_driver extension in a Flutter app and produce a test build so WebdriverIO and Appium can interact with its widgets. - [Base Appium Configuration](https://webdriver.io/docs/flutter-testing/base-appium-configuration.md): Install the Appium service and Flutter finder package and configure the base Appium setup for testing Flutter apps with WebdriverIO. - [Setting up WebdriverIO in your environment](https://webdriver.io/docs/flutter-testing/setting-up-webdriverio.md): Configure wdio.conf.ts and Appium capabilities to start a Flutter app with the Appium Flutter Driver on Android and iOS. - [Writing Tests](https://webdriver.io/docs/flutter-testing/writing-tests.md): Write WebdriverIO tests for Flutter apps by switching to the Flutter context and interacting with widgets through the flutter_driver extension. ### Platforms / Desktop Apps - [Desktop Apps](https://webdriver.io/docs/platforms/desktop.md): Pick the right WebdriverIO setup for native macOS apps and for Electron, Tauri and Dioxus apps on macOS, Windows and Linux, and run a first test. - [MacOS](https://webdriver.io/docs/desktop-testing/macos.md): Automate native macOS applications with WebdriverIO using Appium and the Mac2 driver, starting from the project setup wizard. - [Windows](https://webdriver.io/docs/desktop-testing/windows.md): Check the current state of automating native Windows applications with WebdriverIO and why no stable driver is available yet. ### Platforms / Desktop Apps / Electron - [Electron](https://webdriver.io/docs/desktop-testing/electron.md): Test Electron apps with the WebdriverIO Electron service, which sets up Chromedriver, detects your app binary and lets you mock Electron APIs. - [Configuration](https://webdriver.io/docs/desktop-testing/electron/configuration.md): This document covers all configuration options for the WDIO Electron Service, including service options and Chromedriver configuration. - [Accessing Electron APIs](https://webdriver.io/docs/desktop-testing/electron/api.md): This guide covers how to work with Electron APIs in your tests, including accessing APIs from the main process and mocking them for testing. - [API Reference](https://webdriver.io/docs/desktop-testing/electron/api-reference.md): This document provides a complete reference for all browser.electron.* methods and exported utility functions provided by the service. - [Window Management](https://webdriver.io/docs/desktop-testing/electron/window-management.md): The service automatically tracks the active Electron BrowserWindow and ensures WebdriverIO commands target it. You can write tests against your app without manually shuffling window handles when the renderer changes (for example, splash screen → main window). - [Deeplink Testing](https://webdriver.io/docs/desktop-testing/electron/deeplink-testing.md): The service provides the ability to test custom protocol handlers and deeplinks in your Electron application using the browser.electron.triggerDeeplink() method. This feature automatically handles platform-specific differences, particularly on Windows where deeplinks would normally launch a new instance instead of reaching the test instance. - [Standalone Mode](https://webdriver.io/docs/desktop-testing/electron/standalone.md): You can also use the service without the WDIO testrunner, e.g. in a normal Node.js script. - [Debugging](https://webdriver.io/docs/desktop-testing/electron/debugging.md): This guide covers the debugging tools and features available in the Electron service to help you gain visibility into your application's behavior during tests. - [Common Issues](https://webdriver.io/docs/desktop-testing/electron/common-issues.md): These are some common issues which others have encountered whilst using the service. For debugging tools and features, see the Debugging guide. ### Platforms / Desktop Apps / Tauri - [Tauri](https://webdriver.io/docs/desktop-testing/tauri.md): Test Tauri desktop apps on Windows, macOS and Linux with the WebdriverIO Tauri service, using the setup wizard or a manual configuration. - [Quick Start](https://webdriver.io/docs/desktop-testing/tauri/quick-start.md): Get up and running with WebdriverIO and Tauri E2E testing in minutes. - [Configuration](https://webdriver.io/docs/desktop-testing/tauri/configuration.md): Complete guide to configuring @wdio/tauri-service in your WebdriverIO setup. - [API Reference](https://webdriver.io/docs/desktop-testing/tauri/api.md): Complete API reference for @wdio/tauri-service. - [Plugin Setup](https://webdriver.io/docs/desktop-testing/tauri/plugin-setup.md): Overview - [Platform Support](https://webdriver.io/docs/desktop-testing/tauri/platform-support.md): Complete guide to platform-specific requirements, limitations, and WebDriver setup for Tauri testing. - [Usage Examples](https://webdriver.io/docs/desktop-testing/tauri/usage-examples.md): Practical examples for testing Tauri applications with WebdriverIO. - [Log Forwarding](https://webdriver.io/docs/desktop-testing/tauri/log-forwarding.md): Capture and forward logs from your Tauri application to WebDriverIO's logger system. - [Edge WebDriver on Windows](https://webdriver.io/docs/desktop-testing/tauri/edge-webdriver-windows.md): Overview - [Deeplink Testing](https://webdriver.io/docs/desktop-testing/tauri/deeplink-testing.md): The service provides the ability to test custom protocol handlers and deeplinks in your Tauri application using the browser.tauri.triggerDeeplink() method. - [CrabNebula Setup](https://webdriver.io/docs/desktop-testing/tauri/crabnebula-setup.md): This guide walks you through setting up CrabNebula's tauri-driver for cross-platform Tauri testing. - [Troubleshooting](https://webdriver.io/docs/desktop-testing/tauri/troubleshooting.md): Solutions for common issues when testing Tauri applications with WebdriverIO. ### Platforms / Desktop Apps / Dioxus - [Dioxus](https://webdriver.io/docs/desktop-testing/dioxus.md): Test Dioxus desktop apps on Windows, macOS and Linux with the WebdriverIO Dioxus service, using the setup wizard or a manual configuration. - [Quick Start](https://webdriver.io/docs/desktop-testing/dioxus/quick-start.md): Get up and running with WebdriverIO and Dioxus E2E testing in minutes. - [Configuration](https://webdriver.io/docs/desktop-testing/dioxus/configuration.md): Complete guide to configuring @wdio/dioxus-service in your WebdriverIO setup. - [API Reference](https://webdriver.io/docs/desktop-testing/dioxus/api.md): Complete API reference for @wdio/dioxus-service. - [Bridge Setup](https://webdriver.io/docs/desktop-testing/dioxus/plugin-setup.md): Overview - [Platform Support](https://webdriver.io/docs/desktop-testing/dioxus/platform-support.md): Complete guide to platform-specific requirements, limitations, and driver setup for Dioxus testing. - [Usage Examples](https://webdriver.io/docs/desktop-testing/dioxus/usage-examples.md): Practical examples for testing Dioxus applications with WebdriverIO. - [Browser Mode](https://webdriver.io/docs/desktop-testing/dioxus/browser-mode.md): Browser mode lets you test your Dioxus frontend UI in plain Chrome against a running dev server — no Dioxus binary, no driver. The Dioxus invoke API is intercepted at the JavaScript boundary in the renderer, so you can mock individual commands and assert on call arguments just like in native mode. - [Log Forwarding](https://webdriver.io/docs/desktop-testing/dioxus/log-forwarding.md): Capture and forward logs from your Dioxus application to WebdriverIO's logger system. - [Edge WebDriver on Windows](https://webdriver.io/docs/desktop-testing/dioxus/edge-webdriver-windows.md): Overview - [Deeplink Testing](https://webdriver.io/docs/desktop-testing/dioxus/deeplink-testing.md): The service provides the ability to test custom protocol handlers and deeplinks in your Dioxus application using the browser.dioxus.triggerDeeplink() method. - [Coexistence](https://webdriver.io/docs/desktop-testing/dioxus/coexistence.md): This guide explains how to run @wdio/dioxus-service alongside @wdio/tauri-service and @wdio/electron-service in the same monorepo. - [Troubleshooting](https://webdriver.io/docs/desktop-testing/dioxus/troubleshooting.md): Solutions for common issues when testing Dioxus applications with WebdriverIO. ### Platforms / Extensions & Editors - [Extensions & Editors](https://webdriver.io/docs/platforms/apps-and-extensions.md): Load a browser extension or a VS Code extension into a WebdriverIO session and test it end to end. - [VS Code Extension Testing](https://webdriver.io/docs/extension-testing/vscode-extensions.md): Test VS Code extensions end to end in the desktop IDE or as web extensions with WebdriverIO and the VS Code service. ## Testing Types All pages of this section in one file: https://webdriver.io/llms/testing-types.txt ### Testing Types / Visual Testing - [Visual Testing](https://webdriver.io/docs/visual-testing.md): Compare screenshots of screens, elements or full pages against baselines with the @wdio/visual-service, including installation and usage. - [Writing Tests](https://webdriver.io/docs/visual-testing/writing-tests.md): Write visual tests with Mocha, Jasmine or Cucumber that save screenshots or match them against baselines with custom matchers and check methods. - [Methods](https://webdriver.io/docs/visual-testing/methods.md): Use the save and check methods of the visual service to capture screenshots and compare screens, elements and full pages against baselines. - [Test Output](https://webdriver.io/docs/visual-testing/test-output.md): Understand the output and images produced by the save and check methods of the visual service, including layout testing and block-outs. - [Visual Reporter](https://webdriver.io/docs/visual-testing/visual-reporter.md): Generate and browse the Visual Reporter to review visual test diffs from the JSON output of @wdio/visual-service, locally or in CI. - [Considerations](https://webdriver.io/docs/visual-testing/considerations.md): Understand the limits of image comparison, platform consistency, mismatch percentages and headless browsers before relying on visual tests. - [SmartUI](https://webdriver.io/docs/visual-testing/integrate-with-smartui.md): Add AI-powered visual regression testing to WebdriverIO tests with TestMu AI (formerly LambdaTest) SmartUI, including setup and options. - [Elevate Your Visual Testing with Argos](https://webdriver.io/docs/visual-testing/argos.md): Send WebdriverIO screenshots to Argos to review grouped visual changes from pull requests, approve intended ones and catch regressions. - [FAQ](https://webdriver.io/docs/visual-testing/faq.md): Find answers to common visual testing questions, such as updating baselines, fixing canvas installation errors and upgrading to v10. ### Testing Types / Visual Testing / Options - [Service Options](https://webdriver.io/docs/visual-testing/service-options.md): Configure default options for the visual service, including screenshot capture, full-page screenshots, baselines, folders and reporting. - [Method Options](https://webdriver.io/docs/visual-testing/method-options.md): Set per-method save, compare and folder options for visual testing methods that override the service-level options. - [Compare Options](https://webdriver.io/docs/visual-testing/compare-options.md): Tune how screenshots are compared with visual sensitivity, pixelmatch, mobile block-out and reporting options for the visual service. ### Testing Types / Visual Testing / Percy - [Unlocking Percy - An Overview](https://webdriver.io/docs/percy-overview.md): Get an overview of visual testing for websites and native mobile apps with Percy and App Percy, and how Percy compares snapshots. - [For Web Application](https://webdriver.io/docs/visual-testing/integrate-with-percy.md): Integrate WebdriverIO tests for web applications with BrowserStack Percy for visual testing, from creating a project to running builds. - [For Mobile Application](https://webdriver.io/docs/visual-testing/integrate-with-app-percy.md): Integrate WebdriverIO mobile app tests with BrowserStack App Percy for visual testing, starting with setting your PERCY_TOKEN. ### Testing Types / Accessibility Testing - [Axe Core](https://webdriver.io/docs/accessibility-testing/axe-core.md): Run automated accessibility checks in your tests with the open-source Axe adapter from Deque, in standalone or testrunner mode. - [BrowserStack Accessibility Testing](https://webdriver.io/docs/accessibility-testing/browserstack.md): Add automated accessibility scans to WebdriverIO tests running on BrowserStack Automate and review the issues found in BrowserStack reports. - [TestMu AI (Formerly LambdaTest) Accessibility Testing](https://webdriver.io/docs/accessibility-testing/testmuai.md): Enable TestMu AI (formerly LambdaTest) accessibility testing in your WebdriverIO suite, configure scan options and view the accessibility reports. ### Testing Types / OCR Testing - [OCR Testing](https://webdriver.io/docs/ocr-testing/ocr-testing.md): Locate and interact with elements by their visible text on web and mobile apps with the OCR service when regular selectors fall short. - [Getting Started](https://webdriver.io/docs/ocr-testing/getting-started.md): Install and configure @wdio/ocr-service, set up TypeScript support and tune contrast, image folder and language options. - [CLI Wizard](https://webdriver.io/docs/ocr-testing/cli-wizard.md): Check which text the OCR service can find in an image without running a test by using the OCR CLI wizard. - [Test execution time](https://webdriver.io/docs/ocr-testing/more-test-optimization.md): Speed up OCR-based tests by cropping the search area of the screen and using a local Tesseract installation. - [Frequently Asked Questions](https://webdriver.io/docs/ocr-testing/ocr-faq.md): Find answers to common questions about slow OCR tests, text that is not found and combining OCR commands with regular selectors. ### Testing Types / OCR Testing / Commands - [ocrClickOnText](https://webdriver.io/docs/ocr-testing/ocr-click-on-text.md): Click on an element by its visible text with ocrClickOnText, which finds the text on screen with OCR and fuzzy matching. - [ocrGetElementPositionByText](https://webdriver.io/docs/ocr-testing/ocr-get-element-position-by-text.md): Get the on-screen position of a text with ocrGetElementPositionByText, using OCR and fuzzy matching to find it. - [ocrGetText](https://webdriver.io/docs/ocr-testing/ocr-get-text.md): Read the text shown on the screen or in a specific area with ocrGetText from the OCR service. - [ocrSetValue](https://webdriver.io/docs/ocr-testing/ocr-set-value.md): Type into an input field located by its visible text with ocrSetValue, which finds the field with OCR and fuzzy matching. - [ocrWaitForTextDisplayed](https://webdriver.io/docs/ocr-testing/ocr-wait-for-text-displayed.md): Wait until a specific text is displayed on the screen with ocrWaitForTextDisplayed from the OCR service. ## Running Tests All pages of this section in one file: https://webdriver.io/llms/running-tests.txt - [Testrunner](https://webdriver.io/docs/testrunner.md): Install the WDIO testrunner from @wdio/cli and use its config, run, install and repl commands to set up and run test suites. - [Configuration File](https://webdriver.io/docs/configurationfile.md): Browse an annotated example wdio.conf.js that lists every supported testrunner option, capability and hook with explanations. - [Capabilities](https://webdriver.io/docs/capabilities.md): Define capabilities to choose the browser or mobile environment your tests run in, including custom vendor capabilities and special use cases. - [Runner](https://webdriver.io/docs/runner.md): Choose between the local runner and the browser runner, and configure browser runner options such as presets, Vite config and coverage. - [Frameworks](https://webdriver.io/docs/frameworks.md): Configure Mocha, Jasmine or Cucumber.js as the test framework for the WDIO testrunner, or integrate third-party frameworks like Serenity/JS. - [TypeScript Setup](https://webdriver.io/docs/typescript.md): Write WebdriverIO tests in TypeScript with tsx, set up tsconfig.json and add type definitions for frameworks, services and custom commands. - [Headless & Xvfb with the Testrunner](https://webdriver.io/docs/headless-and-xvfb.md): How WebdriverIO uses Xvfb for headless testing on Linux, configuration options, CI recipes, and troubleshooting. - [Sharding](https://webdriver.io/docs/sharding.md): Split your test suite across multiple machines with the --shard option to run tests faster, for example on GitHub Actions. - [Retry Flaky Tests](https://webdriver.io/docs/retry.md): Retry flaky tests in Mocha, Jasmine or Cucumber, rerun whole spec files and run a specific test multiple times to detect flakiness. - [Watch Test Files](https://webdriver.io/docs/watcher.md): Rerun tests automatically when spec or application files change by running the WDIO testrunner with the --watch flag and filesToWatch. - [Proxy Setup](https://webdriver.io/docs/proxy.md): Route requests through a proxy, either between your tests and the driver or between the browser and the internet. ### Running Tests / Cloud & CI - [Using Cloud Services](https://webdriver.io/docs/cloudservices.md): Run WebdriverIO tests on Sauce Labs, BrowserStack, TestingBot, TestMu AI (formerly LambdaTest), Perfecto and other cloud providers. - [Selenium Grid](https://webdriver.io/docs/seleniumgrid.md): Connect WebdriverIO tests to an existing Selenium Grid by setting the protocol, hostname, port and path in your configuration. - [Docker](https://webdriver.io/docs/docker.md): Run your WebdriverIO test suite inside a Docker container with a preinstalled browser for consistent results across machines. - [Github Actions](https://webdriver.io/docs/githubactions.md): Run your WebdriverIO tests on GitHub Actions by adding a workflow file to your repository. - [Jenkins](https://webdriver.io/docs/jenkins.md): Run WebdriverIO tests in Jenkins and publish JUnit reporter results to debug failures and track test history. - [Bamboo](https://webdriver.io/docs/bamboo.md): Run WebdriverIO tests in Atlassian Bamboo and publish JUnit results so you can track passing, failing and fixed tests per build. ## Debugging All pages of this section in one file: https://webdriver.io/llms/debugging.txt - [Debugging](https://webdriver.io/docs/debugging.md): Debug WebdriverIO tests with browser.debug, VS Code or WebStorm breakpoints, strategies for flaky tests, and CPU and heap profiling. - [REPL interface](https://webdriver.io/docs/repl.md): Use the WebdriverIO REPL to try out commands and debug tests interactively from the command line or from within a running test. - [Record Tests](https://webdriver.io/docs/record.md): Record user flows with the Chrome DevTools Recorder and export them as WebdriverIO tests. - [Autocompletion](https://webdriver.io/docs/autocompletion.md): Get autocompletion and inline API documentation for WebdriverIO commands in IntelliJ, WebStorm and Visual Studio Code. ### Debugging / DevTools - [DevTools](https://webdriver.io/docs/devtools.md): Visualize, control and inspect test runs in a browser-based debugging UI that works with WebdriverIO, Nightwatch.js and Selenium WebDriver. - [Getting Started](https://webdriver.io/docs/devtools/getting-started.md): Install WebdriverIO DevTools and run your first test in live mode or trace mode to replay the DOM, screenshots, network and console output. - [Configuration Reference](https://webdriver.io/docs/devtools/reference.md): Look up every DevTools option for live mode and trace mode across the WebdriverIO, Selenium and Nightwatch adapters, with defaults. ### Debugging / DevTools / Live Mode - [The Dashboard](https://webdriver.io/docs/devtools/dashboard.md): Watch test runs live in the DevTools dashboard, rerun single tests or suites, and configure the dashboard window and backend. - [Interactive Test Rerunning & Visualization](https://webdriver.io/docs/devtools/wdio/interactive-test-rerunning.md): Watch tests run with live browser previews and per-command screenshots, then rerun single tests or suites from the DevTools UI. - [Preserve & Rerun (Compare)](https://webdriver.io/docs/devtools/wdio/preserve-and-rerun.md): Snapshot a failing run and rerun the test in one click with Preserve & Rerun, then compare both runs to find what changed. - [Console Logs](https://webdriver.io/docs/devtools/wdio/console-logs.md): Capture and inspect browser console messages and WebdriverIO framework logs recorded by DevTools during test execution. - [Network Logs](https://webdriver.io/docs/devtools/wdio/network-logs.md): Inspect every HTTP request and response captured by DevTools during a test to debug API calls, payloads and slow requests. - [Metadata](https://webdriver.io/docs/devtools/wdio/metadata.md): Inspect the capabilities, environment and timing of each browser session in the DevTools Metadata tab to diagnose environment-specific failures. - [TestLens](https://webdriver.io/docs/devtools/wdio/testlens.md): Jump from a test in the DevTools UI straight to its definition and line number in your code editor with TestLens. - [Multi-Framework Support](https://webdriver.io/docs/devtools/wdio/multi-framework-support.md): Use the DevTools service with Mocha, Jasmine or Cucumber without framework-specific configuration. - [Session Screencast](https://webdriver.io/docs/devtools/wdio/screencast.md): Record browser sessions as .webm videos with DevTools screencast, configure capture options and find the output files. ### Debugging / DevTools / Trace Mode - [Trace Mode](https://webdriver.io/docs/devtools/wdio/trace-mode.md): Capture headless trace artifacts with DevTools trace mode and configure format, granularity, retention, screenshots, video and assertions. - [Trace Player](https://webdriver.io/docs/devtools/trace-player.md): Open trace-mode artifacts in the show-trace player for offline replay and review, or load them into other trace viewers. - [Allure Integration](https://webdriver.io/docs/devtools/allure.md): Attach DevTools trace-mode artifacts such as trace zips, screenshots and videos to your Allure report automatically. - [Cross-Framework Support](https://webdriver.io/docs/devtools/cross-framework.md): Compare how completely DevTools trace mode captures WebdriverIO, Selenium and Nightwatch runs, and which gaps each adapter has. - [Trace Mode Limitations](https://webdriver.io/docs/devtools/limitations.md): Review what DevTools trace mode deliberately does not capture and the known limitations across the WebdriverIO, Selenium and Nightwatch adapters. ### Debugging / DevTools / Frameworks - [WebDriverIO DevTools](https://webdriver.io/docs/devtools/wdio.md): Install and configure the WebdriverIO DevTools service to debug tests with DOM replay, screenshots, network and console capture and screencasts. - [Selenium DevTools](https://webdriver.io/docs/devtools/selenium.md): Add the DevTools debugging UI to Selenium WebDriver tests in Node.js or Python with any test runner, and enable trace mode. - [Nightwatch DevTools](https://webdriver.io/docs/devtools/nightwatch.md): Add the DevTools debugging UI to a Nightwatch test suite without changing tests, and configure screencasts, BiDi capture and trace mode. ## Extending All pages of this section in one file: https://webdriver.io/llms/extending.txt - [Custom Services](https://webdriver.io/docs/customservices.md): Write a custom launcher or worker service for the WDIO testrunner using testrunner hooks, handle service errors and publish it on NPM. - [Custom Reporter](https://webdriver.io/docs/customreporter.md): Build a custom reporter for the WDIO testrunner on top of @wdio/reporter, handle runner events and publish it on NPM. ## Upgrade All pages of this section in one file: https://webdriver.io/llms/upgrade.txt - [From v9 to v10](https://webdriver.io/docs/v10-migration.md): Every breaking change of WebdriverIO v10 and how to update your project, including Node.js, Mocha, Cucumber, strict selectors and removed commands. ## Reference All pages of this section in one file: https://webdriver.io/llms/reference.txt - [Introduction](https://webdriver.io/docs/api.md): Find reference docs for WebdriverIO protocol bindings and convenience commands, including WebDriver, WebDriver Bidi and Appium commands. - [Configuration](https://webdriver.io/docs/configuration.md): Look up every configuration option for WebDriver, standalone WebdriverIO and the WDIO testrunner, including all testrunner hooks. - [Expect](https://webdriver.io/docs/api/expect-webdriverio.md): 'When - [Globals](https://webdriver.io/docs/api/globals.md): In your test files, WebdriverIO puts each of these methods and objects into the global environment. You don't have to import anything to use them. However, if you prefer explicit imports, you can do import { browser, $, $$, expect } from '@wdio/globals' and set injectGlobals: false in your WDIO configuration. - [Environment Variables](https://webdriver.io/docs/api/environment.md): WebdriverIO sets the following environment variables within every worker: - [Modules](https://webdriver.io/docs/api/modules.md): WebdriverIO publishes various modules to NPM and other registries that you can use to build your own automation framework. See more documentation on WebdriverIO setup types here. ### Protocols - [Protocol Commands](https://webdriver.io/docs/api/protocols.md): WebdriverIO is an automation framework that relies on various automation protocols to control a remote agent, e.g. for a browser, mobile device or television. Based on the remote device different protocols come into play. These commands are assigned to the Browser or Element Object depending on the session information by the remote server (e.g. browser driver). - [Appium](https://webdriver.io/docs/api/appium.md): getLogTypes - [Chromium](https://webdriver.io/docs/api/chromium.md): isAlertOpen - [Firefox](https://webdriver.io/docs/api/gecko.md): fullPageScreenshot - [Mobile JSON Wire Protocol](https://webdriver.io/docs/api/mjsonwp.md): getPageIndex - [Sauce Labs](https://webdriver.io/docs/api/saucelabs.md): All commands are only supported on Chrome using Sauce Labs - [Selenium Standalone](https://webdriver.io/docs/api/selenium.md): file - [WebDriver Protocol](https://webdriver.io/docs/api/webdriver.md): newSession - [WebDriver Bidi Protocol](https://webdriver.io/docs/api/webdriverBidi.md): These protocol commands are generated based on the current living ### browser - [The Browser Object](https://webdriver.io/docs/api/browser.md): Extends: EventEmitter - [$$](https://webdriver.io/docs/api/browser/$$.md): The $$ command is a short and handy way in order to fetch multiple elements on the page. - [$](https://webdriver.io/docs/api/browser/$.md): The $ command is a short and handy way in order to fetch a single element on the page. - [action](https://webdriver.io/docs/api/browser/action.md): The action command is a low-level interface for providing virtualized device input actions to the web browser. - [actions](https://webdriver.io/docs/api/browser/actions.md): Allows to run multiple action interactions at once, e.g. to simulate a pinch zoom or hold a modifier key while - [addCommand](https://webdriver.io/docs/api/browser/addCommand.md): The browser method addCommand helps you to write your own set of commands. - [addInitScript](https://webdriver.io/docs/api/browser/addInitScript.md): Adds a script which would be evaluated in one of the following scenarios: - [call](https://webdriver.io/docs/api/browser/call.md): You can use call to execute any async action within your test spec. - [custom$$](https://webdriver.io/docs/api/browser/custom$$.md): The customs$$ allows you to use a custom strategy declared by using browser.addLocatorStrategy. - [custom$](https://webdriver.io/docs/api/browser/custom$.md): The custom$ allows you to use a custom strategy declared by using browser.addLocatorStrategy. - [debug](https://webdriver.io/docs/api/browser/debug.md): This command helps you to debug your integration tests. It stops the running browser and gives - [deleteCookies](https://webdriver.io/docs/api/browser/deleteCookies.md): Delete cookies visible to the current page. By providing a cookie name it - [downloadFile](https://webdriver.io/docs/api/browser/downloadFile.md): Download a file from the remote computer running Selenium node to local file system - [emulate](https://webdriver.io/docs/api/browser/emulate.md): WebdriverIO allows you to emulate Web APIs using the emulate command. These Web APIs can then - [execute](https://webdriver.io/docs/api/browser/execute.md): Inject a snippet of JavaScript into the page for execution in the context of the currently selected frame. - [executeAsync](https://webdriver.io/docs/api/browser/executeAsync.md): The executeAsync command is deprecated and will be removed in a future version. - [getCookies](https://webdriver.io/docs/api/browser/getCookies.md): Retrieve a cookie - [getPuppeteer](https://webdriver.io/docs/api/browser/getPuppeteer.md): Get the Puppeteer Browser instance - [getWindowSize](https://webdriver.io/docs/api/browser/getWindowSize.md): Returns browser window size. - [keys](https://webdriver.io/docs/api/browser/keys.md): 'Send - [mock](https://webdriver.io/docs/api/browser/mock.md): Mock the response of a request. You can define a mock based on a matching - [mockClearAll](https://webdriver.io/docs/api/browser/mockClearAll.md): Resets all information stored in all registered mocks of the session. - [mockRestoreAll](https://webdriver.io/docs/api/browser/mockRestoreAll.md): Restores all mock information and behavior stored in all registered - [newWindow](https://webdriver.io/docs/api/browser/newWindow.md): Open new window or tab in browser (defaults to a new window if not specified). - [overwriteCommand](https://webdriver.io/docs/api/browser/overwriteCommand.md): The browser method overwriteCommand helps you to overwrite the browser's and element's native commands like pause and click. - [pause](https://webdriver.io/docs/api/browser/pause.md): Pauses execution for a specific amount of time. It is recommended to not use this command to wait for an - [react$$](https://webdriver.io/docs/api/browser/react$$.md): The react$$ command is a useful command to query multiple React Components - [react$](https://webdriver.io/docs/api/browser/react$.md): The react$ command is a useful command to query React Components by their - [reloadSession](https://webdriver.io/docs/api/browser/reloadSession.md): Creates a new Selenium session with your current capabilities. This is useful if you - [restore](https://webdriver.io/docs/api/browser/restore.md): This command restores specific or all emulated behaviors that were set using the emulate command. - [savePDF](https://webdriver.io/docs/api/browser/savePDF.md): Prints the page of the current browsing context to a PDF file on your OS. - [saveRecordingScreen](https://webdriver.io/docs/api/browser/saveRecordingScreen.md): Save a video started by startRecordingScreen command to file. - [saveScreenshot](https://webdriver.io/docs/api/browser/saveScreenshot.md): Save a screenshot of the current browsing context to a PNG file on your OS. Be aware that - [scroll](https://webdriver.io/docs/api/browser/scroll.md): Scroll within the browser viewport. Note that x and y coordinates are relative to the current - [setCookies](https://webdriver.io/docs/api/browser/setCookies.md): Sets one or more cookies for the current page. Make sure you are - [setTimeout](https://webdriver.io/docs/api/browser/setTimeout.md): Sets the timeouts associated with the current session, timeout durations control such - [setViewport](https://webdriver.io/docs/api/browser/setViewport.md): Resizes the browser viewport within the browser. As oppose to setWindowSize, - [setWindowSize](https://webdriver.io/docs/api/browser/setWindowSize.md): Resizes browser window outer size according to provided width and height. Based on your operating - [switchFrame](https://webdriver.io/docs/api/browser/switchFrame.md): Switches the active context to a frame, e.g. an iframe on the page. There are multiple ways you can query a frame - [switchWindow](https://webdriver.io/docs/api/browser/switchWindow.md): Switch focus to a particular tab / window. - [throttleCPU](https://webdriver.io/docs/api/browser/throttleCPU.md): Throttles the CPU to emulate a slower processor. - [throttleNetwork](https://webdriver.io/docs/api/browser/throttleNetwork.md): Throttle the network capabilities of the browser. This can help to - [uploadFile](https://webdriver.io/docs/api/browser/uploadFile.md): Uploads a file to the Selenium Standalone server or other browser driver - [url](https://webdriver.io/docs/api/browser/url.md): The url command loads an URL in the browser. If a baseUrl is specified in the config, - [waitUntil](https://webdriver.io/docs/api/browser/waitUntil.md): This wait command is your universal weapon if you want to wait on something. It expects a condition ### element - [The Element Object](https://webdriver.io/docs/api/element.md): An Element Object is an object representing an element on the remote user agent, e.g. a DOM Node when running a session within a browser or a mobile element for mobile. It can be received using one of the many element query commands, e.g. $, custom$, react$ or shadow$. - [$$](https://webdriver.io/docs/api/element/$$.md): The $$ command is a short and handy way in order to fetch multiple elements on the page. - [$](https://webdriver.io/docs/api/element/$.md): The $ command is a short and handy way in order to fetch a single element on the page. - [addValue](https://webdriver.io/docs/api/element/addValue.md): Add a value to an input or textarea element found by given selector. - [clearValue](https://webdriver.io/docs/api/element/clearValue.md): Clear the value of an input or textarea element. Make sure you can interact with the - [click](https://webdriver.io/docs/api/element/click.md): Click on an element. - [custom$$](https://webdriver.io/docs/api/element/custom$$.md): The customs$$ allows you to use a custom strategy declared by using browser.addLocatorStrategy. - [custom$](https://webdriver.io/docs/api/element/custom$.md): The custom$ allows you to use a custom strategy declared by using browser.addLocatorStrategy. - [doubleClick](https://webdriver.io/docs/api/element/doubleClick.md): Double-click on an element. - [dragAndDrop](https://webdriver.io/docs/api/element/dragAndDrop.md): Drag an item to a destination element or position. - [execute](https://webdriver.io/docs/api/element/execute.md): Inject a snippet of JavaScript into the page for execution in the context of the currently selected - [executeAsync](https://webdriver.io/docs/api/element/executeAsync.md): The executeAsync command is deprecated and will be removed in a future version. - [getAttribute](https://webdriver.io/docs/api/element/getAttribute.md): Get an attribute from a DOM-element based on the attribute name. - [getCSSProperty](https://webdriver.io/docs/api/element/getCSSProperty.md): Get a css property from a DOM-element selected by given selector. The return value - [getComputedLabel](https://webdriver.io/docs/api/element/getComputedLabel.md): Get the computed WAI-ARIA label of an element. - [getComputedRole](https://webdriver.io/docs/api/element/getComputedRole.md): Get the computed WAI-ARIA label of an element. - [getElement](https://webdriver.io/docs/api/element/getElement.md): Access WebdriverIO.Element properties like selector or elementId from the element reference. - [getElements](https://webdriver.io/docs/api/element/getElements.md): Access WebdriverIO.ElementArray properties like length or selector from the elements reference. - [getHTML](https://webdriver.io/docs/api/element/getHTML.md): Get source code of specified DOM element by selector. By default, it automatically - [getLocation](https://webdriver.io/docs/api/element/getLocation.md): Determine an element’s location on the page. The point (0, 0) refers to - [getProperty](https://webdriver.io/docs/api/element/getProperty.md): The Get Element Property command will return the result of getting a property of an - [getSize](https://webdriver.io/docs/api/element/getSize.md): Get the width and height for an DOM-element. - [getTagName](https://webdriver.io/docs/api/element/getTagName.md): Get tag name of a DOM-element. - [getText](https://webdriver.io/docs/api/element/getText.md): Get the text content from a DOM-element. Make sure the element - [getValue](https://webdriver.io/docs/api/element/getValue.md): Get the value of a `, or text ` found by given selector. - [isClickable](https://webdriver.io/docs/api/element/isClickable.md): An element is considered to be clickable when the following conditions are met: - [isDisplayed](https://webdriver.io/docs/api/element/isDisplayed.md): Return true if the selected DOM-element is displayed (even when the element is outside the viewport). It is using - [isEnabled](https://webdriver.io/docs/api/element/isEnabled.md): Return true or false if the selected DOM-element is enabled. - [isEqual](https://webdriver.io/docs/api/element/isEqual.md): Return true if the selected element matches with the provided one. - [isExisting](https://webdriver.io/docs/api/element/isExisting.md): Returns true if element exists in the DOM. - [isFocused](https://webdriver.io/docs/api/element/isFocused.md): Return true or false if the selected DOM-element currently has focus. If the selector matches - [isSelected](https://webdriver.io/docs/api/element/isSelected.md): Will return true or false whether or not an ` or ` element of type - [isStable](https://webdriver.io/docs/api/element/isStable.md): Will return true when the element is stable (not animating) or false when unstable (currently animating). - [moveTo](https://webdriver.io/docs/api/element/moveTo.md): Move the mouse by an offset of the specified element. If no element is specified, - [nextElement](https://webdriver.io/docs/api/element/nextElement.md): Returns the next sibling element of the selected DOM-element. - [parentElement](https://webdriver.io/docs/api/element/parentElement.md): Returns the parent element of the selected DOM-element. - [previousElement](https://webdriver.io/docs/api/element/previousElement.md): Returns the previous sibling element of the selected DOM-element. - [react$$](https://webdriver.io/docs/api/element/react$$.md): The react$$ command is a useful command to query multiple React Components - [react$](https://webdriver.io/docs/api/element/react$.md): The react$ command is a useful command to query React Components by their - [saveScreenshot](https://webdriver.io/docs/api/element/saveScreenshot.md): Save a screenshot of an element to a PNG file on your OS. - [scrollIntoView](https://webdriver.io/docs/api/element/scrollIntoView.md): Scroll element into viewport for Desktop/Mobile Web AND Mobile Native Apps. - [selectByAttribute](https://webdriver.io/docs/api/element/selectByAttribute.md): Select option with a specific value. - [selectByIndex](https://webdriver.io/docs/api/element/selectByIndex.md): Select option with a specific index. - [selectByVisibleText](https://webdriver.io/docs/api/element/selectByVisibleText.md): Select option with displayed text matching the argument. - [setValue](https://webdriver.io/docs/api/element/setValue.md): Send a sequence of key strokes to an element after the input has been cleared before. If the element doesn't need - [shadow$$](https://webdriver.io/docs/api/element/shadow$$.md): Access elements inside a given element's shadowRoot. If you are working - [shadow$](https://webdriver.io/docs/api/element/shadow$.md): Access an element inside a given element's shadowRoot. If you are working - [waitForClickable](https://webdriver.io/docs/api/element/waitForClickable.md): Wait for an element for the provided amount of milliseconds to be clickable or not clickable. - [waitForDisplayed](https://webdriver.io/docs/api/element/waitForDisplayed.md): true to check if the element is within the viewport. false by default. - [waitForEnabled](https://webdriver.io/docs/api/element/waitForEnabled.md): Wait for an element (selected by css selector) for the provided amount of - [waitForExist](https://webdriver.io/docs/api/element/waitForExist.md): Wait for an element for the provided amount of - [waitForStable](https://webdriver.io/docs/api/element/waitForStable.md): Wait for an element for the provided amount of - [waitUntil](https://webdriver.io/docs/api/element/waitUntil.md): This wait command is your universal weapon if you want to wait on something. It expects a condition ### mobile - [Mobile Commands](https://webdriver.io/docs/api/mobile.md): Testing mobile apps and mobile web applications comes with its own challenges, especially when dealing with platform-specific differences between Android and iOS. While Appium provides the flexibility to handle these differences, it often requires you to dive deep into complex, platform-dependent docs (Android, iOS) and commands. This can make writing test scripts more time-consuming, error-prone, and difficult to maintain. - [acceptDialog](https://webdriver.io/docs/api/mobile/acceptDialog.md): Accept a native mobile alert or permission dialog. - [background](https://webdriver.io/docs/api/mobile/background.md): Send the currently running app for this session to the background. - [closeApp](https://webdriver.io/docs/api/mobile/closeApp.md): Close a specific app or the currently active app on the device. - [deepLink](https://webdriver.io/docs/api/mobile/deepLink.md): Open a deep link URL in the mobile app based on the url and the app's package name (Android) or bundle ID (iOS). - [dismissDialog](https://webdriver.io/docs/api/mobile/dismissDialog.md): Dismiss a native mobile alert or permission dialog. - [dragAndDrop](https://webdriver.io/docs/api/mobile/dragAndDrop.md): Drag an item to a destination element or position. - [fingerPrint](https://webdriver.io/docs/api/mobile/fingerPrint.md): Authenticate users by using their fingerprint scan on supported Android emulators. The - [getClipboard](https://webdriver.io/docs/api/mobile/getClipboard.md): Get the content of the system clipboard as a base64-encoded string. - [getContext](https://webdriver.io/docs/api/mobile/getContext.md): Retrieve the context of the current session. - [getContexts](https://webdriver.io/docs/api/mobile/getContexts.md): The WebdriverIO getContexts method is an improved version of the default Appium contexts - [getCurrentActivity](https://webdriver.io/docs/api/mobile/getCurrentActivity.md): Get the name of the current Android activity. - [getCurrentPackage](https://webdriver.io/docs/api/mobile/getCurrentPackage.md): Get the name of the current Android package. - [getDisplayDensity](https://webdriver.io/docs/api/mobile/getDisplayDensity.md): Get the display density from the device. - [getPerformanceData](https://webdriver.io/docs/api/mobile/getPerformanceData.md): Get performance data for a specific application. Returns system state information like cpu, - [getPerformanceDataTypes](https://webdriver.io/docs/api/mobile/getPerformanceDataTypes.md): Returns the information types of the system state which is supported to read - [getStrings](https://webdriver.io/docs/api/mobile/getStrings.md): Get app strings for a specific language. Returns a key-value object of all string resources - [getSystemBars](https://webdriver.io/docs/api/mobile/getSystemBars.md): Retrieve visibility and bounds information of the status and navigation bars. - [gsmCall](https://webdriver.io/docs/api/mobile/gsmCall.md): Make a GSM call on the Android emulator. Valid actions: 'call', 'accept', 'cancel', 'hold'. - [gsmSignal](https://webdriver.io/docs/api/mobile/gsmSignal.md): Set the GSM signal strength on the Android emulator. - [gsmVoice](https://webdriver.io/docs/api/mobile/gsmVoice.md): Set the GSM voice state on the Android emulator. Valid values: 'unregistered', 'home', - [isLocked](https://webdriver.io/docs/api/mobile/isLocked.md): Check whether the device screen is locked. - [launchApp](https://webdriver.io/docs/api/mobile/launchApp.md): Launch or activate an app on the device. If no bundleId (iOS) or appId (Android) is provided, - [lock](https://webdriver.io/docs/api/mobile/lock.md): Lock the device screen. - [longPress](https://webdriver.io/docs/api/mobile/longPress.md): Performs a long press gesture on the given element on the screen. - [longPressKeyCode](https://webdriver.io/docs/api/mobile/longPressKeyCode.md): Press and hold a particular key code on the device. - [openNotifications](https://webdriver.io/docs/api/mobile/openNotifications.md): Open Android notifications. - [pinch](https://webdriver.io/docs/api/mobile/pinch.md): Performs a pinch gesture on the given element on the screen. - [powerAC](https://webdriver.io/docs/api/mobile/powerAC.md): Set the state of the battery charger on the Android emulator. Valid values: 'on', 'off'. - [powerCapacity](https://webdriver.io/docs/api/mobile/powerCapacity.md): Set the battery percentage on the Android emulator. Value must be in the range [0, 100]. - [pressKeyCode](https://webdriver.io/docs/api/mobile/pressKeyCode.md): Press a particular key on the device. The keycode values correspond to Android KeyEvent constants. - [relaunchActiveApp](https://webdriver.io/docs/api/mobile/relaunchActiveApp.md): Performs a restart of the active native app by: - [scrollIntoView](https://webdriver.io/docs/api/mobile/scrollIntoView.md): Scroll element into viewport for Desktop/Mobile Web AND Mobile Native Apps. - [sendKeyEvent](https://webdriver.io/docs/api/mobile/sendKeyEvent.md): Send a key event to the Android device. - [sendSms](https://webdriver.io/docs/api/mobile/sendSms.md): Simulate an SMS message being received on the Android emulator. - [setClipboard](https://webdriver.io/docs/api/mobile/setClipboard.md): Set the content of the system clipboard. - [shake](https://webdriver.io/docs/api/mobile/shake.md): Perform a shake action on the device. Supports iOS Simulator and real devices. - [startActivity](https://webdriver.io/docs/api/mobile/startActivity.md): The package name of the app to start. - [swipe](https://webdriver.io/docs/api/mobile/swipe.md): Swipe in a specific direction within viewport or element for Desktop/Mobile Web AND Mobile Native Apps. - [switchContext](https://webdriver.io/docs/api/mobile/switchContext.md): Switch to a specific context using a given Webview name, title, or url. - [tap](https://webdriver.io/docs/api/mobile/tap.md): Performs a tap gesture on: - [toggleAirplaneMode](https://webdriver.io/docs/api/mobile/toggleAirplaneMode.md): Set the airplane mode state on the device. - [toggleData](https://webdriver.io/docs/api/mobile/toggleData.md): Set the mobile data state on the device. - [toggleEnrollTouchId](https://webdriver.io/docs/api/mobile/toggleEnrollTouchId.md): Toggle Touch ID enrollment on iOS Simulator. - [toggleLocationServices](https://webdriver.io/docs/api/mobile/toggleLocationServices.md): Toggle the state of the location service. - [toggleNetworkSpeed](https://webdriver.io/docs/api/mobile/toggleNetworkSpeed.md): Set the network speed for the Android emulator. Valid values: 'full', 'gsm', 'edge', 'hscsd', - [toggleWiFi](https://webdriver.io/docs/api/mobile/toggleWiFi.md): Set the WiFi state on the device. - [touchId](https://webdriver.io/docs/api/mobile/touchId.md): Simulate a Touch ID or Face ID biometric match event on iOS Simulator. - [unlock](https://webdriver.io/docs/api/mobile/unlock.md): Unlock the device screen. - [zoom](https://webdriver.io/docs/api/mobile/zoom.md): Performs a zoom gesture on the given element on the screen. ### mock - [The Mock Object](https://webdriver.io/docs/api/mock.md): The mock object is an object that represents a network mock and contains information about requests that were matching given url and filterOptions. It can be received using the mock command. - [abort](https://webdriver.io/docs/api/mock/abort.md): Abort the request with one of the following error codes: - [abortOnce](https://webdriver.io/docs/api/mock/abortOnce.md): Abort the request once with one of the following error codes: - [clear](https://webdriver.io/docs/api/mock/clear.md): Resets all information stored in the mock.calls array. - [redirect](https://webdriver.io/docs/api/mock/redirect.md): Sets up a redirect for a given mock. This allows you to redirect a request to another URL. - [request](https://webdriver.io/docs/api/mock/request.md): Allows you do modify requests the browser makes during the session. This can be useful for the following use cases: - [requestOnce](https://webdriver.io/docs/api/mock/requestOnce.md): Only change request parameter once with given overwrite for the next request. You can call requestOnce multiple - [respond](https://webdriver.io/docs/api/mock/respond.md): Always respond with same overwrite. - [respondOnce](https://webdriver.io/docs/api/mock/respondOnce.md): Only respond once with given overwrite. You can call respondOnce multiple - [restore](https://webdriver.io/docs/api/mock/restore.md): Does everything that mock.clear() does, and also removes any mocked return values or implementations. - [waitForResponse](https://webdriver.io/docs/api/mock/waitForResponse.md): Wait until at least one matching request has received a response. ### dialog - [The Dialog Object](https://webdriver.io/docs/api/dialog.md): Dialog objects are dispatched by browser via the browser.on('dialog') event. - [accept](https://webdriver.io/docs/api/dialog/accept.md): Accepts the dialog and returns when the dialog has been handled. - [defaultValue](https://webdriver.io/docs/api/dialog/defaultValue.md): If dialog is prompt, returns default prompt value. Otherwise, returns empty string. - [dismiss](https://webdriver.io/docs/api/dialog/dismiss.md): Dismisses the dialog and returns when the dialog has been handled. - [message](https://webdriver.io/docs/api/dialog/message.md): A message displayed in the dialog. - [type](https://webdriver.io/docs/api/dialog/type.md): Returns dialog's type, can be one of alert, beforeunload, confirm or prompt. ### clock - [The Clock Object](https://webdriver.io/docs/api/clock.md): You can modify the browser system clock using the emulate command. It overrides native global functions related to time allowing them to be controlled synchronously via clock.tick() or the yielded clock object. This includes controlling: - [restore](https://webdriver.io/docs/api/clock/restore.md): Restore all overridden native functions. This is automatically called between tests, so should not - [setSystemTime](https://webdriver.io/docs/api/clock/setSystemTime.md): Change the system time to the new now. Now can be a timestamp, date object, or not passed in which defaults - [tick](https://webdriver.io/docs/api/clock/tick.md): Move the clock the specified number of milliseconds. Any timers within the affected range of time will be called. ## Ecosystem All pages of this section in one file: https://webdriver.io/llms/ecosystem.txt - [Ecosystem](https://webdriver.io/docs/ecosystem.md): Directory of all official and community WebdriverIO services, reporters and tools, with the package to install for each. - [WebdriverIO for Enterprise](https://webdriver.io/docs/enterprise.md): Get commercial support and maintenance for WebdriverIO and other open source dependencies through the Tidelift Subscription. ### Reporters - [Allure Reporter](https://webdriver.io/docs/allure-reporter.md): A WebdriverIO reporter plugin to create Allure Test Reports - [Concise Reporter](https://webdriver.io/docs/concise-reporter.md): A concise reporter for WebdriverIO - [Dot Reporter](https://webdriver.io/docs/dot-reporter.md): A WebdriverIO plugin to report in dot style - [Json Reporter](https://webdriver.io/docs/json-reporter.md): A WebdriverIO plugin to report results in json format. - [Junit Reporter](https://webdriver.io/docs/junit-reporter.md): A WebdriverIO reporter that creates Jenkins compatible XML based JUnit reports - [Spec Reporter](https://webdriver.io/docs/spec-reporter.md): A WebdriverIO plugin to report in spec style - [Sumologic Reporter](https://webdriver.io/docs/sumologic-reporter.md): A WebdriverIO reporter that sends test results to Sumologic for data analyses - [Report Portal Reporter](https://webdriver.io/docs/wdio-reportportal-reporter.md): wdio-reportportal-reporter is a 3rd party package, for more information please see GitHub | npm - [Video Reporter](https://webdriver.io/docs/wdio-video-reporter.md): wdio-video-reporter is a 3rd party package, for more information please see GitHub | npm - [HTML Reporter](https://webdriver.io/docs/wdio-html-nice-reporter.md): wdio-html-nice-reporter is a 3rd party package, for more information please see GitHub | npm - [Timeline Reporter](https://webdriver.io/docs/wdio-timeline-reporter.md): wdio-timeline-reporter is a 3rd party package, for more information please see GitHub | npm - [CucumberJS JSON Reporter](https://webdriver.io/docs/wdio-cucumberjs-json-reporter.md): wdio-cucumberjs-json-reporter is a 3rd party package, for more information please see GitHub | npm - [Delta Reporter Reporter](https://webdriver.io/docs/wdio-delta-reporter-service.md): wdio-delta-reporter-service is a 3rd party package, for more information please see GitHub | npm - [Teamcity Reporter Reporter](https://webdriver.io/docs/wdio-teamcity-reporter.md): wdio-teamcity-reporter is a 3rd party package, for more information please see GitHub | npm - [Testrail Reporter Reporter](https://webdriver.io/docs/wdio-testrail-reporter.md): @wdio/testrail-reporter is a 3rd party package, for more information please see GitHub | npm - [Slack Reporter Reporter](https://webdriver.io/docs/wdio-slack-reporter.md): wdio-slack-reporter is a 3rd party package, for more information please see GitHub | npm - [Light Reporter Reporter](https://webdriver.io/docs/wdio-light-reporter.md): wdio-light-reporter is a 3rd party package, for more information please see GitHub | npm - [JSON HTML Reporter Reporter](https://webdriver.io/docs/wdio-json-html-reporter.md): wdio-json-html-reporter is a 3rd party package, for more information please see GitHub | npm - [TestPlanIt Reporter Reporter](https://webdriver.io/docs/testplanit-wdio-reporter.md): @testplanit/wdio-reporter is a 3rd party package, for more information please see GitHub | npm - [Serenity/JS HTML Reporter](https://webdriver.io/docs/serenity-js-html-reporter.md): @serenity-js/html-reporter is a 3rd party package, for more information please see GitHub | npm ### Services - [Appium Service](https://webdriver.io/docs/appium-service.md): A WebdriverIO service to start & stop Appium Server - [Firefox Profile Service](https://webdriver.io/docs/firefox-profile-service.md): WebdriverIO service that lets you define your Firefox profile in your wdio.conf.js - [Lighthouse Service](https://webdriver.io/docs/lighthouse-service.md): A WebdriverIO service that allows you to run Chrome DevTools commands in your tests - [Sauce Service](https://webdriver.io/docs/sauce-service.md): WebdriverIO service that provides a better integration into Sauce Labs - [Shared Store Service](https://webdriver.io/docs/shared-store-service.md): A WebdriverIO service to exchange data across processes - [Static Server Service](https://webdriver.io/docs/static-server-service.md): A WebdriverIO service that can serve your static websites - [Testingbot Service](https://webdriver.io/docs/testingbot-service.md): A WebdriverIO service that provides a better integration into TestingBot - [Webdriver Mock Service](https://webdriver.io/docs/webdriver-mock-service.md): A WebdriverIO service to stub all endpoints for internal testing purposes. - [DevTools (Test Debugging & Visualization) Service](https://webdriver.io/docs/wdio-devtools-service.md): @wdio/devtools-service is a 3rd party package, for more information please see GitHub | npm - [Image Comparison (Visual Regression Testing) Service](https://webdriver.io/docs/wdio-visual-service.md): @wdio/visual-service is a 3rd party package, for more information please see GitHub | npm - [OCR Testing Service](https://webdriver.io/docs/wdio-ocr-service.md): @wdio/ocr-service is a 3rd party package, for more information please see GitHub | npm - [VSCode Extension Testing Service](https://webdriver.io/docs/wdio-vscode-service.md): wdio-vscode-service is a 3rd party package, for more information please see GitHub | npm - [Nuxt Service Service](https://webdriver.io/docs/wdio-nuxt-service.md): wdio-nuxt-service is a 3rd party package, for more information please see GitHub | npm - [Intercept Service](https://webdriver.io/docs/wdio-intercept-service.md): wdio-intercept-service is a 3rd party package, for more information please see GitHub | npm - [Electron Service](https://webdriver.io/docs/wdio-electron-service.md): @wdio/electron-service is a 3rd party package, for more information please see GitHub | npm - [Tauri Service](https://webdriver.io/docs/wdio-tauri-service.md): @wdio/tauri-service is a 3rd party package, for more information please see GitHub | npm - [Dioxus Service](https://webdriver.io/docs/wdio-dioxus-service.md): @wdio/dioxus-service is a 3rd party package, for more information please see GitHub | npm - [Gmail Service](https://webdriver.io/docs/wdio-gmail-service.md): wdio-gmail-service is a 3rd party package, for more information please see GitHub | npm - [Zafira Listener Service](https://webdriver.io/docs/wdio-zafira-listener-service.md): wdio-zafira-listener-service is a 3rd party package, for more information please see GitHub | npm - [Report Portal Service](https://webdriver.io/docs/wdio-reportportal-service.md): wdio-reportportal-service is a 3rd party package, for more information please see GitHub | npm - [Docker Service](https://webdriver.io/docs/wdio-docker-service.md): wdio-docker-service is a 3rd party package, for more information please see GitHub | npm - [UI5 Service](https://webdriver.io/docs/wdio-ui5-service.md): wdio-ui5-service is a 3rd party package, for more information please see GitHub | npm - [WireMock Service](https://webdriver.io/docs/wdio-wiremock-service.md): wdio-wiremock-service is a 3rd party package, for more information please see GitHub | npm - [Roku Service](https://webdriver.io/docs/wdio-roku-service.md): wdio-roku-service is a 3rd party package, for more information please see GitHub | npm - [Slack Service](https://webdriver.io/docs/wdio-slack-service.md): wdio-slack-service is a 3rd party package, for more information please see GitHub | npm - [TV Labs Service](https://webdriver.io/docs/tvlabs-wdio-service.md): @tvlabs/wdio-service is a 3rd party package, for more information please see GitHub | npm - [TestMu AI (Formerly LambdaTest) Service](https://webdriver.io/docs/wdio-lambdatest-service.md): wdio-lambdatest-service is a 3rd party package, for more information please see GitHub | npm - [Ng-apimock Service](https://webdriver.io/docs/wdio-ng-apimock-service.md): wdio-ng-apimock-service is a 3rd party package, for more information please see GitHub | npm - [Novus Visual Regression Service](https://webdriver.io/docs/wdio-novus-visual-regression-service.md): wdio-novus-visual-regression-service is a 3rd party package, for more information please see GitHub | npm - [Re-run Service](https://webdriver.io/docs/wdio-rerun-service.md): wdio-rerun-service is a 3rd party package, for more information please see GitHub | npm - [winappdriver Service](https://webdriver.io/docs/wdio-winappdriver-service.md): wdio-winappdriver-service is a 3rd party package, for more information please see GitHub | npm - [ywinappdriver Service](https://webdriver.io/docs/wdio-ywinappdriver-service.md): wdio-ywinappdriver-service is a 3rd party package, for more information please see GitHub | npm - [PerformanceTotal Service](https://webdriver.io/docs/wdio-performancetotal-service.md): wdio-performancetotal-service is a 3rd party package, for more information please see GitHub | npm - [CleanupTotal Service](https://webdriver.io/docs/wdio-cleanuptotal-service.md): wdio-cleanuptotal-service is a 3rd party package, for more information please see GitHub | npm - [AWS Device Farm Service](https://webdriver.io/docs/wdio-aws-device-farm-service.md): wdio-aws-device-farm-service is a 3rd party package, for more information please see GitHub | npm - [Library of useful expected conditions Service](https://webdriver.io/docs/wdio-wait-for.md): wdio-wait-for is a 3rd party package, for more information please see GitHub | npm - [Support for Angular component test harnesses Service](https://webdriver.io/docs/badisi-wdio-harness.md): @badisi/wdio-harness is a 3rd party package, for more information please see GitHub | npm - [Auto-detect missing imports w/eslint Service](https://webdriver.io/docs/wdio-eslinter-service.md): wdio-eslinter-service is a 3rd party package, for more information please see GitHub | npm - [Cucumber Viewport Logger Service](https://webdriver.io/docs/wdio-cucumber-viewport-logger-service.md): wdio-cucumber-viewport-logger-service is a 3rd party package, for more information please see GitHub | npm - [Tesults Service](https://webdriver.io/docs/wdio-tesults-service.md): wdio-tesults-service is a 3rd party package, for more information please see GitHub | npm - [Azure DevOps Test Plans Service](https://webdriver.io/docs/gmangiapelo-wdio-azure-devops-service.md): @gmangiapelo/wdio-azure-devops-service is a 3rd party package, for more information please see GitHub | npm - [Google Chat Service](https://webdriver.io/docs/qajonatasmartins-wdio-google-chat-service.md): @qajonatasmartins/wdio-google-chat-service is a 3rd party package, for more information please see GitHub | npm - [Qmate Service](https://webdriver.io/docs/sap_oss-wdio-qmate-service.md): @saposs/wdio-qmate-service is a 3rd party package, for more information please see GitHub | npm - [Robonut Service](https://webdriver.io/docs/wdio-robonut-service.md): wdio-robonut-service is a 3rd party package, for more information please see GitHub | npm - [QUnit Service](https://webdriver.io/docs/wdio-qunit-service.md): wdio-qunit-service is a 3rd party package, for more information please see GitHub | npm - [Obsidian Plugin Testing Service](https://webdriver.io/docs/wdio-obsidian-service.md): wdio-obsidian-service is a 3rd party package, for more information please see GitHub | npm - [Camera Service Service](https://webdriver.io/docs/wdio-camera-service.md): wdio-camera-service is a 3rd party package, for more information please see GitHub | npm - [Null Driver Service](https://webdriver.io/docs/wdio-null-driver-service.md): wdio-null-driver-service is a 3rd party package, for more information please see GitHub | npm ## Optional - [Blog](https://webdriver.io/blog): release announcements and deep dives - [Community](https://webdriver.io/community/support.md): where to get help (Discord, GitHub Discussions) - [GitHub](https://github.com/webdriverio/webdriverio): source code, issues and changelog - [WebdriverIO MCP](https://github.com/webdriverio/mcp): MCP server that lets agents drive browsers and mobile apps - [WebdriverIO DevTools](https://github.com/webdriverio/devtools): live test debugging and portable traces