Version: Next

Electron

Playwright has experimental support for Electron automation. You can access electron namespace via:

const { _electron } = require('playwright');

An example of the Electron automation script would be:

const { _electron: electron } = require('playwright');
(async () => {
// Launch Electron app.
const electronApp = await electron.launch({ args: ['main.js'] });
// Evaluation expression in the Electron context.
const appPath = await electronApp.evaluate(async (electron) => {
// This runs in the main Electron process, |electron| parameter
// here is always the result of the require('electron') in the main
// app script.
return electron.getAppPath();
});
// Get the first window that the app opens, wait if necessary.
const window = await electronApp.firstWindow();
// Print the title.
console.log(await window.title());
// Capture a screenshot.
await window.screenshot({ path: 'intro.png' });
// Direct Electron console to Node terminal.
window.on('console', console.log);
// Click button.
await window.click('text=Click me');
})();

Note that since you don't need Playwright to install web browsers when testing Electron, you can omit browser download via setting the following environment variable when installing Playwright:

$ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright

electron.launch([options])#

  • options <Object>
    • args <Array<string>> Additional arguments to pass to the application when launching. You typically pass the main script name here.
    • cwd <string> Current working directory to launch application from.
    • env <Object<string, string>> Specifies environment variables that will be visible to Electron. Defaults to process.env.
    • executablePath <string> Launches given Electron application. If not specified, launches the default Electron executable installed in this package, located at node_modules/.bin/electron.
  • returns: <Promise<ElectronApplication>>

Launches electron application specified with the executablePath.