diff --git a/src/cli/cli.ts b/src/cli/cli.ts index cab82d35d0..53ac4a443c 100755 --- a/src/cli/cli.ts +++ b/src/cli/cli.ts @@ -22,7 +22,7 @@ import path from 'path'; import program from 'commander'; import os from 'os'; import fs from 'fs'; -import { runServer, printApiJson, installBrowsers } from './driver'; +import { runServer, printApiJson, launchBrowserServer, installBrowsers } from './driver'; import { showTraceViewer } from '../server/trace/viewer/traceViewer'; import * as playwright from '../..'; import { BrowserContext } from '../client/browserContext'; @@ -160,6 +160,8 @@ if (process.argv[2] === 'run-driver') runServer(); else if (process.argv[2] === 'print-api-json') printApiJson(); +else if (process.argv[2] === 'launch-server') + launchBrowserServer(process.argv[3], process.argv[4]); else program.parse(process.argv); diff --git a/src/cli/driver.ts b/src/cli/driver.ts index c3d051dd77..55b6d44cbe 100644 --- a/src/cli/driver.ts +++ b/src/cli/driver.ts @@ -18,6 +18,9 @@ import fs from 'fs'; import path from 'path'; +import * as playwright from '../..'; +import { BrowserType } from '../client/browserType'; +import { LaunchServerOptions } from '../client/types'; import { DispatcherConnection } from '../dispatchers/dispatcher'; import { PlaywrightDispatcher } from '../dispatchers/playwrightDispatcher'; import { installBrowsersWithProgressBar } from '../install/installer'; @@ -53,6 +56,15 @@ export function runServer() { new PlaywrightDispatcher(dispatcherConnection.rootDispatcher(), playwright); } +export async function launchBrowserServer(browserName: string, configFile?: string) { + let options: LaunchServerOptions = {}; + if (configFile) + options = JSON.parse(fs.readFileSync(configFile).toString()); + const browserType = (playwright as any)[browserName] as BrowserType; + const server = await browserType.launchServer(options); + console.log(server.wsEndpoint()); +} + export async function installBrowsers(browserNames?: BrowserName[]) { await installBrowsersWithProgressBar(browserNames); }