diff --git a/packages/playwright-core/src/client/clientHelper.ts b/packages/playwright-core/src/client/clientHelper.ts index f2a617ea09..540230a4fc 100644 --- a/packages/playwright-core/src/client/clientHelper.ts +++ b/packages/playwright-core/src/client/clientHelper.ts @@ -43,8 +43,12 @@ export async function evaluationScript(fun: Function | string | { path?: string, if (fun.path !== undefined) { let source = await fs.promises.readFile(fun.path, 'utf8'); if (addSourceUrl) - source += '\n//# sourceURL=' + fun.path.replace(/\n/g, ''); + source = addSourceUrlToScript(source, fun.path); return source; } throw new Error('Either path or content property must be present'); } + +export function addSourceUrlToScript(source: string, path: string): string { + return `${source}\n//# sourceURL=${path.replace(/\n/g, '')}`; +} diff --git a/packages/playwright-core/src/client/frame.ts b/packages/playwright-core/src/client/frame.ts index 6845d8be6b..582490d0af 100644 --- a/packages/playwright-core/src/client/frame.ts +++ b/packages/playwright-core/src/client/frame.ts @@ -35,6 +35,7 @@ import { kLifecycleEvents } from './types'; import { urlMatches } from '../utils/network'; import type * as api from '../../types/types'; import type * as structs from '../../types/structs'; +import { addSourceUrlToScript } from './clientHelper'; export type WaitForNavigationOptions = { timeout?: number, @@ -266,7 +267,7 @@ export class Frame extends ChannelOwner implements api.Fr const copy = { ...options }; if (copy.path) { copy.content = (await fs.promises.readFile(copy.path)).toString(); - copy.content += '//# sourceURL=' + copy.path.replace(/\n/g, ''); + copy.content = addSourceUrlToScript(copy.content, copy.path); } return ElementHandle.from((await this._channel.addScriptTag({ ...copy })).element); }