This is the puppeteer-chromium browser provider plugin for TestCafe.
It downloads Chromium with a fixed revision to your local node_modules folder, which is used by TestCafe if you use
the browser puppeteer-chromium
in you cli or api command.
This provider starts the browser non-headless and maximized by default. If you want to to run this browser headless you can overwrite the default launch options by using a chromium configuration file (see further down).
To use the puppeteer-chromium provider in your project, run:
npm install --save-dev testcafe-browser-provider-puppeteer-chromium
This will install the latest version of this provider, combined with the latest version of puppeteer.
If you want to install a specific version of this provider to run TestCafe tests against a specific chromium version, you can install the provider using a npm tag.
For example, in order to test against the chromium revision that is compatible with Chrome 77 with this provider, use chrome-77
npm tag:
npm install --save-dev testcafe-browser-provider-puppeteer-chromium@chrome-77
version | Tag | Chrome version | Chromium revision |
---|---|---|---|
1.1.0 | chrome-78 | 78 | r686378 |
1.0.5 | chrome-77 | 77 | r674921 |
info: not all chrome tags are supported at this moment
Puppeteer is installed with this provider. You don't need to install puppeteer yourself within your project.
When you run tests from the command line, use the provider name when specifying browsers:
testcafe puppeteer-chromium 'path/to/test/file.js'
When you use API, pass the provider name to the browsers()
method:
testCafe
.createRunner()
.src('path/to/test/file.js')
.browsers('puppeteer-chromium')
.run();
You can pass a chromium configuration file to the provider to override the default browser launch options.
This configuration file can be named however you would like, but my suggestion would be .chromium.js
.
The configuration file can be placed in the root folder or subfolder of your project.
An example chromium configuration file, within the chromium
object you can use all
Puppeteer launch options.
module.exports.config = {
appMode: false,
chromium: {
args: ['--disable-infobars'],
defaultViewport: null,
headless: true,
timeout: 30000,
},
disableInfoBars: false,
};
The default launch options are:
{
args: ['--disable-infobars'],
defaultViewport: null,
headless: false,
ignoreDefaultArgs: [],
timeout: 30000,
}
The new configuration options outside the chromium object are: appMode
and disableInfoBars
.
If you set appMode
to true
, the Chromium will be started with the --app
argument, which is Chromium without menu or address bar.
This application mode cannot be used together with headless mode, so headless is set to false
when this option is set.
If you set disableInfoBars
to true
, then the infobar 'chrome is controlled by automated software' will not be shown.
Since v76, the argument --disable-infobars
does not work anymore, but there is a workaround by disabling the default
argument --enable-automation
. Disabled this toggle has more consequences, see the following link:
.
Using the commandline, you pass the configuration file like this. The file path will be resolved by the browser provider using the resolve method from the node path module.
testcafe puppeteer-chromium:.chromium.js 'path/to/test/file.js'
Or when using the API:
testCafe
.createRunner()
.src('path/to/test/file.js')
.browsers('puppeteer-chromium:.chromium.js')
.run();
You can use helper functions from the provider in your test files. Use ES6 import statement to access them.
import { hoverElement } from 'testcafe-browser-provider-puppeteer-chromium';
Hover the mousecursor over an element, providing a css selector string.
async function hoverElement (selector)
Parameter | Type | Description |
---|---|---|
selector | String | A CSS Selector to search for element to hover. If there are multiple elements satisfying the selector, the first will be hovered. |
Stefan Schenk
Version | Description |
---|---|
1.0.5 | Added the possibility to launch multiple browsers to enable support for concurrent test execution |