VSCode Extension Testing Service
wdio-vscode-service is a 3rd party package, for more information please see GitHub | npm
Tested on:
WebdriverIO service for testing VSCode extensions.
This WebdriverIO service allows you to seamlessly test your VSCode extensions from end to end in the VSCode Desktop IDE or as a web extension. You only need to provide a path to your extension and the service does the rest by:
- 🏗️ Installing VSCode (either
stable
,insiders
or a specified version) - ⬇️ Downloading Chromedriver specific to a given VSCode version
- 🚀 Enables you to access the VSCode API from your tests
- 🖥️ Starting VSCode with custom user settings (including support for VSCode on Ubuntu, MacOS and Windows)
- 🌐 Or serves VSCode from a server to be accessed by any browser for testing web extensions
- 📔 Bootstrapping page objects with locators matching your VSCode version
This project was highly inspired by the vscode-extension-tester project which is based on Selenium. This package takes the idea and adapts it to WebdriverIO.
Starting from VSCode v1.86 it is required to use webdriverio
v8.14 or later to install Chromedriver with no configuration necessary. If you need to test earlier versions of VSCode, see the Chromedriver configuration section below.
Installation
To initiate a new WebdriverIO project, run:
npm create wdio ./
An installation wizard will guide you through the process. Ensure you select TypeScript as compiler and don't have it generate page objects for you given this project comes with all page objects needed. Then make sure to select vscode
within the list of services:
For more information on how to install WebdriverIO
, please check the project docs.
Example Configuration
To use the service you need to add vscode
to your list of services, optionally followed by a configuration object. This will make WebdriverIO download given VSCode binaries and appropriate Chromedriver version:
// wdio.conf.ts
export const config = {
outputDir: 'trace',
// ...
capabilities: [{
browserName: 'vscode',
browserVersion: '1.86.0', // "insiders" or "stable" for latest VSCode version
'wdio:vscodeOptions': {
extensionPath: __dirname,
userSettings: {
"editor.fontSize": 14
}
}
}],
services: ['vscode'],
/**
* Optionally define the path WebdriverIO stores all VSCode binaries, e.g.:
* services: [['vscode', { cachePath: __dirname }]]
*/
// ...
};
If you define wdio:vscodeOptions
with any other browserName
but vscode
, e.g. chrome
, the service will serve the extension as a web extension. If you test on Chrome no additional driver service is required, e.g.:
// wdio.conf.ts
export const config = {
outputDir: 'trace',
// ...
capabilities: [{
browserName: 'chrome',
'wdio:vscodeOptions': {
extensionPath: __dirname
}
}],
services: ['vscode'],
// ...
};
Note: when testing web extensions you can only choose between stable
or insiders
as browserVersion
.
TypeScript Setup
In your tsconfig.json
make sure to add wdio-vscode-service
to your list of types:
{
"compilerOptions": {
"types": [
"node",
"webdriverio/async",
"@wdio/mocha-framework",
"expect-webdriverio",
"wdio-vscode-service"
],
"target": "es2019",
"moduleResolution": "node",
"esModuleInterop": true
}
}