Best JavaScript code snippet using playwright-internal
TargetRegistry.js
Source:TargetRegistry.js
...413 }414 async addBinding(name, script) {415 await this._channel.connect('').send('addBinding', { name, script }).catch(e => void e);416 }417 async applyContextSetting(name, value) {418 await this._channel.connect('').send('applyContextSetting', { name, value }).catch(e => void e);419 }420 async hasFailedToOverrideTimezone() {421 return await this._channel.connect('').send('hasFailedToOverrideTimezone').catch(e => true);422 }423 async _startVideoRecording({width, height, scale, dir}) {424 // On Mac the window may not yet be visible when TargetCreated and its425 // NSWindow.windowNumber may be -1, so we wait until the window is known426 // to be initialized and visible.427 await this.windowReady();428 const file = OS.Path.join(dir, helper.generateId() + '.webm');429 if (width < 10 || width > 10000 || height < 10 || height > 10000)430 throw new Error("Invalid size");431 if (scale && (scale <= 0 || scale > 1))432 throw new Error("Unsupported scale");433 const screencast = Cc['@mozilla.org/juggler/screencast;1'].getService(Ci.nsIScreencastService);434 const docShell = this._gBrowser.ownerGlobal.docShell;435 // Exclude address bar and navigation control from the video.436 const rect = this.linkedBrowser().getBoundingClientRect();437 const devicePixelRatio = this._window.devicePixelRatio;438 const videoSessionId = screencast.startVideoRecording(docShell, file, width, height, scale || 0, devicePixelRatio * rect.top);439 this._screencastInfo = { videoSessionId, file };440 this.emit(PageTarget.Events.ScreencastStarted);441 }442 async _stopVideoRecording() {443 if (!this._screencastInfo)444 throw new Error('No video recording in progress');445 const screencastInfo = this._screencastInfo;446 this._screencastInfo = undefined;447 const screencast = Cc['@mozilla.org/juggler/screencast;1'].getService(Ci.nsIScreencastService);448 const result = new Promise(resolve =>449 Services.obs.addObserver(function onStopped(subject, topic, data) {450 if (screencastInfo.videoSessionId != data)451 return;452 Services.obs.removeObserver(onStopped, 'juggler-screencast-stopped');453 resolve();454 }, 'juggler-screencast-stopped')455 );456 screencast.stopVideoRecording(screencastInfo.videoSessionId);457 return result;458 }459 screencastInfo() {460 return this._screencastInfo;461 }462 dispose() {463 this._disposed = true;464 if (this._screencastInfo)465 this._stopVideoRecording().catch(e => dump(`stopVideoRecording failed:\n${e}\n`));466 this._browserContext.pages.delete(this);467 this._registry._browserToTarget.delete(this._linkedBrowser);468 this._registry._browserBrowsingContextToTarget.delete(this._linkedBrowser.browsingContext);469 try {470 helper.removeListeners(this._eventListeners);471 } catch (e) {472 // In some cases, removing listeners from this._linkedBrowser fails473 // because it is already half-destroyed.474 if (e)475 dump(e.message + '\n' + e.stack + '\n');476 }477 this._registry.emit(TargetRegistry.Events.TargetDestroyed, this);478 }479}480PageTarget.Events = {481 ScreencastStarted: Symbol('PageTarget.ScreencastStarted'),482 Crashed: Symbol('PageTarget.Crashed'),483 DialogOpened: Symbol('PageTarget.DialogOpened'),484 DialogClosed: Symbol('PageTarget.DialogClosed'),485};486function fromProtocolColorScheme(colorScheme) {487 if (colorScheme === 'light' || colorScheme === 'dark')488 return colorScheme;489 if (colorScheme === null || colorScheme === 'no-preference')490 return undefined;491 throw new Error('Unknown color scheme: ' + colorScheme);492}493class BrowserContext {494 constructor(registry, browserContextId, removeOnDetach) {495 this._registry = registry;496 this.browserContextId = browserContextId;497 // Default context has userContextId === 0, but we pass undefined to many APIs just in case.498 this.userContextId = 0;499 if (browserContextId !== undefined) {500 const identity = ContextualIdentityService.create(IDENTITY_NAME + browserContextId);501 this.userContextId = identity.userContextId;502 }503 this._principals = [];504 // Maps origins to the permission lists.505 this._permissions = new Map();506 this._registry._browserContextIdToBrowserContext.set(this.browserContextId, this);507 this._registry._userContextIdToBrowserContext.set(this.userContextId, this);508 this._proxy = null;509 this.removeOnDetach = removeOnDetach;510 this.extraHTTPHeaders = undefined;511 this.httpCredentials = undefined;512 this.requestInterceptionEnabled = undefined;513 this.ignoreHTTPSErrors = undefined;514 this.downloadOptions = undefined;515 this.defaultViewportSize = undefined;516 this.deviceScaleFactor = undefined;517 this.defaultUserAgent = null;518 this.touchOverride = false;519 this.colorScheme = 'none';520 this.screencastOptions = undefined;521 this.scriptsToEvaluateOnNewDocument = [];522 this.bindings = [];523 this.settings = {};524 this.pages = new Set();525 }526 setColorScheme(colorScheme) {527 this.colorScheme = fromProtocolColorScheme(colorScheme);528 for (const page of this.pages)529 page.updateColorSchemeOverride();530 }531 async destroy() {532 if (this.userContextId !== 0) {533 ContextualIdentityService.remove(this.userContextId);534 for (const page of this.pages)535 page.close();536 if (this.pages.size) {537 await new Promise(f => {538 const listener = helper.on(this._registry, TargetRegistry.Events.TargetDestroyed, () => {539 if (!this.pages.size) {540 helper.removeListeners([listener]);541 f();542 }543 });544 });545 }546 }547 this._registry._browserContextIdToBrowserContext.delete(this.browserContextId);548 this._registry._userContextIdToBrowserContext.delete(this.userContextId);549 }550 setProxy(proxy) {551 // Clear AuthCache.552 Services.obs.notifyObservers(null, "net:clear-active-logins");553 this._proxy = proxy;554 }555 setIgnoreHTTPSErrors(ignoreHTTPSErrors) {556 if (this.ignoreHTTPSErrors === ignoreHTTPSErrors)557 return;558 this.ignoreHTTPSErrors = ignoreHTTPSErrors;559 const certOverrideService = Cc[560 "@mozilla.org/security/certoverride;1"561 ].getService(Ci.nsICertOverrideService);562 if (ignoreHTTPSErrors) {563 Preferences.set("network.stricttransportsecurity.preloadlist", false);564 Preferences.set("security.cert_pinning.enforcement_level", 0);565 certOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyData(true, this.userContextId);566 } else {567 certOverrideService.setDisableAllSecurityChecksAndLetAttackersInterceptMyData(false, this.userContextId);568 }569 }570 async setDefaultUserAgent(userAgent) {571 this.defaultUserAgent = userAgent;572 for (const page of this.pages)573 page.updateUserAgent();574 }575 setTouchOverride(touchOverride) {576 this.touchOverride = touchOverride;577 for (const page of this.pages)578 page.updateTouchOverride();579 }580 async setDefaultViewport(viewport) {581 this.defaultViewportSize = viewport ? viewport.viewportSize : undefined;582 this.deviceScaleFactor = viewport ? viewport.deviceScaleFactor : undefined;583 await Promise.all(Array.from(this.pages).map(page => page.updateViewportSize()));584 }585 async addScriptToEvaluateOnNewDocument(script) {586 this.scriptsToEvaluateOnNewDocument.push(script);587 await Promise.all(Array.from(this.pages).map(page => page.addScriptToEvaluateOnNewDocument(script)));588 }589 async addBinding(name, script) {590 this.bindings.push({ name, script });591 await Promise.all(Array.from(this.pages).map(page => page.addBinding(name, script)));592 }593 async applySetting(name, value) {594 this.settings[name] = value;595 await Promise.all(Array.from(this.pages).map(page => page.applyContextSetting(name, value)));596 }597 async grantPermissions(origin, permissions) {598 this._permissions.set(origin, permissions);599 const promises = [];600 for (const page of this.pages) {601 if (origin === '*' || page._url.startsWith(origin)) {602 this.grantPermissionsToOrigin(page._url);603 promises.push(page.ensurePermissions());604 }605 }606 await Promise.all(promises);607 }608 resetPermissions() {609 for (const principal of this._principals) {...
main.js
Source:main.js
...86 },87 addBinding({name, script}) {88 frameTree.addBinding(name, script);89 },90 applyContextSetting({name, value}) {91 applySetting[name](value);92 },93 ensurePermissions() {94 // noop, just a rountrip.95 },96 hasFailedToOverrideTimezone() {97 return failedToOverrideTimezone;98 },99 async awaitViewportDimensions({width, height, deviceSizeIsPageSize}) {100 docShell.deviceSizeIsPageSize = deviceSizeIsPageSize;101 const win = docShell.domWindow;102 if (win.innerWidth === width && win.innerHeight === height)103 return;104 await new Promise(resolve => {...
Using AI Code Generation
1const { applyContextSettings } = require('playwright/lib/server/browserContext');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 applyContextSettings(context, {7 extraHTTPHeaders: {8 }9 });10})();11const { applyContextSettings } = require('playwright/lib/server/browserContext');12const { chromium } = require('playwright');13(async () => {14 const browser = await chromium.launch();15 const context = await browser.newContext();16 applyContextSettings(context, {17 extraHTTPHeaders: {18 }19 });20})();21const { applyContextSettings } = require('playwright/lib/server/browserContext');22const { chromium } = require('playwright');23(async () => {24 const browser = await chromium.launch();25 const context = await browser.newContext();26 applyContextSettings(context, {27 extraHTTPHeaders: {28 }29 });30})();31const { applyContextSettings } = require('playwright/lib/server/browserContext');32const { chromium } = require('playwright');33(async () => {34 const browser = await chromium.launch();35 const context = await browser.newContext();36 applyContextSettings(context, {37 extraHTTPHeaders: {38 }39 });40})();41const { applyContextSettings } = require('playwright/lib/server/browserContext');42const { chromium } = require('playwright');43(async () => {44 const browser = await chromium.launch();45 const context = await browser.newContext();46 applyContextSettings(context, {47 extraHTTPHeaders: {48 }49 });50})();
Using AI Code Generation
1const { applyContextSettings } = require('playwright/lib/server/chromium/crBrowser');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext({ ignoreHTTPSErrors: true });6 const page = await context.newPage();7 await applyContextSettings(context, { ignoreHTTPSErrors: false });8 await page.screenshot({ path: 'example.png' });9 await browser.close();10})();
Using AI Code Generation
1const { Playwright } = require('playwright');2const { chromium } = require('playwright-chromium');3(async () => {4 const browser = await chromium.launch();5 const page = await browser.newPage();6 await Playwright.applyContextSetting(page.context(), 'ignoreHTTPSErrors', true);7 await browser.close();8})();
Using AI Code Generation
1const { applyContextSetting } = require('playwright-core/lib/server/browserContext');2const { chromium } = require('playwright-core');3const fs = require('fs');4(async () => {5 const browser = await chromium.launch();6 const context = await browser.newContext();7 const page = await context.newPage();8 await context.close();9 await browser.close();10})();11applyContextSetting(context, 'storageState', {12 {13 }14 {15 {16 }17 }18});19fs.writeFileSync('storage.json', JSON.stringify(context._options.storageState, null, 2));20const { chromium } = require('playwright-core');21const fs = require('fs');22(async () => {23 const browser = await chromium.launch();24 const context = await browser.newContext();25 const storage = fs.readFileSync('storage.json');26 await context.addCookies(JSON.parse(storage).cookies);27 const page = await context.newPage();28 await page.evaluate((storage) => {29 storage.origins.forEach((origin) => {30 localStorage.clear();31 origin.localStorage.forEach((item) => {32 localStorage.setItem(item.name, item.value);33 });34 });35 }, JSON.parse(storage));36 await context.close();37 await browser.close();38})();
Using AI Code Generation
1const { applyContextSettings } = require('playwright/lib/server/browserContext');2const { chromium } = require('playwright');3const fs = require('fs');4const path = require('path');5const { promisify } = require('util');6const readFileAsync = promisify(fs.readFile);7const writeFileAsync = promisify(fs.writeFile);8(async () => {9 const browser = await chromium.launch();10 const context = await browser.newContext();11 const page = await context.newPage();12 const settings = await readFileAsync(path.join(__dirname, 'settings.json'), 'utf-8');13 await applyContextSettings(context, JSON.parse(settings));14 await page.screenshot({ path: 'example.png' });15 await browser.close();16})();17{18 "recordVideo": {19 "size": {20 }21 }22}
Using AI Code Generation
1const { applyContextSettings } = require('playwright-core/lib/server/browserContext');2applyContextSettings(context, { ignoreHTTPSErrors: true });3const { applyBrowserContextOptions } = require('playwright-core/lib/server/browserContext');4applyBrowserContextOptions(context, { ignoreHTTPSErrors: true });5const { applyPageOptions } = require('playwright-core/lib/server/page');6applyPageOptions(page, { ignoreHTTPSErrors: true });7const { applyBrowserOptions } = require('playwright-core/lib/server/browser');8applyBrowserOptions(browser, { ignoreHTTPSErrors: true });9const { applyBrowserAppOptions } = require('playwright-core/lib/server/browserType');10applyBrowserAppOptions(browser, { ignoreHTTPSErrors: true });11const { applyDeviceDescriptor } = require('playwright-core/lib/server/deviceDescriptors');12applyDeviceDescriptor(context, { viewport: { width: 1280, height: 720 } });
Using AI Code Generation
1const context = await browser.newContext();2await context._options._browserContext._applyContextSetting('download', {3});4const page = await context.newPage();5await page.click('a.download');6await page.waitForTimeout(5000);7await page.close();8await context.close();9const context = await browser.newContext();10await context._options._browserContext._applyContextSetting('download', {11});12const page = await context.newPage();13await page.click('a.download');14await page.waitForTimeout(5000);15await page.close();16await context.close();17const context = await browser.newContext();18await context._options._browserContext._applyContextSetting('download', {19});20const page = await context.newPage();21await page.click('a.download');22await page.waitForTimeout(5000);23await page.close();24await context.close();25const context = await browser.newContext();26await context._options._browserContext._applyContextSetting('download', {27});28const page = await context.newPage();29await page.click('a.download');30await page.waitForTimeout(5000);31await page.close();32await context.close();33const context = await browser.newContext();34await context._options._browserContext._applyContextSetting('download', {35});36const page = await context.newPage();37await page.click('a.download');38await page.waitForTimeout(5000);39await page.close();40await context.close();41const context = await browser.newContext();42await context._options._browserContext._applyContextSetting('download', {43});44const page = await context.newPage();45await page.click('a.download
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!!