Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
@wdio/local-runner
Advanced tools
@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.
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'],
...
};
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 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.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.
A WebdriverIO runner to run tests locally within worker processes
The Local Runner initiates your framework (e.g. Mocha, Jasmine or Cucumber) within worker a process and runs all your test files within your Node.js environment. Every test file is being run in a separate worker process per capability allowing for maximum concurrency. Every worker process uses a single browser instance and therefore runs its own browser session allowing for maximum isolation.
Given every test is run in its own isolated process, it is not possible to share data across test files. There are two ways to work around this:
@wdio/shared-store-service
to share data across all workersIf nothing else is defined in the wdio.conf.js
the Local Runner is the default runner in WebdriverIO.
To use the Local Runner you can install it via:
npm install --save-dev @wdio/local-runner
The Local Runner is the default runner in WebdriverIO so there is no need to define it within your wdio.conf.js
. If you want to explicitly set it, you can define it as follows:
// wdio.conf.js
export const {
// ...
runner: 'local',
// ...
}
For more information on WebdriverIO runner, check out the documentation.
FAQs
A WebdriverIO runner to run tests locally
We found that @wdio/local-runner demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.