How to use writeDockerVersion method in Playwright Internal

Best JavaScript code snippet using playwright-internal

cli.ts

Source:cli.ts Github

copy

Full Screen

...46 .description('mark docker image')47 .allowUnknownOption(true)48 .action(function(dockerImageNameTemplate) {49 assert(dockerImageNameTemplate, 'dockerImageNameTemplate is required');50 writeDockerVersion(dockerImageNameTemplate).catch(logErrorAndExit);51 });52commandWithOpenOptions('open [url]', 'open page in browser specified via -b, --browser', [])53 .action(function(url, options) {54 open(options, url, language()).catch(logErrorAndExit);55 })56 .addHelpText('afterAll', `57Examples:58 $ open $ open -b webkit https://example.com`);59commandWithOpenOptions('codegen [url]', 'open page and generate code for user actions',60 [61 ['-o, --output <file name>', 'saves the generated script to a file'],62 ['--target <language>', `language to generate, one of javascript, test, python, python-async, csharp`, language()],63 ]).action(function(url, options) {64 codegen(options, url, options.target, options.output).catch(logErrorAndExit);...

Full Screen

Full Screen

cli.js

Source:cli.js Github

copy

Full Screen

1#!/usr/bin/env node2/**3 * Copyright (c) Microsoft Corporation.4 *5 * Licensed under the Apache License, Version 2.0 (the "License");6 * you may not use this file except in compliance with the License.7 * You may obtain a copy of the License at8 *9 * http://www.apache.org/licenses/LICENSE-2.010 *11 * Unless required by applicable law or agreed to in writing, software12 * distributed under the License is distributed on an "AS IS" BASIS,13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.14 * See the License for the specific language governing permissions and15 * limitations under the License.16 */17/* eslint-disable no-console */18"use strict";19var _fs = _interopRequireDefault(require("fs"));20var _os = _interopRequireDefault(require("os"));21var _path = _interopRequireDefault(require("path"));22var _commander = require("commander");23var _driver = require("./driver");24var _traceViewer = require("../server/trace/viewer/traceViewer");25var playwright = _interopRequireWildcard(require("../.."));26var _child_process = require("child_process");27var _userAgent = require("../common/userAgent");28var _utils = require("../utils");29var _spawnAsync = require("../utils/spawnAsync");30var _gridAgent = require("../grid/gridAgent");31var _gridServer = require("../grid/gridServer");32var _server = require("../server");33function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }34function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }35function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }36const packageJSON = require('../../package.json');37_commander.program.version('Version ' + (process.env.PW_CLI_DISPLAY_VERSION || packageJSON.version)).name(buildBasePlaywrightCLICommand(process.env.PW_LANG_NAME));38_commander.program.command('mark-docker-image > [args...]', {39 hidden: true40}).description('mark docker image').allowUnknownOption(true).action(function (dockerImageNameTemplate) {41 (0, _server.writeDockerVersion)(dockerImageNameTemplate);42});43commandWithOpenOptions('open [url]', 'open page in browser specified via -b, --browser', []).action(function (url, options) {44 open(options, url, language()).catch(logErrorAndExit);45}).addHelpText('afterAll', `46Examples:47 $ open $ open -b webkit https://example.com`);48commandWithOpenOptions('codegen [url]', 'open page and generate code for user actions', [['-o, --output <file name>', 'saves the generated script to a file'], ['--target <language>', `language to generate, one of javascript, test, python, python-async, csharp`, language()]]).action(function (url, options) {49 codegen(options, url, options.target, options.output).catch(logErrorAndExit);50}).addHelpText('afterAll', `51Examples:52 $ codegen53 $ codegen --target=python54 $ codegen -b webkit https://example.com`);55_commander.program.command('debug <app> [args...]', {56 hidden: true57}).description('run command in debug mode: disable timeout, open inspector').allowUnknownOption(true).action(function (app, options) {58 (0, _child_process.spawn)(app, options, {59 env: { ...process.env,60 PWDEBUG: '1'61 },62 stdio: 'inherit'63 });64}).addHelpText('afterAll', `65Examples:66 $ debug node test.js67 $ debug npm run test`);68function suggestedBrowsersToInstall() {69 return _server.registry.executables().filter(e => e.installType !== 'none' && e.type !== 'tool').map(e => e.name).join(', ');70}71function checkBrowsersToInstall(args) {72 const faultyArguments = [];73 const executables = [];74 for (const arg of args) {75 const executable = _server.registry.findExecutable(arg);76 if (!executable || executable.installType === 'none') faultyArguments.push(arg);else executables.push(executable);77 }78 if (faultyArguments.length) {79 console.log(`Invalid installation targets: ${faultyArguments.map(name => `'${name}'`).join(', ')}. Expecting one of: ${suggestedBrowsersToInstall()}`);80 process.exit(1);81 }82 return executables;83}84_commander.program.command('install [browser...]').description('ensure browsers necessary for this version of Playwright are installed').option('--with-deps', 'install system dependencies for browsers').option('--force', 'force reinstall of stable browser channels').action(async function (args, options) {85 const isLikelyNpxGlobal = process.argv.length >= 2 && process.argv[1].includes('_npx');86 if (isLikelyNpxGlobal) {87 console.error((0, _utils.wrapInASCIIBox)([`WARNING: It looks like you are running 'npx playwright install' without first`, `installing your project's dependencies.`, ``, `To avoid unexpected behavior, please install your dependencies first, and`, `then run Playwright's install command:`, ``, ` npm install`, ` npx playwright install`, ``, `If your project does not yet depend on Playwright, first install the`, `applicable npm package (most commonly @playwright/test), and`, `then run Playwright's install command to download the browsers:`, ``, ` npm install @playwright/test`, ` npx playwright install`, ``].join('\n'), 1));88 }89 try {90 if (!args.length) {91 const executables = _server.registry.defaultExecutables();92 if (options.withDeps) await _server.registry.installDeps(executables, false);93 await _server.registry.install(executables, false94 /* forceReinstall */95 );96 } else {97 const installDockerImage = args.some(arg => arg === 'docker-image');98 args = args.filter(arg => arg !== 'docker-image');99 if (installDockerImage) {100 const imageName = `mcr.microsoft.com/playwright:v${(0, _userAgent.getPlaywrightVersion)()}-focal`;101 const {102 code103 } = await (0, _spawnAsync.spawnAsync)('docker', ['pull', imageName], {104 stdio: 'inherit'105 });106 if (code !== 0) {107 console.log('Failed to pull docker image');108 process.exit(1);109 }110 }111 const executables = checkBrowsersToInstall(args);112 if (options.withDeps) await _server.registry.installDeps(executables, false);113 await _server.registry.install(executables, !!options.force114 /* forceReinstall */115 );116 }117 } catch (e) {118 console.log(`Failed to install browsers\n${e}`);119 process.exit(1);120 }121}).addHelpText('afterAll', `122Examples:123 - $ install124 Install default browsers.125 - $ install chrome firefox126 Install custom browsers, supports ${suggestedBrowsersToInstall()}.`);127_commander.program.command('install-deps [browser...]').description('install dependencies necessary to run browsers (will ask for sudo permissions)').option('--dry-run', 'Do not execute installation commands, only print them').action(async function (args, options) {128 try {129 if (!args.length) await _server.registry.installDeps(_server.registry.defaultExecutables(), !!options.dryRun);else await _server.registry.installDeps(checkBrowsersToInstall(args), !!options.dryRun);130 } catch (e) {131 console.log(`Failed to install browser dependencies\n${e}`);132 process.exit(1);133 }134}).addHelpText('afterAll', `135Examples:136 - $ install-deps137 Install dependencies for default browsers.138 - $ install-deps chrome firefox139 Install dependencies for specific browsers, supports ${suggestedBrowsersToInstall()}.`);140const browsers = [{141 alias: 'cr',142 name: 'Chromium',143 type: 'chromium'144}, {145 alias: 'ff',146 name: 'Firefox',147 type: 'firefox'148}, {149 alias: 'wk',150 name: 'WebKit',151 type: 'webkit'152}];153for (const {154 alias,155 name,156 type157} of browsers) {158 commandWithOpenOptions(`${alias} [url]`, `open page in ${name}`, []).action(function (url, options) {159 open({ ...options,160 browser: type161 }, url, options.target).catch(logErrorAndExit);162 }).addHelpText('afterAll', `163Examples:164 $ ${alias} https://example.com`);165}166commandWithOpenOptions('screenshot <url> <filename>', 'capture a page screenshot', [['--wait-for-selector <selector>', 'wait for selector before taking a screenshot'], ['--wait-for-timeout <timeout>', 'wait for timeout in milliseconds before taking a screenshot'], ['--full-page', 'whether to take a full page screenshot (entire scrollable area)']]).action(function (url, filename, command) {167 screenshot(command, command, url, filename).catch(logErrorAndExit);168}).addHelpText('afterAll', `169Examples:170 $ screenshot -b webkit https://example.com example.png`);171commandWithOpenOptions('pdf <url> <filename>', 'save page as pdf', [['--wait-for-selector <selector>', 'wait for given selector before saving as pdf'], ['--wait-for-timeout <timeout>', 'wait for given timeout in milliseconds before saving as pdf']]).action(function (url, filename, options) {172 pdf(options, options, url, filename).catch(logErrorAndExit);173}).addHelpText('afterAll', `174Examples:175 $ pdf https://example.com example.pdf`);176_commander.program.command('experimental-grid-server', {177 hidden: true178}).option('--port <port>', 'grid port; defaults to 3333').option('--address <address>', 'address of the server').option('--agent-factory <factory>', 'path to grid agent factory or npm package').option('--auth-token <authToken>', 'optional authentication token').action(function (options) {179 launchGridServer(options.agentFactory, options.port || 3333, options.address, options.authToken);180});181_commander.program.command('experimental-grid-agent', {182 hidden: true183}).requiredOption('--agent-id <agentId>', 'agent ID').requiredOption('--grid-url <gridURL>', 'grid URL').action(function (options) {184 (0, _gridAgent.launchGridAgent)(options.agentId, options.gridUrl);185});186_commander.program.command('run-driver', {187 hidden: true188}).action(function (options) {189 (0, _driver.runDriver)();190});191_commander.program.command('run-server', {192 hidden: true193}).option('--port <port>', 'Server port').option('--path <path>', 'Endpoint Path', '/').option('--max-clients <maxClients>', 'Maximum clients').option('--no-socks-proxy', 'Disable Socks Proxy').action(function (options) {194 (0, _driver.runServer)(options.port ? +options.port : undefined, options.path, options.maxClients ? +options.maxClients : Infinity, options.socksProxy).catch(logErrorAndExit);195});196_commander.program.command('print-api-json', {197 hidden: true198}).action(function (options) {199 (0, _driver.printApiJson)();200});201_commander.program.command('launch-server', {202 hidden: true203}).requiredOption('--browser <browserName>', 'Browser name, one of "chromium", "firefox" or "webkit"').option('--config <path-to-config-file>', 'JSON file with launchServer options').action(function (options) {204 (0, _driver.launchBrowserServer)(options.browser, options.config);205});206_commander.program.command('show-trace [trace...]').option('-b, --browser <browserType>', 'browser to use, one of cr, chromium, ff, firefox, wk, webkit', 'chromium').description('Show trace viewer').action(function (traces, options) {207 if (options.browser === 'cr') options.browser = 'chromium';208 if (options.browser === 'ff') options.browser = 'firefox';209 if (options.browser === 'wk') options.browser = 'webkit';210 (0, _traceViewer.showTraceViewer)(traces, options.browser, false, 9322).catch(logErrorAndExit);211}).addHelpText('afterAll', `212Examples:213 $ show-trace https://example.com/trace.zip`);214if (!process.env.PW_LANG_NAME) {215 let playwrightTestPackagePath = null;216 try {217 playwrightTestPackagePath = require.resolve('@playwright/test/lib/cli', {218 paths: [__dirname, process.cwd()]219 });220 } catch {}221 if (playwrightTestPackagePath) {222 require(playwrightTestPackagePath).addTestCommand(_commander.program);223 require(playwrightTestPackagePath).addShowReportCommand(_commander.program);224 require(playwrightTestPackagePath).addListFilesCommand(_commander.program);225 } else {226 {227 const command = _commander.program.command('test').allowUnknownOption(true);228 command.description('Run tests with Playwright Test. Available in @playwright/test package.');229 command.action(async () => {230 console.error('Please install @playwright/test package to use Playwright Test.');231 console.error(' npm install -D @playwright/test');232 process.exit(1);233 });234 }235 {236 const command = _commander.program.command('show-report').allowUnknownOption(true);237 command.description('Show Playwright Test HTML report. Available in @playwright/test package.');238 command.action(async () => {239 console.error('Please install @playwright/test package to use Playwright Test.');240 console.error(' npm install -D @playwright/test');241 process.exit(1);242 });243 }244 }245}246_commander.program.parse(process.argv);247async function launchContext(options, headless, executablePath) {248 validateOptions(options);249 const browserType = lookupBrowserType(options);250 const launchOptions = {251 headless,252 executablePath253 };254 if (options.channel) launchOptions.channel = options.channel;255 const contextOptions = // Copy the device descriptor since we have to compare and modify the options.256 options.device ? { ...playwright.devices[options.device]257 } : {}; // In headful mode, use host device scale factor for things to look nice.258 // In headless, keep things the way it works in Playwright by default.259 // Assume high-dpi on MacOS. TODO: this is not perfect.260 if (!headless) contextOptions.deviceScaleFactor = _os.default.platform() === 'darwin' ? 2 : 1; // Work around the WebKit GTK scrolling issue.261 if (browserType.name() === 'webkit' && process.platform === 'linux') {262 delete contextOptions.hasTouch;263 delete contextOptions.isMobile;264 }265 if (contextOptions.isMobile && browserType.name() === 'firefox') contextOptions.isMobile = undefined; // Proxy266 if (options.proxyServer) {267 launchOptions.proxy = {268 server: options.proxyServer269 };270 if (options.proxyBypass) launchOptions.proxy.bypass = options.proxyBypass;271 }272 const browser = await browserType.launch(launchOptions); // Viewport size273 if (options.viewportSize) {274 try {275 const [width, height] = options.viewportSize.split(',').map(n => parseInt(n, 10));276 contextOptions.viewport = {277 width,278 height279 };280 } catch (e) {281 console.log('Invalid window size format: use "width, height", for example --window-size=800,600');282 process.exit(0);283 }284 } // Geolocation285 if (options.geolocation) {286 try {287 const [latitude, longitude] = options.geolocation.split(',').map(n => parseFloat(n.trim()));288 contextOptions.geolocation = {289 latitude,290 longitude291 };292 } catch (e) {293 console.log('Invalid geolocation format: user lat, long, for example --geolocation="37.819722,-122.478611"');294 process.exit(0);295 }296 contextOptions.permissions = ['geolocation'];297 } // User agent298 if (options.userAgent) contextOptions.userAgent = options.userAgent; // Lang299 if (options.lang) contextOptions.locale = options.lang; // Color scheme300 if (options.colorScheme) contextOptions.colorScheme = options.colorScheme; // Timezone301 if (options.timezone) contextOptions.timezoneId = options.timezone; // Storage302 if (options.loadStorage) contextOptions.storageState = options.loadStorage;303 if (options.ignoreHttpsErrors) contextOptions.ignoreHTTPSErrors = true; // Close app when the last window closes.304 const context = await browser.newContext(contextOptions);305 let closingBrowser = false;306 async function closeBrowser() {307 // We can come here multiple times. For example, saving storage creates308 // a temporary page and we call closeBrowser again when that page closes.309 if (closingBrowser) return;310 closingBrowser = true;311 if (options.saveTrace) await context.tracing.stop({312 path: options.saveTrace313 });314 if (options.saveStorage) await context.storageState({315 path: options.saveStorage316 }).catch(e => null);317 await browser.close();318 }319 context.on('page', page => {320 page.on('dialog', () => {}); // Prevent dialogs from being automatically dismissed.321 page.on('close', () => {322 const hasPage = browser.contexts().some(context => context.pages().length > 0);323 if (hasPage) return; // Avoid the error when the last page is closed because the browser has been closed.324 closeBrowser().catch(e => null);325 });326 });327 if (options.timeout) {328 context.setDefaultTimeout(parseInt(options.timeout, 10));329 context.setDefaultNavigationTimeout(parseInt(options.timeout, 10));330 }331 if (options.saveTrace) await context.tracing.start({332 screenshots: true,333 snapshots: true334 }); // Omit options that we add automatically for presentation purpose.335 delete launchOptions.headless;336 delete launchOptions.executablePath;337 delete contextOptions.deviceScaleFactor;338 return {339 browser,340 browserName: browserType.name(),341 context,342 contextOptions,343 launchOptions344 };345}346async function openPage(context, url) {347 const page = await context.newPage();348 if (url) {349 if (_fs.default.existsSync(url)) url = 'file://' + _path.default.resolve(url);else if (!url.startsWith('http') && !url.startsWith('file://') && !url.startsWith('about:') && !url.startsWith('data:')) url = 'http://' + url;350 await page.goto(url);351 }352 return page;353}354async function open(options, url, language) {355 const {356 context,357 launchOptions,358 contextOptions359 } = await launchContext(options, !!process.env.PWTEST_CLI_HEADLESS, process.env.PWTEST_CLI_EXECUTABLE_PATH);360 await context._enableRecorder({361 language,362 launchOptions,363 contextOptions,364 device: options.device,365 saveStorage: options.saveStorage366 });367 await openPage(context, url);368 if (process.env.PWTEST_CLI_EXIT) await Promise.all(context.pages().map(p => p.close()));369}370async function codegen(options, url, language, outputFile) {371 const {372 context,373 launchOptions,374 contextOptions375 } = await launchContext(options, !!process.env.PWTEST_CLI_HEADLESS, process.env.PWTEST_CLI_EXECUTABLE_PATH);376 await context._enableRecorder({377 language,378 launchOptions,379 contextOptions,380 device: options.device,381 saveStorage: options.saveStorage,382 startRecording: true,383 outputFile: outputFile ? _path.default.resolve(outputFile) : undefined384 });385 await openPage(context, url);386 if (process.env.PWTEST_CLI_EXIT) await Promise.all(context.pages().map(p => p.close()));387}388async function waitForPage(page, captureOptions) {389 if (captureOptions.waitForSelector) {390 console.log(`Waiting for selector ${captureOptions.waitForSelector}...`);391 await page.waitForSelector(captureOptions.waitForSelector);392 }393 if (captureOptions.waitForTimeout) {394 console.log(`Waiting for timeout ${captureOptions.waitForTimeout}...`);395 await page.waitForTimeout(parseInt(captureOptions.waitForTimeout, 10));396 }397}398async function screenshot(options, captureOptions, url, path) {399 const {400 browser,401 context402 } = await launchContext(options, true);403 console.log('Navigating to ' + url);404 const page = await openPage(context, url);405 await waitForPage(page, captureOptions);406 console.log('Capturing screenshot into ' + path);407 await page.screenshot({408 path,409 fullPage: !!captureOptions.fullPage410 });411 await browser.close();412}413async function pdf(options, captureOptions, url, path) {414 if (options.browser !== 'chromium') {415 console.error('PDF creation is only working with Chromium');416 process.exit(1);417 }418 const {419 browser,420 context421 } = await launchContext({ ...options,422 browser: 'chromium'423 }, true);424 console.log('Navigating to ' + url);425 const page = await openPage(context, url);426 await waitForPage(page, captureOptions);427 console.log('Saving as pdf into ' + path);428 await page.pdf({429 path430 });431 await browser.close();432}433function lookupBrowserType(options) {434 let name = options.browser;435 if (options.device) {436 const device = playwright.devices[options.device];437 name = device.defaultBrowserType;438 }439 let browserType;440 switch (name) {441 case 'chromium':442 browserType = playwright.chromium;443 break;444 case 'webkit':445 browserType = playwright.webkit;446 break;447 case 'firefox':448 browserType = playwright.firefox;449 break;450 case 'cr':451 browserType = playwright.chromium;452 break;453 case 'wk':454 browserType = playwright.webkit;455 break;456 case 'ff':457 browserType = playwright.firefox;458 break;459 }460 if (browserType) return browserType;461 _commander.program.help();462}463function validateOptions(options) {464 if (options.device && !(options.device in playwright.devices)) {465 console.log(`Device descriptor not found: '${options.device}', available devices are:`);466 for (const name in playwright.devices) console.log(` "${name}"`);467 process.exit(0);468 }469 if (options.colorScheme && !['light', 'dark'].includes(options.colorScheme)) {470 console.log('Invalid color scheme, should be one of "light", "dark"');471 process.exit(0);472 }473}474function logErrorAndExit(e) {475 console.error(e);476 process.exit(1);477}478function language() {479 return process.env.PW_LANG_NAME || 'test';480}481function commandWithOpenOptions(command, description, options) {482 let result = _commander.program.command(command).description(description);483 for (const option of options) result = result.option(option[0], ...option.slice(1));484 return result.option('-b, --browser <browserType>', 'browser to use, one of cr, chromium, ff, firefox, wk, webkit', 'chromium').option('--channel <channel>', 'Chromium distribution channel, "chrome", "chrome-beta", "msedge-dev", etc').option('--color-scheme <scheme>', 'emulate preferred color scheme, "light" or "dark"').option('--device <deviceName>', 'emulate device, for example "iPhone 11"').option('--geolocation <coordinates>', 'specify geolocation coordinates, for example "37.819722,-122.478611"').option('--ignore-https-errors', 'ignore https errors').option('--load-storage <filename>', 'load context storage state from the file, previously saved with --save-storage').option('--lang <language>', 'specify language / locale, for example "en-GB"').option('--proxy-server <proxy>', 'specify proxy server, for example "http://myproxy:3128" or "socks5://myproxy:8080"').option('--proxy-bypass <bypass>', 'comma-separated domains to bypass proxy, for example ".com,chromium.org,.domain.com"').option('--save-storage <filename>', 'save context storage state at the end, for later use with --load-storage').option('--save-trace <filename>', 'record a trace for the session and save it to a file').option('--timezone <time zone>', 'time zone to emulate, for example "Europe/Rome"').option('--timeout <timeout>', 'timeout for Playwright actions in milliseconds', '10000').option('--user-agent <ua string>', 'specify user agent string').option('--viewport-size <size>', 'specify browser viewport size in pixels, for example "1280, 720"');485}486async function launchGridServer(factoryPathOrPackageName, port, address, authToken) {487 if (!factoryPathOrPackageName) factoryPathOrPackageName = _path.default.join('..', 'grid', 'simpleGridFactory');488 let factory;489 try {490 factory = require(_path.default.resolve(factoryPathOrPackageName));491 } catch (e) {492 factory = require(factoryPathOrPackageName);493 }494 if (factory && typeof factory === 'object' && 'default' in factory) factory = factory['default'];495 if (!factory || !factory.launch || typeof factory.launch !== 'function') throw new Error('factory does not export `launch` method');496 factory.name = factory.name || factoryPathOrPackageName;497 const gridServer = new _gridServer.GridServer(factory, authToken, address);498 await gridServer.start(port);499 console.log('Grid server is running at ' + gridServer.urlPrefix());500}501function buildBasePlaywrightCLICommand(cliTargetLang) {502 switch (cliTargetLang) {503 case 'python':504 return `playwright`;505 case 'java':506 return `mvn exec:java -e -Dexec.mainClass=com.microsoft.playwright.CLI -Dexec.args="...options.."`;507 case 'csharp':508 return `pwsh bin\\Debug\\netX\\playwright.ps1`;509 default:510 return `npx playwright`;511 }...

Full Screen

Full Screen

dependencies.js

Source:dependencies.js Github

copy

Full Screen

...39 */40const BIN_DIRECTORY = _path.default.join(__dirname, '..', '..', '..', 'bin');41const packageJSON = require('../../../package.json');42const dockerVersionFilePath = '/ms-playwright/.docker-info';43async function writeDockerVersion(dockerImageNameTemplate) {44 await _fs.default.promises.mkdir(_path.default.dirname(dockerVersionFilePath), {45 recursive: true46 });47 await _fs.default.promises.writeFile(dockerVersionFilePath, JSON.stringify({48 driverVersion: packageJSON.version,49 dockerImageName: dockerImageNameTemplate.replace('%version%', packageJSON.version)50 }, null, 2), 'utf8'); // Make sure version file is globally accessible.51 await _fs.default.promises.chmod(dockerVersionFilePath, 0o777);52}53async function readDockerVersion() {54 return await _fs.default.promises.readFile(dockerVersionFilePath, 'utf8').then(text => JSON.parse(text)).catch(e => null);55}56const checkExecutable = filePath => _fs.default.promises.access(filePath, _fs.default.constants.X_OK).then(() => true).catch(e => false);57function isSupportedWindowsVersion() {...

Full Screen

Full Screen

index.js

Source:index.js Github

copy

Full Screen

1"use strict";2Object.defineProperty(exports, "__esModule", {3 value: true4});5Object.defineProperty(exports, "DispatcherConnection", {6 enumerable: true,7 get: function () {8 return _dispatcher.DispatcherConnection;9 }10});11Object.defineProperty(exports, "PlaywrightDispatcher", {12 enumerable: true,13 get: function () {14 return _playwrightDispatcher.PlaywrightDispatcher;15 }16});17Object.defineProperty(exports, "Registry", {18 enumerable: true,19 get: function () {20 return _registry.Registry;21 }22});23Object.defineProperty(exports, "Root", {24 enumerable: true,25 get: function () {26 return _dispatcher.Root;27 }28});29Object.defineProperty(exports, "createPlaywright", {30 enumerable: true,31 get: function () {32 return _playwright.createPlaywright;33 }34});35Object.defineProperty(exports, "installBrowsersForNpmInstall", {36 enumerable: true,37 get: function () {38 return _registry.installBrowsersForNpmInstall;39 }40});41Object.defineProperty(exports, "installDefaultBrowsersForNpmInstall", {42 enumerable: true,43 get: function () {44 return _registry.installDefaultBrowsersForNpmInstall;45 }46});47Object.defineProperty(exports, "registry", {48 enumerable: true,49 get: function () {50 return _registry.registry;51 }52});53Object.defineProperty(exports, "registryDirectory", {54 enumerable: true,55 get: function () {56 return _registry.registryDirectory;57 }58});59Object.defineProperty(exports, "writeDockerVersion", {60 enumerable: true,61 get: function () {62 return _registry.writeDockerVersion;63 }64});65var _registry = require("./registry");66var _dispatcher = require("./dispatchers/dispatcher");67var _playwrightDispatcher = require("./dispatchers/playwrightDispatcher");...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { writeDockerVersion } = require('playwright/lib/utils/docker');2const { writeDockerVersion } = require('playwright/lib/utils/docker');3 throw err;4 at Function.Module._resolveFilename (node:internal/modules/cjs/loader:941:15)5 at Function.Module._load (node:internal/modules/cjs/loader:774:27)6 at Module.require (node:internal/modules/cjs/loader:1005:19)7 at require (node:internal/modules/cjs/helpers:93:18)8 at Object.<anonymous> (/Users/xxx/xxx/test.js:1:21)9 at Module._compile (node:internal/modules/cjs/loader:1108:14)10 at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)11 at Module.load (node:internal/modules/cjs/loader:973:32)12 at Function.Module._load (node:internal/modules/cjs/loader:813:14)13 at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12) {14}

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2const { writeDockerVersion } = require('playwright/lib/server/browserType');3(async () => {4 await writeDockerVersion(playwright.chromium, '1.2.3');5 await writeDockerVersion(playwright.firefox, '4.5.6');6 await writeDockerVersion(playwright.webkit, '7.8.9');7})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2const { writeDockerVersion } = require('playwright/lib/server/docker');3writeDockerVersion(playwright.chromium, '1.2.3');4writeDockerVersion(playwright.firefox, '1.2.3');5writeDockerVersion(playwright.webkit, '1.2.3');6### `writeDockerVersion(browser: BrowserType, version: string)`

Full Screen

Using AI Code Generation

copy

Full Screen

1const { writeDockerVersion } = require('playwright/lib/utils/registry');2writeDockerVersion('1.1.1');3const { writeDockerVersion } = require('playwright/lib/utils/registry');4writeDockerVersion('1.1.1');5const { writeDockerVersion } = require('playwright/lib/utils/registry');6writeDockerVersion('1.1.1');7const { writeDockerVersion } = require('playwright/lib/utils/registry');8writeDockerVersion('1.1.1');9const { writeDockerVersion } = require('playwright/lib/utils/registry');10writeDockerVersion('1.1.1');11const { writeDockerVersion } = require('playwright/lib/utils/registry');12writeDockerVersion('1.1.1');13const { writeDockerVersion } = require('playwright/lib/utils/registry');14writeDockerVersion('1.1.1');15const { writeDockerVersion } = require('playwright/lib/utils/registry');16writeDockerVersion('1.1.1');17const { writeDockerVersion } = require('playwright/lib/utils/registry');18writeDockerVersion('1.1.1');19const { writeDockerVersion } = require('playwright/lib/utils/registry');20writeDockerVersion('1.1.1');21const { writeDockerVersion }

Full Screen

Using AI Code Generation

copy

Full Screen

1const { writeDockerVersion } = require('playwright-core/lib/server/playwright');2writeDockerVersion('1.0.0');3const { writeDockerVersion } = require('playwright-core/lib/server/playwright');4writeDockerVersion('1.0.0');5const { writeDockerVersion } = require('playwright-core/lib/server/playwright');6writeDockerVersion('1.0.0');7const { writeDockerVersion } = require('playwright-core/lib/server/playwright');8writeDockerVersion('1.0.0');9const { writeDockerVersion } = require('playwright-core/lib/server/playwright');10writeDockerVersion('1.0.0');11const { writeDockerVersion } = require('playwright-core/lib/server/playwright');12writeDockerVersion('1.0.0');13const { writeDockerVersion } = require('playwright-core/lib/server/playwright');14writeDockerVersion('1.0.0');15const { writeDockerVersion } = require('playwright-core/lib/server/playwright');16writeDockerVersion('1.0.0');17const { writeDockerVersion } = require('playwright-core/lib/server/playwright');18writeDockerVersion('1.0.0');19const { writeDockerVersion } = require('playwright-core/lib/server/playwright');20writeDockerVersion('1.0.0');21const { writeDockerVersion } = require('playwright-core/lib/server/playwright');22writeDockerVersion('1.0.0');23const { writeDockerVersion } = require('playwright-core

Full Screen

Using AI Code Generation

copy

Full Screen

1const { Internal } = require('playwright');2await Internal.writeDockerVersion('1.12.3');3const { Internal } = require('playwright');4await Internal.writeDockerVersion('1.12.3');5const { Internal } = require('playwright');6await Internal.writeDockerVersion('1.12.3');7const { Internal } = require('playwright');8await Internal.writeDockerVersion('1.12.3');9const { Internal } = require('playwright');10await Internal.writeDockerVersion('1.12.3');11const { Internal } = require('playwright');12await Internal.writeDockerVersion('1.12.3');13const { Internal } = require('playwright');14await Internal.writeDockerVersion('1.12.3');15const { Internal } = require('playwright');16await Internal.writeDockerVersion('1.12.3');17const { Internal } = require('playwright');18await Internal.writeDockerVersion('1.12.3');19const { Internal } = require('playwright');20await Internal.writeDockerVersion('1.12.3');21const { Internal } = require('playwright');22await Internal.writeDockerVersion('1.12.3');23const { Internal } = require('playwright');

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2const { writeDockerVersion } = require('playwright/lib/utils/registry');3writeDockerVersion(playwright, 'chromium', '1.2.3');4const playwright = require('playwright');5const { writeDockerVersion } = require('playwright/lib/utils/registry');6writeDockerVersion(playwright, 'chromium', '1.2.3');7const playwright = require('playwright');8const { writeDockerVersion } = require('playwright/lib/utils/registry');9writeDockerVersion(playwright, 'chromium', '1.2.3');10const playwright = require('playwright');11const { writeDockerVersion } = require('playwright/lib/utils/registry');12writeDockerVersion(playwright, 'chromium', '1.2.3');13const playwright = require('playwright');14const { writeDockerVersion } = require('playwright/lib/utils/registry');15writeDockerVersion(playwright, 'chromium', '1.2.3');16const playwright = require('playwright');17const { writeDockerVersion } = require('playwright/lib/utils/registry');18writeDockerVersion(playwright, 'chromium', '1.2.3');19const playwright = require('playwright');20const { writeDockerVersion } = require('playwright/lib/utils/registry');21writeDockerVersion(playwright, 'chromium', '1.2.3');22const playwright = require('playwright');23const { writeDockerVersion } = require('playwright/lib/utils/registry');24writeDockerVersion(playwright, 'chromium', '1.2.3');

Full Screen

Using AI Code Generation

copy

Full Screen

1const { writeDockerVersion } = require('playwright/lib/utils/dockerVersion');2writeDockerVersion('1.0.0');3const playwright = require('playwright');4(async () => {5 const browser = await playwright.chromium.launch({6 });7})();8module.exports = {9 use: {10 },11};

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2const { writeDockerVersion } = playwright._internal;3const fs = require('fs');4(async () => {5 const browser = await playwright.chromium.launch();6 const version = await browser.version();7 writeDockerVersion(version);8 fs.writeFileSync('docker-version.txt', version);9 await browser.close();10})();11RUN npm install playwright@$(cat docker-version.txt)

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful