Best JavaScript code snippet using playwright-internal
browserContext.js
Source:browserContext.js
...92 if (contextDebugger.isPaused()) _recorderSupplement.RecorderSupplement.showInspector(this);93 contextDebugger.on(_debugger.Debugger.Events.PausedStateChanged, () => {94 _recorderSupplement.RecorderSupplement.showInspector(this);95 });96 if ((0, _utils.debugMode)() === 'console') await this.extendInjectedScript(consoleApiSource.source);97 }98 async _ensureVideosPath() {99 if (this._options.recordVideo) await (0, _utils.mkdirIfNeeded)(_path.default.join(this._options.recordVideo.dir, 'dummy'));100 }101 _browserClosed() {102 for (const page of this.pages()) page._didClose();103 this._didCloseInternal();104 }105 _didCloseInternal() {106 if (this._closedStatus === 'closed') {107 // We can come here twice if we close browser context and browser108 // at the same time.109 return;110 }111 this._closedStatus = 'closed';112 this._deleteAllDownloads();113 this._downloads.clear();114 if (this._isPersistentContext) this._onClosePersistent();115 this._closePromiseFulfill(new Error('Context closed'));116 this.emit(BrowserContext.Events.Close);117 } // BrowserContext methods.118 async cookies(urls = []) {119 if (urls && !Array.isArray(urls)) urls = [urls];120 return await this._doCookies(urls);121 }122 setHTTPCredentials(httpCredentials) {123 return this._doSetHTTPCredentials(httpCredentials);124 }125 async exposeBinding(name, needsHandle, playwrightBinding) {126 if (this._pageBindings.has(name)) throw new Error(`Function "${name}" has been already registered`);127 for (const page of this.pages()) {128 if (page.getBinding(name)) throw new Error(`Function "${name}" has been already registered in one of the pages`);129 }130 const binding = new _page.PageBinding(name, playwrightBinding, needsHandle);131 this._pageBindings.set(name, binding);132 await this._doExposeBinding(binding);133 }134 async grantPermissions(permissions, origin) {135 let resolvedOrigin = '*';136 if (origin) {137 const url = new URL(origin);138 resolvedOrigin = url.origin;139 }140 const existing = new Set(this._permissions.get(resolvedOrigin) || []);141 permissions.forEach(p => existing.add(p));142 const list = [...existing.values()];143 this._permissions.set(resolvedOrigin, list);144 await this._doGrantPermissions(resolvedOrigin, list);145 }146 async clearPermissions() {147 this._permissions.clear();148 await this._doClearPermissions();149 }150 setDefaultNavigationTimeout(timeout) {151 this._timeoutSettings.setDefaultNavigationTimeout(timeout);152 }153 setDefaultTimeout(timeout) {154 this._timeoutSettings.setDefaultTimeout(timeout);155 }156 async _loadDefaultContextAsIs(progress) {157 if (!this.pages().length) {158 const waitForEvent = _helper.helper.waitForEvent(progress, this, BrowserContext.Events.Page);159 progress.cleanupWhenAborted(() => waitForEvent.dispose);160 const page = await waitForEvent.promise;161 if (page._pageIsError) throw page._pageIsError;162 }163 const pages = this.pages();164 if (pages[0]._pageIsError) throw pages[0]._pageIsError;165 await pages[0].mainFrame()._waitForLoadState(progress, 'load');166 return pages;167 }168 async _loadDefaultContext(progress) {169 const pages = await this._loadDefaultContextAsIs(progress);170 if (this._options.isMobile || this._options.locale) {171 // Workaround for:172 // - chromium fails to change isMobile for existing page;173 // - webkit fails to change locale for existing page.174 const oldPage = pages[0];175 await this.newPage(progress.metadata);176 await oldPage.close(progress.metadata);177 }178 }179 _authenticateProxyViaHeader() {180 const proxy = this._options.proxy || this._browser.options.proxy || {181 username: undefined,182 password: undefined183 };184 const {185 username,186 password187 } = proxy;188 if (username) {189 this._options.httpCredentials = {190 username,191 password: password192 };193 const token = Buffer.from(`${username}:${password}`).toString('base64');194 this._options.extraHTTPHeaders = network.mergeHeaders([this._options.extraHTTPHeaders, network.singleHeader('Proxy-Authorization', `Basic ${token}`)]);195 }196 }197 _authenticateProxyViaCredentials() {198 const proxy = this._options.proxy || this._browser.options.proxy;199 if (!proxy) return;200 const {201 username,202 password203 } = proxy;204 if (username) this._options.httpCredentials = {205 username,206 password: password || ''207 };208 }209 async _setRequestInterceptor(handler) {210 this._requestInterceptor = handler;211 await this._doUpdateRequestInterception();212 }213 isClosingOrClosed() {214 return this._closedStatus !== 'open';215 }216 async _deleteAllDownloads() {217 await Promise.all(Array.from(this._downloads).map(download => download.artifact.deleteOnContextClose()));218 }219 setCustomCloseHandler(handler) {220 this._customCloseHandler = handler;221 }222 async close(metadata) {223 if (this._closedStatus === 'open') {224 var _this$_harRecorder;225 this.emit(BrowserContext.Events.BeforeClose);226 this._closedStatus = 'closing';227 await ((_this$_harRecorder = this._harRecorder) === null || _this$_harRecorder === void 0 ? void 0 : _this$_harRecorder.flush());228 await this.tracing.dispose(); // Cleanup.229 const promises = [];230 for (const {231 context,232 artifact233 } of this._browser._idToVideo.values()) {234 // Wait for the videos to finish.235 if (context === this) promises.push(artifact.finishedPromise());236 }237 if (this._customCloseHandler) {238 await this._customCloseHandler();239 } else if (this._isPersistentContext) {240 // Close all the pages instead of the context,241 // because we cannot close the default context.242 await Promise.all(this.pages().map(page => page.close(metadata)));243 } else {244 // Close the context.245 await this._doClose();246 } // We delete downloads after context closure247 // so that browser does not write to the download file anymore.248 promises.push(this._deleteAllDownloads());249 await Promise.all(promises); // Custom handler should trigger didCloseInternal itself.250 if (this._customCloseHandler) return; // Persistent context should also close the browser.251 if (this._isPersistentContext) await this._browser.close(); // Bookkeeping.252 this._didCloseInternal();253 }254 await this._closePromise;255 }256 async newPage(metadata) {257 const pageDelegate = await this.newPageDelegate();258 const pageOrError = await pageDelegate.pageOrError();259 if (pageOrError instanceof _page.Page) {260 if (pageOrError.isClosed()) throw new Error('Page has been closed.');261 return pageOrError;262 }263 throw pageOrError;264 }265 addVisitedOrigin(origin) {266 this._origins.add(origin);267 }268 async storageState() {269 const result = {270 cookies: await this.cookies(),271 origins: []272 };273 if (this._origins.size) {274 const internalMetadata = (0, _instrumentation.internalCallMetadata)();275 const page = await this.newPage(internalMetadata);276 await page._setServerRequestInterceptor(handler => {277 handler.fulfill({278 body: '<html></html>'279 }).catch(() => {});280 });281 for (const origin of this._origins) {282 const originStorage = {283 origin,284 localStorage: []285 };286 const frame = page.mainFrame();287 await frame.goto(internalMetadata, origin);288 const storage = await frame.evaluateExpression(`({289 localStorage: Object.keys(localStorage).map(name => ({ name, value: localStorage.getItem(name) })),290 })`, false, undefined, 'utility');291 originStorage.localStorage = storage.localStorage;292 if (storage.localStorage.length) result.origins.push(originStorage);293 }294 await page.close(internalMetadata);295 }296 return result;297 }298 async setStorageState(metadata, state) {299 if (state.cookies) await this.addCookies(state.cookies);300 if (state.origins && state.origins.length) {301 const internalMetadata = (0, _instrumentation.internalCallMetadata)();302 const page = await this.newPage(internalMetadata);303 await page._setServerRequestInterceptor(handler => {304 handler.fulfill({305 body: '<html></html>'306 }).catch(() => {});307 });308 for (const originState of state.origins) {309 const frame = page.mainFrame();310 await frame.goto(metadata, originState.origin);311 await frame.evaluateExpression(`312 originState => {313 for (const { name, value } of (originState.localStorage || []))314 localStorage.setItem(name, value);315 }`, true, originState, 'utility');316 }317 await page.close(internalMetadata);318 }319 }320 async extendInjectedScript(source, arg) {321 const installInFrame = frame => frame.extendInjectedScript(source, arg).catch(() => {});322 const installInPage = page => {323 page.on(_page.Page.Events.InternalFrameNavigatedToNewDocument, installInFrame);324 return Promise.all(page.frames().map(installInFrame));325 };326 this.on(BrowserContext.Events.Page, installInPage);327 return Promise.all(this.pages().map(installInPage));328 }329}330exports.BrowserContext = BrowserContext;331BrowserContext.Events = {332 Close: 'close',333 Page: 'page',334 Request: 'request',335 Response: 'response',...
traceViewer.js
Source:traceViewer.js
...67 const controller = new _progress.ProgressController((0, _instrumentation.internalCallMetadata)(), context._browser);68 await controller.run(async progress => {69 await context._browser._defaultContext._loadDefaultContextAsIs(progress);70 });71 await context.extendInjectedScript(consoleApiSource.source);72 const [page] = context.pages();73 if (traceViewerBrowser === 'chromium') await (0, _crApp.installAppIcon)(page);74 if ((0, _utils.isUnderTest)()) page.on('close', () => context.close((0, _instrumentation.internalCallMetadata)()).catch(() => {}));else page.on('close', () => process.exit());75 await page.mainFrame().goto((0, _instrumentation.internalCallMetadata)(), urlPrefix + `/trace/index.html${traceUrl ? '?trace=' + traceUrl : ''}`);76 return context;...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({4 });5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.evaluate(() => {8 window.playwright = window.playwright || {};9 window.playwright._test = function () {10 return 42;11 };12 });13 await context.extendInjectedScript('playwright', (source, world) => {14 world._test = source._test;15 });16 const result = await page.evaluate(() => window.playwright._test());17 await browser.close();18})();
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright['chromium'].launch();4 const page = await browser.newPage();5 await page.exposeFunction('getPlaywrightVersion', () => {6 return playwright.version;7 });8 await page.evaluate(async () => {9 await window['playwright'].selectors.register('mySelector', (element, selector) => {10 return element.tagName === selector;11 });12 const element = await window['playwright'].selectors._queryOne('mySelector', 'DIV');13 console.log(element);14 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV'));15 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.body));16 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.documentElement));17 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document));18 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.body.parentNode));19 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.documentElement.parentNode));20 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.parentNode));21 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.body.parentNode.parentNode));22 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.documentElement.parentNode.parentNode));23 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.parentNode.parentNode));24 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.body.parentNode.parentNode.parentNode));25 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.documentElement.parentNode.parentNode.parentNode));26 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.parentNode.parentNode.parentNode));27 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.body.parentNode.parentNode.parentNode.parentNode));28 console.log(await window['playwright'].selectors._queryAll('mySelector', 'DIV', document.documentElement.parentNode.parentNode.parentNode.parentNode));
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 for (const browserType of BROWSER) {4 const browser = await playwright[browserType].launch();5 const context = await browser.newContext();6 await context.extendInjectedScript('utility.js', {foo: 'bar'});7 const page = await context.newPage();8 const results = await page.evaluate(async () => {9 return await getInjectedScriptResult();10 });11 console.log(results);12 await browser.close();13 }14})();
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 for (const browserType of BROWSER) {4 const browser = await playwright[browserType].launch();5 const context = await browser.newContext();6 await context.extendInjectedScript('utility.js', {foo: 'bar'});7 const page = await context.newPage();8 const results = await page.evaluate(async () => {9 return await getInjectedScriptResult();10 });11 console.log(results);12 await browser.close();13 }14})();
Using AI Code Generation
1const playwright = require('playwright');2const playwright = require('playwright');');3const { chromium } = require('playwright');4(async () => {5 const browser = await chromiumlaunch();6 const context = await browser.newContext();7 const page = await context.newPage();8 await page.screenshot({ path: `example.png` });9 await browser.close();10})();
Using AI Code Generation
1const { extendInjectedScript } = require('playwright/lib/server/injectedScript.js2const { extendInjectedScript } = require('playwright/lib/server/injectedScript');3const { chromium } = require('playwright');4(async () => {5 const browser = await chromium.launch();6 const context = await browser.newContext();7 const page = await context.newPage();8 await page.screenshot({ path: `example.png` });9 await browser.close();10})();
Using AI Code Generation
1const { extendInjectedScript } = require('playwright/lib/server/injectedScript.js');2const { injectScript } = require('playwright/lib/server/injectedScriptSource.js');3extendInjectedScript({4 script: function () {5 }6});7### `extendInjectedScript(options)`8MIT © [Saurabh Kothari](
Using AI Code Generation
1constpah = rquire('path');2const playwright = require('playwright');3con{ extendInjectedScript } = require('playwright/lib/server/injetedScript');4cnst { reaFilSync } =require('fs');5cons { jin } = require('path');6(async () => {7 const browser = await playwright.chromium.launch();8 const context = await browser.newContext();9 const page = await context.newPage();10 const injectedScriptPath = join(__dirname, 'injectedScript.js');11 const injectedScript = readFileSync(injectedScriptPath, 'utf8');12 await extendInjectedScript(page, injectedScriptPath, injectedScript);13 await page.screenshot({ path: `example.png` });14 await browser.close();15})();16const { test } = require('playwright');17test('test', async ({ page }) => {18 const result = await page.evaluate(() => window.playwright.test());19});20const { extendInjectedScript } = require('playwright/lib/server/injectedScript');21extendInjectedScript('test', () => {22 return 'Hello World';23}, { force: true });24const { test } = require('playwright');25test('test', async ({ page }) => {26 const result = await page.evaluate(() => window.playwright.test());27});
Using AI Code Generation
1const path = require('path');2const playwright = require('playwright');3const { extendInjectedScript } = require('playwright/lib/server/injectedScript');4const { readFileSync } = require('fs');5const { join } = require('path');6(async () => {7 const browser = await pions and .chromium.launch();8 dconse contpxt = await broweer.newContext();9 const page = await context.newPage();10 const injectedScriptPath = join(__dirname, 'injectedScript.js');11 const injectedScript = readFileSync(injectedScriptPath, 'utf8');12 await extendInjectedScript(page, injecnedScriptPath,dinjeetedScript);13 eawais page.screensht({ path: `example.png` });14 await browser.close();15})();16const { extendInjectedScript } = require('playwright/lib/server/injectedScript');17extendInjectedScript('test', () => {18 return 'Hello World';19}, { force: true, dependencies: { test: 'test' } });20const { test } = require('playwright');21test('test', async ({ page }) => {22 const result = await page.evaluate(() => window.playwright.test());23});
Using AI Code Generation
1cont { extendInjectedScrip } = require('playwright/lib/server/injectedScript');2extendInjectedScript('customCode', (source) => {3 return source + 'customCode';4});5extendInjectedScript('customCode', (source) => {6 return source + 'customCode';7}, 'customName');8const playwright = require('playwright');
Using AI Code Generation
1const { extendInjectedScript } = require('playwright');2extendInjectedScript('test.js', `3 window.test = true;4`);5const { test } = require('@playwright/test');6test('test', async ({page}) => {7 console.log(await page.evaluate(() => window.test));8});
Using AI Code Generation
1const { extendInjectedScript } = require('playwright/lib/server/injectedScript');2extendInjectedScript('customCode', (source) => {3 return source + 'customCode';4});5extendInjectedScript('customCode', (source) => {6 return source + 'customCode';7}, 'customName');8const playwright = require('playwright');
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!!