Best JavaScript code snippet using playwright-internal
chromium.js
Source:chromium.js
...48 async connectOverCDP(metadata, endpointURL, options, timeout) {49 const controller = new _progress.ProgressController(metadata, this);50 controller.setLogName('browser');51 return controller.run(async progress => {52 return await this._connectOverCDPInternal(progress, endpointURL, options);53 }, _timeoutSettings.TimeoutSettings.timeout({54 timeout55 }));56 }57 async _connectOverCDPInternal(progress, endpointURL, options, onClose) {58 let headersMap;59 if (options.headers) headersMap = (0, _utils.headersArrayToObject)(options.headers, false);60 const artifactsDir = await _fs.default.promises.mkdtemp(ARTIFACTS_FOLDER);61 const wsEndpoint = await urlToWSEndpoint(endpointURL);62 progress.throwIfAborted();63 const chromeTransport = await _transport.WebSocketTransport.connect(progress, wsEndpoint, headersMap);64 const doClose = async () => {65 await (0, _utils.removeFolders)([artifactsDir]);66 await chromeTransport.closeAndWait();67 await (onClose === null || onClose === void 0 ? void 0 : onClose());68 };69 const browserProcess = {70 close: doClose,71 kill: doClose72 };73 const browserOptions = { ...this._playwrightOptions,74 slowMo: options.slowMo,75 name: 'chromium',76 isChromium: true,77 persistent: {78 noDefaultViewport: true79 },80 browserProcess,81 protocolLogger: _helper.helper.debugProtocolLogger(),82 browserLogsCollector: new _debugLogger.RecentLogsCollector(),83 artifactsDir,84 downloadsPath: artifactsDir,85 tracesDir: artifactsDir86 };87 progress.throwIfAborted();88 return await _crBrowser.CRBrowser.connect(chromeTransport, browserOptions);89 }90 _createDevTools() {91 // TODO: this is totally wrong when using channels.92 const directory = _registry.registry.findExecutable('chromium').directory;93 return directory ? new _crDevTools.CRDevTools(_path.default.join(directory, 'devtools-preferences.json')) : undefined;94 }95 async _connectToTransport(transport, options) {96 let devtools = this._devtools;97 if (options.__testHookForDevTools) {98 devtools = this._createDevTools();99 await options.__testHookForDevTools(devtools);100 }101 return _crBrowser.CRBrowser.connect(transport, options, devtools);102 }103 _rewriteStartupError(error) {104 // These error messages are taken from Chromium source code as of July, 2020:105 // https://github.com/chromium/chromium/blob/70565f67e79f79e17663ad1337dc6e63ee207ce9/content/browser/zygote_host/zygote_host_impl_linux.cc106 if (!error.message.includes('crbug.com/357670') && !error.message.includes('No usable sandbox!') && !error.message.includes('crbug.com/638180')) return error;107 return (0, _stackTrace.rewriteErrorMessage)(error, [`Chromium sandboxing failed!`, `================================`, `To workaround sandboxing issues, do either of the following:`, ` - (preferred): Configure environment to support sandboxing: https://github.com/microsoft/playwright/blob/master/docs/troubleshooting.md`, ` - (alternative): Launch Chromium without sandbox using 'chromiumSandbox: false' option`, `================================`, ``].join('\n'));108 }109 _amendEnvironment(env, userDataDir, executable, browserArguments) {110 return env;111 }112 _attemptToGracefullyCloseBrowser(transport) {113 const message = {114 method: 'Browser.close',115 id: _crConnection.kBrowserCloseMessageId,116 params: {}117 };118 transport.send(message);119 }120 async _launchWithSeleniumHub(progress, hubUrl, options) {121 if (!hubUrl.endsWith('/')) hubUrl = hubUrl + '/';122 const args = this._innerDefaultArgs(options);123 args.push('--remote-debugging-port=0');124 const desiredCapabilities = {125 'browserName': 'chrome',126 'goog:chromeOptions': {127 args128 }129 };130 progress.log(`<connecting to selenium> ${hubUrl}`);131 const response = await (0, _utils.fetchData)({132 url: hubUrl + 'session',133 method: 'POST',134 data: JSON.stringify({135 desiredCapabilities,136 capabilities: {137 alwaysMatch: desiredCapabilities138 }139 }),140 timeout: progress.timeUntilDeadline()141 }, async response => {142 const body = await (0, _utils.streamToString)(response);143 let message = '';144 try {145 const json = JSON.parse(body);146 message = json.value.localizedMessage || json.value.message;147 } catch (e) {}148 return new Error(`Error connecting to Selenium at ${hubUrl}: ${message}`);149 });150 const value = JSON.parse(response).value;151 const sessionId = value.sessionId;152 progress.log(`<connected to selenium> sessionId=${sessionId}`);153 const disconnectFromSelenium = async () => {154 progress.log(`<disconnecting from selenium> sessionId=${sessionId}`);155 await (0, _utils.fetchData)({156 url: hubUrl + 'session/' + sessionId,157 method: 'DELETE'158 }).catch(error => progress.log(`<error disconnecting from selenium>: ${error}`));159 progress.log(`<disconnected from selenium> sessionId=${sessionId}`);160 _processLauncher.gracefullyCloseSet.delete(disconnectFromSelenium);161 };162 _processLauncher.gracefullyCloseSet.add(disconnectFromSelenium);163 try {164 const capabilities = value.capabilities;165 const maybeChromeOptions = capabilities['goog:chromeOptions'];166 const chromeOptions = maybeChromeOptions && typeof maybeChromeOptions === 'object' ? maybeChromeOptions : undefined;167 const debuggerAddress = chromeOptions && typeof chromeOptions.debuggerAddress === 'string' ? chromeOptions.debuggerAddress : undefined;168 const chromeOptionsURL = typeof maybeChromeOptions === 'string' ? maybeChromeOptions : undefined;169 let endpointURL = capabilities['se:cdp'] || debuggerAddress || chromeOptionsURL;170 if (!['ws://', 'wss://', 'http://', 'https://'].some(protocol => endpointURL.startsWith(protocol))) endpointURL = 'http://' + endpointURL;171 return this._connectOverCDPInternal(progress, endpointURL, {172 slowMo: options.slowMo173 }, disconnectFromSelenium);174 } catch (e) {175 await disconnectFromSelenium();176 throw e;177 }178 }179 _defaultArgs(options, isPersistent, userDataDir) {180 const chromeArguments = this._innerDefaultArgs(options);181 chromeArguments.push(`--user-data-dir=${userDataDir}`);182 if (options.useWebSocket) chromeArguments.push('--remote-debugging-port=0');else chromeArguments.push('--remote-debugging-pipe');183 if (isPersistent) chromeArguments.push('about:blank');else chromeArguments.push('--no-startup-window');184 return chromeArguments;185 }...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: `example.png` });7 await browser.close();8})();9const { chromium } = require('playwright');10(async () => {11 const browser = await chromium.connectOverCDP({12 });13 const page = await browser.newPage();14 await page.screenshot({ path: `example.png` });15 await browser.close();16})();17### connectOverCDP(options)
Using AI Code Generation
1const playwright = require('playwright');2const { chromium } = playwright;3const { _connectOverCDPInternal } = chromium;4(async () => {5 const page = await browser.newPage();6 await page.screenshot({ path: 'example.png' });7 await browser.close();8})();9const playwright = require('playwright');10const { chromium } = playwright;11const { _connectOverCDPInternal } = chromium;12(async () => {13 const page = await browser.newPage();14 await page.screenshot({ path: 'example.png' });15 await browser.close();16})();
Using AI Code Generation
1const { _connectOverCDPInternal } = require('playwright/lib/server/cdpsession');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const browserWSEndpoint = browser.wsEndpoint();6 const cdp = await _connectOverCDPInternal(browserWSEndpoint, 'browser');7 const { targetInfos } = await cdp.send('Target.getTargets');8 const pageTarget = targetInfos.find(target => target.type === 'page' && target.url !== 'about:blank');9 const pageCDPSession = await cdp.createSession(pageTarget);10 await pageCDPSession.send('Runtime.evaluate', { expression: 'console.log("hello")' });11 await cdp.disconnect();12 await browser.close();13})();14### Using the browserType.connect() method15const { chromium } = require('playwright');16(async () => {17 const browser = await chromium.launch();18 const browserWSEndpoint = browser.wsEndpoint();19 const browser2 = await chromium.connect({ wsEndpoint: browserWSEndpoint });20 const context = await browser2.newContext();21 const page = await context.newPage();22 await browser2.close();23 await browser.close();24})();25### Using the browserType.connectOverCDP() method26const { chromium } = require('playwright');27(async () => {28 const browser = await chromium.launch();29 const browserWSEndpoint = browser.wsEndpoint();30 const cdp = await chromium.connectOverCDP({ wsEndpoint: browserWSEndpoint });31 const { targetInfos } = await cdp.send('Target.getTargets');32 const pageTarget = targetInfos.find(target => target.type === 'page' && target.url !== 'about:blank');33 const pageCDPSession = await cdp.createSession(pageTarget);34 await pageCDPSession.send('Runtime.evaluate', { expression: 'console.log("hello")' });35 await cdp.disconnect();36 await browser.close();37})();38- `browserType.connect(options)` <[Object]>
Using AI Code Generation
1const playwright = require('playwright');2const { chromium } = require('playwright-internal');3const { _connectOverCDPInternal } = chromium;4async function main() {5 const browser = await _connectOverCDPInternal({6 });7 const context = await browser.newContext();8 const page = await context.newPage();9 await page.screenshot({ path: `google.png` });10 await browser.close();11}12main();13const playwright = require('playwright');14async function main() {15 const browser = await playwright.chromium._connectOverCDP({16 });17 const context = await browser.newContext();18 const page = await context.newPage();19 await page.screenshot({ path: `google.png` });20 await browser.close();21}22main();23* [browser.newContext([options])](#browsernewcontextoptions)24* [browser.close([options])](#browsercloseoptions)25* [browser.isConnected()](#browserisconnected)26* [browser.version()](#browserversion)27* [browser.process()](#browserprocess)28* [browser.defaultContext()](#browserdefaultcontext)29* [browser.contexts()](#browsercontexts)30* [browser.waitForTarget(predicate[, options])](#browserwaitfortargetpredicate-options)31* [browser.targets()](#browsertargets)32* [browser.disconnect()](#browserdisconnect)33* [browser._connectOverCDP(options)](#browser_connectovercdpoptions)34* [browser._defaultContextOptions()](#browser_defaultcontextoptions)35* [browser._defaultLaunchOptions()](#browser_defaultlaunchoptions)
Using AI Code Generation
1const playwright = require('playwright');2const { chromium } = playwright;3(async () => {4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: `example.png` });7 await browser.close();8})();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const context = await browser.newContext();4 const page = await context.newPage();5 await page.screenshot({ path: 'example.png' });6 await browser.close();7})();8const { chromium } = require('playwright');9(async () => {10 const context = await browser.newContext();11 const page = await context.newPage();12 await page.screenshot({ path: 'example.png' });13 await browser.close();14})();15const { chromium } = require('playwright');16(async () => {17 const context = await browser.newContext();18 const page = await context.newPage();19 await page.screenshot({ path: 'example.png' });20 await browser.close();21})();22const { chromium } = require('playwright');23(async () => {
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.
Get 100 minutes of automation test minutes FREE!!