diff --git a/src/server/chromium/crExecutionContext.ts b/src/server/chromium/crExecutionContext.ts index 6543d613ab..9202230774 100644 --- a/src/server/chromium/crExecutionContext.ts +++ b/src/server/chromium/crExecutionContext.ts @@ -19,7 +19,6 @@ import { CRSession } from './crConnection'; import { getExceptionMessage, releaseObject } from './crProtocolHelper'; import { Protocol } from './protocol'; import * as js from '../javascript'; -import * as sourceMap from '../../utils/sourceMap'; import { rewriteErrorMessage } from '../../utils/stackTrace'; import { parseEvaluationResultValue } from '../common/utilityScriptSerializers'; @@ -34,7 +33,7 @@ export class CRExecutionContext implements js.ExecutionContextDelegate { async rawEvaluate(expression: string): Promise { const { exceptionDetails, result: remoteObject } = await this._client.send('Runtime.evaluate', { - expression: sourceMap.ensureSourceUrl(expression), + expression, contextId: this._contextId, }).catch(rewriteError); if (exceptionDetails) diff --git a/src/server/chromium/crPage.ts b/src/server/chromium/crPage.ts index 88b20d084f..b4dbb96bf0 100644 --- a/src/server/chromium/crPage.ts +++ b/src/server/chromium/crPage.ts @@ -35,7 +35,6 @@ import { CRPDF } from './crPdf'; import { CRBrowserContext } from './crBrowser'; import * as types from '../types'; import { ConsoleMessage } from '../console'; -import * as sourceMap from '../../utils/sourceMap'; import { rewriteErrorMessage } from '../../utils/stackTrace'; import { assert, headersArrayToObject, createGuid } from '../../utils/utils'; import { VideoRecorder } from './videoRecorder'; @@ -425,7 +424,7 @@ class FrameSession { lifecycleEventsEnabled = this._client.send('Page.setLifecycleEventsEnabled', { enabled: true }), this._client.send('Runtime.enable', {}), this._client.send('Page.addScriptToEvaluateOnNewDocument', { - source: sourceMap.generateSourceUrl(), + source: '', worldName: UTILITY_WORLD_NAME, }), this._networkManager.initialize(), diff --git a/src/server/firefox/ffExecutionContext.ts b/src/server/firefox/ffExecutionContext.ts index cd3c89a406..3d2e20d98d 100644 --- a/src/server/firefox/ffExecutionContext.ts +++ b/src/server/firefox/ffExecutionContext.ts @@ -18,7 +18,6 @@ import * as js from '../javascript'; import { FFSession } from './ffConnection'; import { Protocol } from './protocol'; -import * as sourceMap from '../../utils/sourceMap'; import { rewriteErrorMessage } from '../../utils/stackTrace'; import { parseEvaluationResultValue } from '../common/utilityScriptSerializers'; @@ -33,7 +32,7 @@ export class FFExecutionContext implements js.ExecutionContextDelegate { async rawEvaluate(expression: string): Promise { const payload = await this._session.send('Runtime.evaluate', { - expression: sourceMap.ensureSourceUrl(expression), + expression, returnByValue: false, executionContextId: this._executionContextId, }).catch(rewriteError); diff --git a/src/server/javascript.ts b/src/server/javascript.ts index 298c086a78..0c608206a6 100644 --- a/src/server/javascript.ts +++ b/src/server/javascript.ts @@ -140,7 +140,7 @@ export class JSHandle { if (!this._objectId) return this._value; const utilityScript = await this._context.utilityScript(); - const script = `(utilityScript, ...args) => utilityScript.jsonValue(...args)` + sourceMap.generateSourceUrl(); + const script = `(utilityScript, ...args) => utilityScript.jsonValue(...args)`; return this._context._delegate.evaluateWithArguments(script, true, utilityScript, [true], [this._objectId]); } @@ -177,8 +177,8 @@ export async function evaluate(context: ExecutionContext, returnByValue: boolean export async function evaluateExpression(context: ExecutionContext, returnByValue: boolean, expression: string, isFunction: boolean, ...args: any[]): Promise { const utilityScript = await context.utilityScript(); if (!isFunction) { - const script = `(utilityScript, ...args) => utilityScript.evaluate(...args)` + sourceMap.generateSourceUrl(); - return context._delegate.evaluateWithArguments(script, returnByValue, utilityScript, [returnByValue, sourceMap.ensureSourceUrl(expression)], []); + const script = `(utilityScript, ...args) => utilityScript.evaluate(...args)`; + return context._delegate.evaluateWithArguments(script, returnByValue, utilityScript, [returnByValue, expression], []); } let functionText = expression; @@ -232,7 +232,7 @@ export async function evaluateExpression(context: ExecutionContext, returnByValu // See UtilityScript for arguments. const utilityScriptValues = [returnByValue, functionText, args.length, ...args]; - const script = `(utilityScript, ...args) => utilityScript.callFunction(...args)` + sourceMap.generateSourceUrl(); + const script = `(utilityScript, ...args) => utilityScript.callFunction(...args)`; try { return await context._delegate.evaluateWithArguments(script, returnByValue, utilityScript, utilityScriptValues, utilityScriptObjectIds); } finally { diff --git a/src/server/webkit/wkExecutionContext.ts b/src/server/webkit/wkExecutionContext.ts index 0d636998d0..ff5f36e2a3 100644 --- a/src/server/webkit/wkExecutionContext.ts +++ b/src/server/webkit/wkExecutionContext.ts @@ -19,7 +19,6 @@ import { WKSession, isSwappedOutError } from './wkConnection'; import { Protocol } from './protocol'; import * as js from '../javascript'; import { parseEvaluationResultValue } from '../common/utilityScriptSerializers'; -import * as sourceMap from '../../utils/sourceMap'; export class WKExecutionContext implements js.ExecutionContextDelegate { private readonly _session: WKSession; @@ -42,7 +41,7 @@ export class WKExecutionContext implements js.ExecutionContextDelegate { async rawEvaluate(expression: string): Promise { try { const response = await this._session.send('Runtime.evaluate', { - expression: sourceMap.ensureSourceUrl(expression), + expression, contextId: this._contextId, returnByValue: false }); @@ -96,7 +95,7 @@ export class WKExecutionContext implements js.ExecutionContextDelegate { private async _returnObjectByValue(utilityScript: js.JSHandle, objectId: Protocol.Runtime.RemoteObjectId): Promise { try { const serializeResponse = await this._session.send('Runtime.callFunctionOn', { - functionDeclaration: 'object => object' + sourceMap.generateSourceUrl(), + functionDeclaration: 'object => object', objectId: utilityScript._objectId!, arguments: [ { objectId } ], returnByValue: true diff --git a/src/utils/sourceMap.ts b/src/utils/sourceMap.ts index 3237a82385..ff4d28b7ba 100644 --- a/src/utils/sourceMap.ts +++ b/src/utils/sourceMap.ts @@ -24,23 +24,11 @@ type Position = { column: number; }; -let sourceUrlCounter = 0; -const playwrightSourceUrlPrefix = '__playwright_evaluation_script__'; -const sourceUrlRegex = /^[\040\t]*\/\/[@#] sourceURL=\s*(\S*?)\s*$/m; - -export function ensureSourceUrl(expression: string): string { - return sourceUrlRegex.test(expression) ? expression : expression + generateSourceUrl(); -} - export async function generateSourceMapUrl(functionText: string, generatedText: string): Promise { if (!isDebugMode()) return ''; const sourceMapUrl = await innerGenerateSourceMapUrl(functionText, generatedText); - return sourceMapUrl || generateSourceUrl(); -} - -export function generateSourceUrl(): string { - return isDebugMode() ? `\n//# sourceURL=${playwrightSourceUrlPrefix}${sourceUrlCounter++}\n` : ''; + return sourceMapUrl || ''; } async function innerGenerateSourceMapUrl(functionText: string, generatedText: string): Promise {