How to use captureRawStack method in Playwright Internal

Best JavaScript code snippet using playwright-internal

channelOwner.js

Source:channelOwner.js Github

copy

Full Screen

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};...

Full Screen

Full Screen

stackTrace.js

Source:stackTrace.js Github

copy

Full Screen

...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,...

Full Screen

Full Screen

zones.js

Source:zones.js Github

copy

Full Screen

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();...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

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})();

Full Screen

Using AI Code Generation

copy

Full Screen

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 });

Full Screen

Using AI Code Generation

copy

Full Screen

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);

Full Screen

Using AI Code Generation

copy

Full Screen

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

Full Screen

Using AI Code Generation

copy

Full Screen

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}

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