Best JavaScript code snippet using playwright-internal
channelOwner.js
Source:channelOwner.js
1"use strict";2Object.defineProperty(exports, "__esModule", {3 value: true4});5exports.renderCallWithParams = renderCallWithParams;6exports.ChannelOwner = void 0;7var _events = require("events");8var _validator = require("../protocol/validator");9var _debugLogger = require("../utils/debugLogger");10var _stackTrace = require("../utils/stackTrace");11var _utils = require("../utils/utils");12var _zones = require("../utils/zones");13/**14 * Copyright (c) Microsoft Corporation.15 *16 * Licensed under the Apache License, Version 2.0 (the 'License");17 * you may not use this file except in compliance with the License.18 * You may obtain a copy of the License at19 *20 * http://www.apache.org/licenses/LICENSE-2.021 *22 * Unless required by applicable law or agreed to in writing, software23 * distributed under the License is distributed on an "AS IS" BASIS,24 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.25 * See the License for the specific language governing permissions and26 * limitations under the License.27 */28class ChannelOwner extends _events.EventEmitter {29 constructor(parent, type, guid, initializer, instrumentation) {30 var _this$_parent;31 super();32 this._connection = void 0;33 this._parent = void 0;34 this._objects = new Map();35 this._type = void 0;36 this._guid = void 0;37 this._channel = void 0;38 this._initializer = void 0;39 this._logger = void 0;40 this._instrumentation = void 0;41 this.setMaxListeners(0);42 this._connection = parent instanceof ChannelOwner ? parent._connection : parent;43 this._type = type;44 this._guid = guid;45 this._parent = parent instanceof ChannelOwner ? parent : undefined;46 this._instrumentation = instrumentation || ((_this$_parent = this._parent) === null || _this$_parent === void 0 ? void 0 : _this$_parent._instrumentation);47 this._connection._objects.set(guid, this);48 if (this._parent) {49 this._parent._objects.set(guid, this);50 this._logger = this._parent._logger;51 }52 this._channel = this._createChannel(new _events.EventEmitter());53 this._initializer = initializer;54 }55 _dispose() {56 // Clean up from parent and connection.57 if (this._parent) this._parent._objects.delete(this._guid);58 this._connection._objects.delete(this._guid); // Dispose all children.59 for (const object of [...this._objects.values()]) object._dispose();60 this._objects.clear();61 }62 _debugScopeState() {63 return {64 _guid: this._guid,65 objects: Array.from(this._objects.values()).map(o => o._debugScopeState())66 };67 }68 _createChannel(base) {69 const channel = new Proxy(base, {70 get: (obj, prop) => {71 if (prop === 'debugScopeState') return params => this._connection.sendMessageToServer(this, prop, params, null);72 if (typeof prop === 'string') {73 const validator = scheme[paramsName(this._type, prop)];74 if (validator) {75 return params => {76 return this._wrapApiCall(apiZone => {77 const {78 stackTrace,79 csi,80 callCookie81 } = apiZone.reported ? {82 csi: undefined,83 callCookie: undefined,84 stackTrace: null85 } : apiZone;86 apiZone.reported = true;87 if (csi && stackTrace && stackTrace.apiName) csi.onApiCallBegin(renderCallWithParams(stackTrace.apiName, params), stackTrace, callCookie);88 return this._connection.sendMessageToServer(this, prop, validator(params, ''), stackTrace);89 });90 };91 }92 }93 return obj[prop];94 }95 });96 channel._object = this;97 return channel;98 }99 async _wrapApiCall(func, isInternal = false) {100 const logger = this._logger;101 const stack = (0, _stackTrace.captureRawStack)();102 const apiZone = _zones.zones.zoneData('apiZone', stack);103 if (apiZone) return func(apiZone);104 const stackTrace = (0, _stackTrace.captureStackTrace)(stack);105 if (isInternal) delete stackTrace.apiName;106 const csi = isInternal ? undefined : this._instrumentation;107 const callCookie = {};108 const {109 apiName,110 frameTexts111 } = stackTrace;112 try {113 logApiCall(logger, `=> ${apiName} started`, isInternal);114 const apiZone = {115 stackTrace,116 isInternal,117 reported: false,118 csi,119 callCookie120 };121 const result = await _zones.zones.run('apiZone', apiZone, async () => {122 return await func(apiZone);123 });124 csi === null || csi === void 0 ? void 0 : csi.onApiCallEnd(callCookie);125 logApiCall(logger, `<= ${apiName} succeeded`, isInternal);126 return result;127 } catch (e) {128 const innerError = (process.env.PWDEBUGIMPL || (0, _utils.isUnderTest)()) && e.stack ? '\n<inner error>\n' + e.stack : '';129 e.message = apiName + ': ' + e.message;130 e.stack = e.message + '\n' + frameTexts.join('\n') + innerError;131 csi === null || csi === void 0 ? void 0 : csi.onApiCallEnd(callCookie, e);132 logApiCall(logger, `<= ${apiName} failed`, isInternal);133 throw e;134 }135 }136 toJSON() {137 // Jest's expect library tries to print objects sometimes.138 // RPC objects can contain links to lots of other objects,139 // which can cause jest to crash. Let's help it out140 // by just returning the important values.141 return {142 _type: this._type,143 _guid: this._guid144 };145 }146}147exports.ChannelOwner = ChannelOwner;148function logApiCall(logger, message, isNested) {149 if (isNested) return;150 if (logger && logger.isEnabled('api', 'info')) logger.log('api', 'info', message, [], {151 color: 'cyan'152 });153 _debugLogger.debugLogger.log('api', message);154}155function paramsName(type, method) {156 return type + method[0].toUpperCase() + method.substring(1) + 'Params';157}158const paramsToRender = ['url', 'selector', 'text', 'key'];159function renderCallWithParams(apiName, params) {160 const paramsArray = [];161 if (params) {162 for (const name of paramsToRender) {163 if (params[name]) paramsArray.push(params[name]);164 }165 }166 const paramsText = paramsArray.length ? '(' + paramsArray.join(', ') + ')' : '';167 return apiName + paramsText;168}169const tChannel = name => {170 return (arg, path) => {171 if (arg._object instanceof ChannelOwner && (name === '*' || arg._object._type === name)) return {172 guid: arg._object._guid173 };174 throw new _validator.ValidationError(`${path}: expected ${name}`);175 };176};...
stackTrace.js
Source:stackTrace.js
...41const TEST_DIR_SRC = _path.default.resolve(CORE_DIR, '..', 'playwright-test');42const TEST_DIR_LIB = _path.default.resolve(CORE_DIR, '..', '@playwright', 'test');43const COVERAGE_PATH = _path.default.join(CORE_DIR, '..', '..', 'tests', 'config', 'coverage.js');44const WS_LIB = _path.default.relative(process.cwd(), _path.default.dirname(require.resolve('ws')));45function captureRawStack() {46 const stackTraceLimit = Error.stackTraceLimit;47 Error.stackTraceLimit = 30;48 const error = new Error();49 const stack = error.stack;50 Error.stackTraceLimit = stackTraceLimit;51 return stack;52}53function isInternalFileName(file, functionName) {54 // Node 16+ has node:internal.55 if (file.startsWith('internal') || file.startsWith('node:')) return true; // EventEmitter.emit has 'events.js' file.56 if (file === 'events.js' && functionName !== null && functionName !== void 0 && functionName.endsWith('emit')) return true; // Node 1257 if (file === '_stream_readable.js' || file === '_stream_writable.js') return true;58 if (file.startsWith(WS_LIB)) return true;59 return false;60}61function captureStackTrace(rawStack) {62 const stack = rawStack || captureRawStack();63 const isTesting = (0, _utils.isUnderTest)();64 let parsedFrames = stack.split('\n').map(line => {65 const frame = stackUtils.parseLine(line);66 if (!frame || !frame.file) return null;67 if (isInternalFileName(frame.file, frame.function)) return null; // Workaround for https://github.com/tapjs/stack-utils/issues/6068 let fileName;69 if (frame.file.startsWith('file://')) fileName = new URL(frame.file).pathname;else fileName = _path.default.resolve(process.cwd(), frame.file);70 if (isTesting && fileName.includes(COVERAGE_PATH)) return null;71 const inCore = fileName.startsWith(CORE_LIB) || fileName.startsWith(CORE_SRC);72 const parsed = {73 frame: {74 file: fileName,75 line: frame.line,76 column: frame.column,...
zones.js
Source:zones.js
1"use strict";2Object.defineProperty(exports, "__esModule", {3 value: true4});5exports.zones = void 0;6var _stackTrace = require("./stackTrace");7/**8 * Copyright (c) Microsoft Corporation.9 *10 * Licensed under the Apache License, Version 2.0 (the "License");11 * you may not use this file except in compliance with the License.12 * You may obtain a copy of the License at13 *14 * http://www.apache.org/licenses/LICENSE-2.015 *16 * Unless required by applicable law or agreed to in writing, software17 * distributed under the License is distributed on an "AS IS" BASIS,18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.19 * See the License for the specific language governing permissions and20 * limitations under the License.21 */22class ZoneManager {23 constructor() {24 this.lastZoneId = 0;25 this._zones = new Map();26 }27 async run(type, data, func) {28 const zone = new Zone(this, ++this.lastZoneId, type, data);29 this._zones.set(zone.id, zone);30 return zone.run(func);31 }32 zoneData(type, rawStack) {33 const stack = rawStack || (0, _stackTrace.captureRawStack)();34 for (const line of stack.split('\n')) {35 const index = line.indexOf('__PWZONE__[');36 if (index !== -1) {37 const zoneId = +line.substring(index + '__PWZONE__['.length, line.indexOf(']', index));38 const zone = this._zones.get(zoneId);39 if (zone && zone.type === type) return zone.data;40 }41 }42 return null;43 }44}45class Zone {46 constructor(manager, id, type, data) {47 this._manager = void 0;48 this.id = void 0;49 this.type = void 0;50 this.data = {};51 this._manager = manager;52 this.id = id;53 this.type = type;54 this.data = data;55 }56 async run(func) {57 Object.defineProperty(func, 'name', {58 value: `__PWZONE__[${this.id}]`59 });60 try {61 return await func();62 } finally {63 this._manager._zones.delete(this.id);64 }65 }66}67const zones = new ZoneManager();...
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright['chromium'].launch();4 const page = await browser.newPage();5 const stack = await page.evaluate(() => {6 return window['playwright'].captureRawStack();7 });8 console.log(stack);9 await browser.close();10})();
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright.chromium.launch();4 const page = await browser.newPage();5 const stack = await page.evaluate(() => {6 return window.__playwright__internal__captureRawStack();7 });8 console.log(stack);9 await browser.close();10})();11 {12 }13const playwright = require('playwright');14(async () => {15 const browser = await playwright.chromium.launch();16 const page = await browser.newPage();17 const stack = await page.evaluate(() => {18 return window.__playwright__internal__captureRawStack();19 });20 console.log(stack);21 await browser.close();22})();23 {24 }25const playwright = require('playwright');26(async () => {27 const browser = await playwright.chromium.launch();28 const page = await browser.newPage();29 const stack = await page.evaluate(() => {30 return window.__playwright__internal__captureRawStack();31 });
Using AI Code Generation
1const { captureRawStack } = require('playwright/lib/internal/stacks');2const stack = captureRawStack(1);3console.log(stack);4const { captureStack } = require('playwright/lib/internal/stacks');5const stack = captureStack(1);6console.log(stack);7const { parseStack } = require('playwright/lib/internal/stacks');8const stack = parseStack('Error: test');9console.log(stack);10const { parseStackTrace } = require('playwright/lib/internal/stacks');11const stack = parseStackTrace('Error: test');12console.log(stack);13const { rewriteErrorMessage } = require('playwright/lib/internal/stacks');14const stack = rewriteErrorMessage('Error: test');15console.log(stack);16const { rewriteStackTrace } = require('playwright/lib/internal/stacks');17const stack = rewriteStackTrace('Error: test');18console.log(stack);19const { serializeError } = require('playwright/lib/internal/stacks');20const stack = serializeError('Error: test');21console.log(stack);22const { stackUtils } = require('playwright/lib/internal/stacks');23const stack = stackUtils.captureString(1);24console.log(stack);25const { stackUtils } = require('playwright/lib/internal/stacks');26const stack = stackUtils.captureString(1);27console.log(stack);28const { stackUtils } = require('playwright/lib/internal/stacks');29const stack = stackUtils.captureString(1);30console.log(stack);31const { stackUtils } = require('playwright/lib/internal/stacks');32const stack = stackUtils.captureString(1);33console.log(stack);34const { stackUtils } = require('playwright/lib/internal/stacks');35const stack = stackUtils.captureString(1);
Using AI Code Generation
1const stack = require('playwright/lib/server/crBrowser').captureRawStack();2console.log(stack);3const stack = new Error().stack;4console.log(stack);5 at Object.<anonymous> (/home/saransh/Playwright/test.js:2:24)6 at Module._compile (internal/modules/cjs/loader.js:1137:30)7 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)8 at Module.load (internal/modules/cjs/loader.js:985:32)9 at Function.Module._load (internal/modules/cjs/loader.js:878:14)10 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)11 at Object.<anonymous> (/home/saransh/Playwright/test.js:7:24)12 at Module._compile (internal/modules/cjs/loader.js:1137:30)13 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)14 at Module.load (internal/modules/cjs/loader.js:985:32)15 at Function.Module._load (internal/modules/cjs/loader.js:878:14)16 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)17Difference between console.log() and console.error() in Node.js18Difference between console.warn() and console.error() in Node.js19Difference between console.log() and console.info() in Node.js
Using AI Code Generation
1const stack = await playwright.chromium._impl._browserContext._browser._defaultContext._delegate._delegate._delegate._delegate._delegate._delegate._delegate._delegate._delegate.captureRawStack(false);2console.log(stack);3{4at Object.<anonymous> (/Users/abc/Playwright/playwright/test.js:1:1)5at Module._compile (internal/modules/cjs/loader.js:1138:30)6at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)7at Module.load (internal/modules/cjs/loader.js:985:32)8at Function.Module._load (internal/modules/cjs/loader.js:878:14)9at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)10}
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!!