Next-gen browser and mobile automation test framework for Node.js
Installations
npm install @wdio/cli
Developer
Developer Guide
Module System
ESM
Min. Node Version
>=18.20.0
Typescript Support
Yes
Node Version
20.11.1
NPM Version
lerna/8.1.9/node@v20.11.1+x64 (linux)
Statistics
9,098 Stars
7,629 Commits
2,519 Forks
217 Watching
28 Branches
610 Contributors
Updated on 28 Nov 2024
Languages
TypeScript (94.14%)
JavaScript (3.49%)
EJS (1.54%)
CSS (0.72%)
Gherkin (0.07%)
Dockerfile (0.03%)
Vue (0.01%)
Total Downloads
Cumulative downloads
Total Downloads
98,293,032
Last day
-5.1%
114,013
Compared to previous day
Last week
6.3%
703,801
Compared to previous week
Last month
5.7%
2,851,987
Compared to previous month
Last year
24.4%
28,759,929
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
Dependencies
25
Next-gen browser and mobile automation test framework for Node.js.
Homepage | Developer Guide | API Reference | Contribute | Changelog | Roadmap
WebdriverIO is a test automation framework, for e2e as well as unit and component testing in the browser, that allows you to run tests based on the WebDriver and WebDriver BiDi as well as Appium automation technology. It provides support for your favorite BDD/TDD test framework and will run your tests locally or in the cloud using Sauce Labs, BrowserStack, TestingBot or LambdaTest.
:woman_technologist: :man_technologist: Contributing
Do you like WebdriverIO and want to help make it better? Awesome! Have a look into our Contributor Documentation to get started and find out what contributions can be and how to make them.
Getting started with GitHub Codespaces
To get started, create a codespace for this repository by clicking this 👇
A codespace will open in a web-based version of Visual Studio Code. The dev container is fully configured with the software needed for this project.
Note: Dev containers are an open spec that is supported by GitHub Codespaces and other tools.
Getting started with Gitpod
You can also just click on:
to get a ready-to-use development environment for you to start working on this code base.
If you're looking for issues to help out with, check out the issues labeled "good first pick". You can also reach out to our Matrix Channel if you have questions on where to start contributing.
:office: WebdriverIO for Enterprise
Available as part of the Tidelift Subscription.
The maintainers of WebdriverIO and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open-source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. Learn more.
:package: Packages
This repository contains some of the core packages of the WebdriverIO project. There are many wonderful curated resources the WebdriverIO community has put together.
Did you build a WebdriverIO service or reporter? That's awesome! Please add it to our configuration wizard and docs (e.g. like in this example commit) as well as to our awesome-webdriverio list. Thank you! 🙏 ❤️
Core
- webdriver - A Node.js bindings implementation for the W3C WebDriver and Mobile JSONWire Protocol
- webdriverio - Next-gen browser and mobile automation test framework for Node.js
- @wdio/cli - A WebdriverIO testrunner command line interface
Helper
- @wdio/config - A helper utility to parse and validate WebdriverIO options
- @wdio/logger - A helper utility for logging WebdriverIO packages
- @wdio/protocols - Utility package providing information about automation protocols
- @wdio/repl - A WDIO helper utility to provide a repl interface for WebdriverIO
- @wdio/reporter - A WebdriverIO utility to help report all events
- @wdio/runner - A WebdriverIO service that runs tests in arbitrary environments
- @wdio/utils - A WDIO helper utility to provide several utility functions used across the project
- @wdio/globals - A WDIO helper utility for importing global variables directly
Reporter
- @wdio/allure-reporter - A WebdriverIO reporter plugin to create Allure Test Reports
- @wdio/concise-reporter - A WebdriverIO reporter plugin to create concise test reports
- @wdio/dot-reporter - A WebdriverIO plugin to report in dot style
- @wdio/junit-reporter - A WebdriverIO reporter that creates test results in XML format
- @wdio/spec-reporter - A WebdriverIO plugin to report in spec style
- @wdio/sumologic-reporter - A WebdriverIO reporter that sends test results to Sumologic for data analyses
Services
- @wdio/appium-service - A WebdriverIO service to start & stop Appium Server
- @wdio/browserstack-service - A WebdriverIO service that can be used to use BrowserStack Test Observability which is a reporting, debugging, and test suite quality tracking tool for any test running anywhere. The service also helps for a better integration with the BrowserStack grid if you're running tests on the grid.
- @wdio/lighthouse-service - A WebdriverIO service that integrates Google Lighthouse commands to use it for automate tests
- @wdio/firefox-profile-service - A WebdriverIO service that lets you define your Firefox profile in your wdio.conf.js
- @wdio/sauce-service - A WebdriverIO service that provides a better integration into Sauce Labs
- @wdio/shared-store-service - A WebdriverIO service to exchange data across processes
- @wdio/testingbot-service - A WebdriverIO service that provides a better integration into TestingBot
Runner
- @wdio/local-runner - A WebdriverIO runner to run tests locally
- @wdio/browser-runner - A WebdriverIO runner to run unit or component tests in the browser
Framework Adapters
- @wdio/cucumber-framework - Adapter for Cucumber testing framework
- @wdio/jasmine-framework - Adapter for Jasmine testing framework
- @wdio/mocha-framework - Adapter for Mocha testing framework.
Others
- eslint-plugin-wdio - Eslint rules for WebdriverIO
- @wdio/smoke-test-reporter - A WebdriverIO utility to smoke test reporters for internal testing purposes
- @wdio/smoke-test-service - A WebdriverIO utility to smoke test services for internal testing purposes
- @wdio/webdriver-mock-service - A WebdriverIO service to stub all endpoints for internal testing purposes
Infrastructure Packages
These packages are not released to NPM and used to work on this codebase.
- @wdio/compiler - Esbuild script to compile the source code all of all packages
- @wdio/lerna-patch - This sub-package is being used to patch Lerna to not run
pnpm install
after it prepared all packages for release
:handshake: Project Governance
This project is maintained by awesome people following a common set of rules and treating each other with respect and appreciation.
:man_cook: :woman_cook: Backers
Become a backer and show your support for our open-source project.
:money_with_wings: Sponsors
Does your company use WebdriverIO? Ask your manager or marketing team if your company would be interested in supporting our project. Support will allow the maintainers to dedicate more time to maintenance and new features for everyone. Also, your company's logo will show on GitHub - who doesn't want a little extra exposure? Here's the info.
💎 Premium Sponsor
We are immensely grateful to our exclusive Premium Sponsor for their invaluable support in the development of this project:
🥇 Gold Sponsor
🥈 Silver Sponsor
🥉 Bronze Sponsor
:page_facing_up: License
:beginner: Badge
Show the world you're using webdriver.io →
GitHub markup
[![tested with webdriver.io](https://img.shields.io/badge/tested%20with-webdriver.io-%23ea5906)](https://webdriver.io/)
HTML
<a href="https://webdriver.io/">
<img alt="WebdriverIO" src="https://img.shields.io/badge/tested%20with-webdriver.io-%23ea5906">
</a>
:clap: Supporters
No vulnerabilities found.
Reason
no dangerous workflow patterns detected
Reason
30 commit(s) and 27 issue activity found in the last 90 days -- score normalized to 10
Reason
security policy file detected
Details
- Info: security policy file detected: .github/SECURITY.md:1
- Info: Found linked content: .github/SECURITY.md:1
- Info: Found disclosure, vulnerability, and/or timelines in security policy: .github/SECURITY.md:1
- Info: Found text in security policy: .github/SECURITY.md:1
Reason
license file detected
Details
- Info: project has a license file: LICENSE:0
- Info: FSF or OSI recognized license: MIT License: LICENSE:0
Reason
binaries present in source code
Details
- Warn: binary detected: e2e/browser-runner/wasm/add.wasm:1
Reason
badge detected: Passing
Reason
Found 9/30 approved changesets -- score normalized to 3
Reason
dependency not pinned by hash detected -- score normalized to 2
Details
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/authorize.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/authorize.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cr.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/cr.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cr.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/cr.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/expense.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/expense.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/publish.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/publish.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/publish.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-cloud.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/test-cloud.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-component.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/test-component.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-launch.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/test-launch.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-multiremote.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/test-multiremote.yml/main?enable=pin
- Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test-testrunner.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/test-testrunner.yml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/update.yaml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/update.yaml/main?enable=pin
- Warn: third-party GitHubAction not pinned by hash: .github/workflows/update.yaml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/webdriverio/webdriverio/update.yaml/main?enable=pin
- Warn: containerImage not pinned by hash: .devcontainer/Dockerfile:1: pin your Docker image by updating mcr.microsoft.com/devcontainers/javascript-node:0-18 to mcr.microsoft.com/devcontainers/javascript-node:0-18@sha256:ed57dd8755b4e75a0426bd10ab1d3a60a22bb21fc2e093801375990978c42fb5
- Warn: containerImage not pinned by hash: .gitpod/dev.dockerfile:1: pin your Docker image by updating gitpod/workspace-node to gitpod/workspace-node@sha256:b94507ff10f1626f9257f6e35018d7c73fc3d163bdb903cfe9d778452e275875
- Warn: npmCommand not pinned by hash: .devcontainer/Dockerfile:22-26
- Warn: npmCommand not pinned by hash: .gitpod/dev.dockerfile:14-15
- Warn: npmCommand not pinned by hash: .github/workflows/publish.yml:52
- Info: 16 out of 25 GitHub-owned GitHubAction dependencies pinned
- Info: 0 out of 5 third-party GitHubAction dependencies pinned
- Info: 0 out of 2 containerImage dependencies pinned
- Info: 0 out of 3 npmCommand dependencies pinned
Reason
detected GitHub workflow tokens with excessive permissions
Details
- Warn: jobLevel 'contents' permission set to 'write': .github/workflows/expense.yml:45
- Warn: jobLevel 'contents' permission set to 'write': .github/workflows/publish.yml:36
- Warn: no topLevel permission defined: .github/workflows/authorize.yml:1
- Warn: no topLevel permission defined: .github/workflows/build.yml:1
- Warn: no topLevel permission defined: .github/workflows/cr.yml:1
- Info: topLevel 'contents' permission set to 'read': .github/workflows/deploy.yml:8
- Warn: no topLevel permission defined: .github/workflows/expense.yml:1
- Warn: no topLevel permission defined: .github/workflows/labeler.yml:1
- Warn: no topLevel permission defined: .github/workflows/publish.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-cloud.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-component.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-interop.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-launch.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-multiremote.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-smoke.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-standalone.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-static.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-testrunner.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-typings.yml:1
- Warn: no topLevel permission defined: .github/workflows/test-unit.yml:1
- Warn: no topLevel permission defined: .github/workflows/test.yml:1
- Warn: topLevel 'contents' permission set to 'write': .github/workflows/update.yaml:11
Reason
project is not fuzzed
Details
- Warn: no fuzzer integrations found
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
- Warn: 0 commits out of 15 are checked with a SAST tool
Reason
17 existing vulnerabilities detected
Details
- Warn: Project is vulnerable to: GHSA-7q7g-4xm8-89cq
- Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x
- Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275
- Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6
- Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97
- Warn: Project is vulnerable to: GHSA-c7qv-q95q-8v27
- Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw
- Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j
- Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm
- Warn: Project is vulnerable to: GHSA-4vvj-4cpr-p986 / GHSA-64vr-g452-qvp3
- Warn: Project is vulnerable to: GHSA-9cwx-2883-4wfx
- Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7
- Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx
- Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv
- Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg
- Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p
- Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q
Score
5
/10
Last Scanned on 2024-11-18
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More