What is wdio-chromedriver-service?
The wdio-chromedriver-service is a WebdriverIO service that provides a simple way to run ChromeDriver seamlessly when running tests with WebdriverIO. It eliminates the need to manually start and stop the ChromeDriver binary, making the setup process more straightforward and less error-prone.
What are wdio-chromedriver-service's main functionalities?
Automatic ChromeDriver Management
This feature allows you to automatically manage the ChromeDriver lifecycle. The service will start the ChromeDriver binary before the tests begin and stop it after the tests are completed. This eliminates the need for manual setup and teardown of the ChromeDriver.
const { remote } = require('webdriverio');
const options = {
capabilities: {
browserName: 'chrome'
},
services: ['chromedriver']
};
async function main() {
const browser = await remote(options);
await browser.url('https://example.com');
console.log(await browser.getTitle());
await browser.deleteSession();
}
main();
Custom ChromeDriver Options
This feature allows you to customize the ChromeDriver options such as specifying a custom port or log file. This can be useful for debugging or when running multiple instances of ChromeDriver.
const { remote } = require('webdriverio');
const options = {
capabilities: {
browserName: 'chrome'
},
services: ['chromedriver'],
chromedriver: {
port: 9515,
logFileName: 'wdio-chromedriver.log'
}
};
async function main() {
const browser = await remote(options);
await browser.url('https://example.com');
console.log(await browser.getTitle());
await browser.deleteSession();
}
main();
Other packages similar to wdio-chromedriver-service
selenium-standalone
The selenium-standalone package provides a similar functionality by managing the Selenium server and browser drivers. It can be used to install, start, and stop the Selenium server and browser drivers, including ChromeDriver. However, it requires more configuration compared to wdio-chromedriver-service, which is more tightly integrated with WebdriverIO.
chromedriver
The chromedriver package is a Node.js wrapper for downloading and managing the ChromeDriver binary. While it provides the basic functionality needed to run ChromeDriver, it does not integrate directly with WebdriverIO, requiring additional setup to use it in WebdriverIO tests.
wdio-selenium-standalone-service
The wdio-selenium-standalone-service is another WebdriverIO service that manages the Selenium server and browser drivers, including ChromeDriver. It provides a broader range of browser support compared to wdio-chromedriver-service, which is specific to ChromeDriver. However, it may be overkill if you only need to run tests on Chrome.
WDIO ChromeDriver Service
This service helps you to run ChromeDriver seamlessly when running tests with the WDIO testrunner. It uses the chromedriver NPM package that wraps the ChromeDriver for you.
Note: this service does not require a Selenium server, but uses ChromeDriver to communicate with the browser directly.
Obviously, it only supports:
capabilities: [{
browserName: 'chrome'
}]
Installation
The easiest way is to keep wdio-chromedriver-service
as a devDependency in your package.json
.
{
"devDependencies": {
"wdio-chromedriver-service": "^8.0.0"
}
}
You can simple do it by:
npm install wdio-chromedriver-service --save-dev
Note: You have to install chromedriver separately, as it's a peerDependency of this project, and you're free to choose what version to use. Depending of which version of Chrome you have installed on your system you should install the same version of chromedriver
. Install it using:
npm install chromedriver --save-dev
npm install chromedriver@104 --save-dev
Instructions on how to install WebdriverIO
can be found here.
Configuration
By design, only Google Chrome is available (when installed on the host system). In order to use the service you need to add chromedriver
to your service array:
export.config = {
outputDir: 'all-logs',
services: [
['chromedriver', {
logFileName: 'wdio-chromedriver.log',
outputDir: 'driver-logs',
args: ['--silent']
}]
],
};
Options
port
The port on which the driver should run on
Example: 7676
Type: number
path
The path on which the driver should run on
Example: /
Type: string
protocol
The protocol on which the driver should use
Example: http
Type: string
hostname
The protocol on which the driver should use
Example: localhost
Type: string
pollTimeout
The startup timeout in ms, it checks if the port is open before starting ChromeDriver and then checks again if the it is closed after starting it.
Example: 10000
Type: number
outputDir
The path where the output of the ChromeDriver server should be stored (uses the config.outputDir by default when not set).
Example: driver-logs
Type: string
logFileName
The name of the log file to be written in outputDir
.
Example: wdio-chromedriver.log
Type: string
chromedriverCustomPath
To use a custome chromedriver different than the one installed through "chromedriver npm module", provide the path.
Example: /path/to/chromedriver
(Linux / MacOS), ./chromedriver.exe
or d:/driver/chromedriver.exe
(Windows)
Type: string
For more information on WebdriverIO see the homepage.