What is @wdio/local-runner?
@wdio/local-runner is a part of the WebdriverIO test automation framework. It allows you to run WebdriverIO tests locally on your machine. This package is particularly useful for running end-to-end tests in a local environment, providing a streamlined way to execute and manage test suites.
What are @wdio/local-runner's main functionalities?
Running Tests Locally
This feature allows you to run WebdriverIO tests locally. The code sample demonstrates how to set up a local WebdriverIO session, navigate to a URL, retrieve the page title, and then close the session.
const { remote } = require('webdriverio');
(async () => {
const browser = await remote({
capabilities: { browserName: 'chrome' }
});
await browser.url('https://webdriver.io');
const title = await browser.getTitle();
console.log('Title was: ' + title);
await browser.deleteSession();
})();
Parallel Test Execution
This feature allows you to run multiple test instances in parallel, which can significantly speed up the test execution time. The code sample shows a configuration file where the `maxInstances` property is set to 5, allowing up to 5 parallel test executions.
exports.config = {
runner: 'local',
specs: [
'./test/specs/**/*.js'
],
maxInstances: 5,
capabilities: [{
maxInstances: 5,
browserName: 'chrome'
}],
...
};
Custom Services
This feature allows you to integrate custom services like Selenium Standalone, Appium, etc., into your test runner. The code sample shows how to add the `selenium-standalone` service to the WebdriverIO configuration.
exports.config = {
runner: 'local',
services: ['selenium-standalone'],
...
};
Other packages similar to @wdio/local-runner
selenium-webdriver
Selenium WebDriver is a popular tool for automating web applications for testing purposes. It provides a more low-level API compared to WebdriverIO, which can be both an advantage and a disadvantage depending on the use case. Selenium WebDriver requires more boilerplate code to set up and run tests.
cypress
Cypress is a modern end-to-end testing framework that is known for its developer-friendly features and fast test execution. Unlike WebdriverIO, Cypress runs in the same run-loop as the application being tested, which can lead to more reliable tests. However, it currently only supports testing in Chrome-family browsers.
nightwatch
Nightwatch.js is an integrated, easy-to-use end-to-end testing solution for web applications and websites, written in Node.js. It uses the W3C WebDriver API to perform commands and assertions on DOM elements. Nightwatch provides a simpler syntax compared to WebdriverIO but may lack some advanced features.