diff --git a/packages/isomorphic/protocolMetainfo.ts b/packages/isomorphic/protocolMetainfo.ts index ee741421603bd..51ab50de3903e 100644 --- a/packages/isomorphic/protocolMetainfo.ts +++ b/packages/isomorphic/protocolMetainfo.ts @@ -16,7 +16,7 @@ // This file is generated by generate_channels.js, do not edit manually. -export type MethodMetainfo = { internal?: boolean, title?: string, slowMo?: boolean, snapshot?: boolean, pause?: boolean, isAutoWaiting?: boolean, input?: boolean, group?: string }; +export type MethodMetainfo = { internal?: boolean, title?: string, slowMo?: boolean, snapshot?: boolean, pause?: boolean, isAutoWaiting?: boolean, input?: boolean, potentiallyClosesScope?: boolean, group?: string }; export const methodMetainfo = new Map([ ['Android.devices', { internal: true, }], @@ -51,22 +51,22 @@ export const methodMetainfo = new Map([ ['APIRequestContext.fetchLog', { internal: true, }], ['APIRequestContext.storageState', { title: 'Get storage state', group: 'configuration', }], ['APIRequestContext.disposeAPIResponse', { internal: true, }], - ['APIRequestContext.dispose', { internal: true, }], + ['APIRequestContext.dispose', { internal: true, potentiallyClosesScope: true, }], ['Artifact.pathAfterFinished', { internal: true, }], ['Artifact.saveAs', { internal: true, }], ['Artifact.saveAsStream', { internal: true, }], ['Artifact.failure', { internal: true, }], ['Artifact.stream', { internal: true, }], ['Artifact.cancel', { internal: true, }], - ['Artifact.delete', { internal: true, }], + ['Artifact.delete', { internal: true, potentiallyClosesScope: true, }], ['Stream.read', { internal: true, }], ['Stream.close', { internal: true, }], ['WritableStream.write', { internal: true, }], ['WritableStream.close', { internal: true, }], ['Browser.startServer', { title: 'Start server', }], ['Browser.stopServer', { title: 'Stop server', }], - ['Browser.close', { title: 'Close browser', pause: true, }], - ['Browser.killForTests', { internal: true, }], + ['Browser.close', { title: 'Close browser', pause: true, potentiallyClosesScope: true, }], + ['Browser.killForTests', { internal: true, potentiallyClosesScope: true, }], ['Browser.defaultUserAgentForTest', { internal: true, }], ['Browser.newContext', { title: 'Create context', }], ['Browser.newContextForReuse', { internal: true, }], @@ -78,7 +78,7 @@ export const methodMetainfo = new Map([ ['BrowserContext.addInitScript', { title: 'Add init script', group: 'configuration', }], ['BrowserContext.clearCookies', { title: 'Clear cookies', group: 'configuration', }], ['BrowserContext.clearPermissions', { title: 'Clear permissions', group: 'configuration', }], - ['BrowserContext.close', { title: 'Close context', pause: true, }], + ['BrowserContext.close', { title: 'Close context', pause: true, potentiallyClosesScope: true, }], ['BrowserContext.cookies', { title: 'Get cookies', group: 'getter', }], ['BrowserContext.exposeBinding', { title: 'Expose binding', group: 'configuration', }], ['BrowserContext.grantPermissions', { title: 'Grant permissions', group: 'configuration', }], @@ -111,7 +111,7 @@ export const methodMetainfo = new Map([ ['BrowserType.launchPersistentContext', { title: 'Launch persistent context', }], ['BrowserType.connectOverCDP', { title: 'Connect over CDP', }], ['BrowserType.connectToWorker', { title: 'Connect to worker', }], - ['Disposable.dispose', { internal: true, }], + ['Disposable.dispose', { internal: true, potentiallyClosesScope: true, }], ['Electron.launch', { title: 'Launch electron', }], ['ElectronApplication.browserWindow', { internal: true, }], ['ElectronApplication.evaluateExpression', { title: 'Evaluate', }], @@ -124,7 +124,7 @@ export const methodMetainfo = new Map([ ['Frame.ariaSnapshot', { title: 'Aria snapshot', group: 'getter', }], ['Frame.blur', { title: 'Blur', slowMo: true, snapshot: true, pause: true, }], ['Frame.check', { title: 'Check', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true, }], - ['Frame.click', { title: 'Click', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true, }], + ['Frame.click', { title: 'Click', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true, potentiallyClosesScope: true, }], ['Frame.content', { title: 'Get content', snapshot: true, pause: true, }], ['Frame.dragAndDrop', { title: 'Drag and drop', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true, }], ['Frame.drop', { title: 'Drop files or data onto an element', slowMo: true, snapshot: true, pause: true, input: true, isAutoWaiting: true, }], @@ -166,8 +166,8 @@ export const methodMetainfo = new Map([ ['Frame.waitForFunction', { title: 'Wait for function', snapshot: true, pause: true, }], ['Frame.waitForSelector', { title: 'Wait for selector', snapshot: true, }], ['Frame.expect', { title: 'Expect "{expression}"', snapshot: true, pause: true, }], - ['JSHandle.dispose', { internal: true, }], - ['ElementHandle.dispose', { internal: true, }], + ['JSHandle.dispose', { internal: true, potentiallyClosesScope: true, }], + ['ElementHandle.dispose', { internal: true, potentiallyClosesScope: true, }], ['JSHandle.evaluateExpression', { title: 'Evaluate', snapshot: true, pause: true, }], ['ElementHandle.evaluateExpression', { title: 'Evaluate', snapshot: true, pause: true, }], ['JSHandle.evaluateExpressionHandle', { title: 'Evaluate', snapshot: true, pause: true, }], @@ -243,7 +243,7 @@ export const methodMetainfo = new Map([ ['Response.httpVersion', { internal: true, }], ['Response.sizes', { internal: true, }], ['Page.addInitScript', { title: 'Add init script', group: 'configuration', }], - ['Page.close', { title: 'Close page', pause: true, }], + ['Page.close', { title: 'Close page', pause: true, potentiallyClosesScope: true, }], ['Page.runBeforeUnload', { title: 'Run beforeunload', pause: true, }], ['Page.clearConsoleMessages', { title: 'Clear console messages', }], ['Page.consoleMessages', { title: 'Get console messages', group: 'getter', }], @@ -312,7 +312,7 @@ export const methodMetainfo = new Map([ ['JsonPipe.send', { internal: true, }], ['JsonPipe.close', { internal: true, }], ['CDPSession.send', { title: 'Send CDP command', group: 'configuration', }], - ['CDPSession.detach', { title: 'Detach CDP session', group: 'configuration', }], + ['CDPSession.detach', { title: 'Detach CDP session', potentiallyClosesScope: true, group: 'configuration', }], ['BindingCall.reject', { internal: true, }], ['BindingCall.resolve', { internal: true, }], ['Debugger.requestPause', { title: 'Pause on next call', group: 'configuration', }], @@ -329,7 +329,7 @@ export const methodMetainfo = new Map([ ['Tracing.tracingStop', { title: 'Stop tracing', group: 'configuration', }], ['Tracing.harStart', { internal: true, }], ['Tracing.harExport', { internal: true, }], - ['Worker.disconnect', { title: 'Disconnect from worker', }], + ['Worker.disconnect', { title: 'Disconnect from worker', potentiallyClosesScope: true, }], ['Worker.evaluateExpression', { title: 'Evaluate', }], ['Worker.evaluateExpressionHandle', { title: 'Evaluate', }], ['Worker.updateSubscription', { internal: true, }] diff --git a/packages/playwright-core/src/server/dispatchers/artifactDispatcher.ts b/packages/playwright-core/src/server/dispatchers/artifactDispatcher.ts index bb17c2bae36f5..ff4e0f868bd60 100644 --- a/packages/playwright-core/src/server/dispatchers/artifactDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/artifactDispatcher.ts @@ -109,7 +109,6 @@ export class ArtifactDispatcher extends Dispatcher { - progress.metadata.potentiallyClosesScope = true; await this._object.delete(progress); this._dispose(); } diff --git a/packages/playwright-core/src/server/dispatchers/browserContextDispatcher.ts b/packages/playwright-core/src/server/dispatchers/browserContextDispatcher.ts index fb03e1713f5cf..1c8f3f58941fa 100644 --- a/packages/playwright-core/src/server/dispatchers/browserContextDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/browserContextDispatcher.ts @@ -344,7 +344,6 @@ export class BrowserContextDispatcher extends Dispatcher { - progress.metadata.potentiallyClosesScope = true; await this._context.close(progress, params); } diff --git a/packages/playwright-core/src/server/dispatchers/browserDispatcher.ts b/packages/playwright-core/src/server/dispatchers/browserDispatcher.ts index e72853efc7adc..6cc9b81cc1c57 100644 --- a/packages/playwright-core/src/server/dispatchers/browserDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/browserDispatcher.ts @@ -96,14 +96,12 @@ export class BrowserDispatcher extends Dispatcher { if (this._options.ignoreStopAndKill) return; - progress.metadata.potentiallyClosesScope = true; await this._object.close(progress, params); } async killForTests(params: channels.BrowserKillForTestsParams, progress: Progress): Promise { if (this._options.ignoreStopAndKill) return; - progress.metadata.potentiallyClosesScope = true; await this._object.killForTests(progress); } diff --git a/packages/playwright-core/src/server/dispatchers/cdpSessionDispatcher.ts b/packages/playwright-core/src/server/dispatchers/cdpSessionDispatcher.ts index 70da4144a277d..7a89312d2fda0 100644 --- a/packages/playwright-core/src/server/dispatchers/cdpSessionDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/cdpSessionDispatcher.ts @@ -39,7 +39,6 @@ export class CDPSessionDispatcher extends Dispatcher { - progress.metadata.potentiallyClosesScope = true; await this._object.detach(progress); } } diff --git a/packages/playwright-core/src/server/dispatchers/dispatcher.ts b/packages/playwright-core/src/server/dispatchers/dispatcher.ts index e065137eebe1f..7e91fc1e7f7e9 100644 --- a/packages/playwright-core/src/server/dispatchers/dispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/dispatcher.ts @@ -145,7 +145,8 @@ export class Dispatcher {}); } this._onDispose(); diff --git a/packages/playwright-core/src/server/dispatchers/disposableDispatcher.ts b/packages/playwright-core/src/server/dispatchers/disposableDispatcher.ts index 5238769a2b6a5..c60bb45f149bc 100644 --- a/packages/playwright-core/src/server/dispatchers/disposableDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/disposableDispatcher.ts @@ -29,7 +29,6 @@ export class DisposableDispatcher extends Dispatcher { - progress.metadata.potentiallyClosesScope = true; return await this._frame.click(progress, params.selector, params); } @@ -274,7 +273,6 @@ export class FrameDispatcher extends Dispatcher { - progress.metadata.potentiallyClosesScope = true; let expectedValue = params.expectedValue ? parseArgument(params.expectedValue) : undefined; if (params.expression === 'to.match.aria' && expectedValue) expectedValue = parseAriaSnapshotUnsafe(yaml, expectedValue); diff --git a/packages/playwright-core/src/server/dispatchers/jsHandleDispatcher.ts b/packages/playwright-core/src/server/dispatchers/jsHandleDispatcher.ts index 8b494360a9d5b..0155587d1a238 100644 --- a/packages/playwright-core/src/server/dispatchers/jsHandleDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/jsHandleDispatcher.ts @@ -74,7 +74,6 @@ export class JSHandleDispatcher { - progress.metadata.potentiallyClosesScope = true; await progress.race(this._object.dispose(params)); this._dispose(); } diff --git a/packages/playwright-core/src/server/dispatchers/pageDispatcher.ts b/packages/playwright-core/src/server/dispatchers/pageDispatcher.ts index f6c793aba45c1..02c9da04dd207 100644 --- a/packages/playwright-core/src/server/dispatchers/pageDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/pageDispatcher.ts @@ -250,7 +250,6 @@ export class PageDispatcher extends Dispatcher { - progress.metadata.potentiallyClosesScope = true; await this._page.close(progress, params); } @@ -522,7 +521,6 @@ export class WorkerDispatcher extends Dispatcher { - progress.metadata.potentiallyClosesScope = true; await this._object.disconnect(progress, params); } diff --git a/packages/protocol/spec/api.yml b/packages/protocol/spec/api.yml index 2f3c24dd1e041..9f293a20c459b 100644 --- a/packages/protocol/spec/api.yml +++ b/packages/protocol/spec/api.yml @@ -87,6 +87,8 @@ APIRequestContext: internal: true parameters: reason: string? + flags: + potentiallyClosesScope: true APIResponse: type: object diff --git a/packages/protocol/spec/artifact.yml b/packages/protocol/spec/artifact.yml index a7bafe487447b..e33531ab4223f 100644 --- a/packages/protocol/spec/artifact.yml +++ b/packages/protocol/spec/artifact.yml @@ -52,6 +52,8 @@ Artifact: delete: internal: true + flags: + potentiallyClosesScope: true Stream: type: interface diff --git a/packages/protocol/spec/browser.yml b/packages/protocol/spec/browser.yml index bc0b86216513e..d3c292b68fff8 100644 --- a/packages/protocol/spec/browser.yml +++ b/packages/protocol/spec/browser.yml @@ -47,9 +47,12 @@ Browser: reason: string? flags: pause: true + potentiallyClosesScope: true killForTests: internal: true + flags: + potentiallyClosesScope: true defaultUserAgentForTest: internal: true diff --git a/packages/protocol/spec/browserContext.yml b/packages/protocol/spec/browserContext.yml index 411459d519416..e215c5411d85a 100644 --- a/packages/protocol/spec/browserContext.yml +++ b/packages/protocol/spec/browserContext.yml @@ -66,6 +66,7 @@ BrowserContext: reason: string? flags: pause: true + potentiallyClosesScope: true cookies: title: Get cookies diff --git a/packages/protocol/spec/core.yml b/packages/protocol/spec/core.yml index b97078ea769ac..7ede28aaae827 100644 --- a/packages/protocol/spec/core.yml +++ b/packages/protocol/spec/core.yml @@ -49,6 +49,8 @@ Disposable: dispose: internal: true + flags: + potentiallyClosesScope: true WaitInfo: type: object diff --git a/packages/protocol/spec/frame.yml b/packages/protocol/spec/frame.yml index b3f0f8426cbd0..e4c8ef0ffd939 100644 --- a/packages/protocol/spec/frame.yml +++ b/packages/protocol/spec/frame.yml @@ -155,6 +155,7 @@ Frame: pause: true input: true isAutoWaiting: true + potentiallyClosesScope: true content: title: Get content diff --git a/packages/protocol/spec/handles.yml b/packages/protocol/spec/handles.yml index edab0387c63d6..1a4a77fb4c693 100644 --- a/packages/protocol/spec/handles.yml +++ b/packages/protocol/spec/handles.yml @@ -22,6 +22,8 @@ JSHandle: dispose: internal: true + flags: + potentiallyClosesScope: true evaluateExpression: title: Evaluate diff --git a/packages/protocol/spec/page.yml b/packages/protocol/spec/page.yml index 841db3314da5a..40937012762bd 100644 --- a/packages/protocol/spec/page.yml +++ b/packages/protocol/spec/page.yml @@ -42,6 +42,7 @@ Page: reason: string? flags: pause: true + potentiallyClosesScope: true runBeforeUnload: title: Run beforeunload diff --git a/packages/protocol/spec/playwright.yml b/packages/protocol/spec/playwright.yml index 287f3714d4076..fdf4436609825 100644 --- a/packages/protocol/spec/playwright.yml +++ b/packages/protocol/spec/playwright.yml @@ -396,6 +396,8 @@ CDPSession: detach: title: Detach CDP session group: configuration + flags: + potentiallyClosesScope: true events: diff --git a/packages/protocol/spec/worker.yml b/packages/protocol/spec/worker.yml index 55dda2f7bf7f0..9cf07d9365b2b 100644 --- a/packages/protocol/spec/worker.yml +++ b/packages/protocol/spec/worker.yml @@ -25,7 +25,7 @@ Worker: parameters: reason: string? flags: - pausesBeforeAction: true + potentiallyClosesScope: true evaluateExpression: title: Evaluate diff --git a/packages/protocol/src/callMetadata.d.ts b/packages/protocol/src/callMetadata.d.ts index ed9d3fd768b49..9fea3cea2a7be 100644 --- a/packages/protocol/src/callMetadata.d.ts +++ b/packages/protocol/src/callMetadata.d.ts @@ -38,5 +38,4 @@ export type CallMetadata = { objectId?: string; pageId?: string; frameId?: string; - potentiallyClosesScope?: boolean; }; diff --git a/utils/generate_channels.js b/utils/generate_channels.js index 3d03cb485768c..cd33d24177579 100755 --- a/utils/generate_channels.js +++ b/utils/generate_channels.js @@ -321,7 +321,8 @@ for (const [name, item] of Object.entries(protocol)) { const pauseProp = method.flags?.pause ? ` pause: ${method.flags.pause},` : ''; const inputProp = method.flags?.input ? ` input: ${method.flags.input},` : ''; const isAutoWaitingProp = method.flags?.isAutoWaiting ? ` isAutoWaiting: ${method.flags.isAutoWaiting},` : ''; - methodMetainfo.push(`['${className + '.' + methodName}', {${internalProp}${titleProp}${slowMoProp}${snapshotProp}${pauseProp}${inputProp}${isAutoWaitingProp}${groupProp} }]`); + const potentiallyClosesScopeProp = method.flags?.potentiallyClosesScope ? ` potentiallyClosesScope: ${method.flags.potentiallyClosesScope},` : ''; + methodMetainfo.push(`['${className + '.' + methodName}', {${internalProp}${titleProp}${slowMoProp}${snapshotProp}${pauseProp}${inputProp}${isAutoWaitingProp}${potentiallyClosesScopeProp}${groupProp} }]`); } const parameters = objectType(method.parameters || {}, ''); @@ -365,7 +366,7 @@ for (const [name, item] of Object.entries(protocol)) { } } -metainfo_ts.push(`export type MethodMetainfo = { internal?: boolean, title?: string, slowMo?: boolean, snapshot?: boolean, pause?: boolean, isAutoWaiting?: boolean, input?: boolean, group?: string }; +metainfo_ts.push(`export type MethodMetainfo = { internal?: boolean, title?: string, slowMo?: boolean, snapshot?: boolean, pause?: boolean, isAutoWaiting?: boolean, input?: boolean, potentiallyClosesScope?: boolean, group?: string }; export const methodMetainfo = new Map([ ${methodMetainfo.join(`,\n `)}