From 29fd2df124e19541d4a86f3ec277ece821b835dd Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Thu, 12 Dec 2024 08:21:53 -0800 Subject: [PATCH] chore: send aria snapshot to the debug controller (#33969) --- packages/playwright-core/src/protocol/validator.ts | 1 + packages/playwright-core/src/server/debugController.ts | 2 +- .../src/server/dispatchers/debugControllerDispatcher.ts | 4 ++-- packages/protocol/src/channels.ts | 1 + packages/protocol/src/protocol.yml | 1 + tests/library/debug-controller.spec.ts | 2 ++ 6 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/playwright-core/src/protocol/validator.ts b/packages/playwright-core/src/protocol/validator.ts index 7fe92a7947c71..f4db833e02387 100644 --- a/packages/playwright-core/src/protocol/validator.ts +++ b/packages/playwright-core/src/protocol/validator.ts @@ -385,6 +385,7 @@ scheme.DebugControllerInitializer = tOptional(tObject({})); scheme.DebugControllerInspectRequestedEvent = tObject({ selector: tString, locator: tString, + ariaSnapshot: tString, }); scheme.DebugControllerSetModeRequestedEvent = tObject({ mode: tString, diff --git a/packages/playwright-core/src/server/debugController.ts b/packages/playwright-core/src/server/debugController.ts index 251dce7e037bd..8878ecb59cbe5 100644 --- a/packages/playwright-core/src/server/debugController.ts +++ b/packages/playwright-core/src/server/debugController.ts @@ -228,7 +228,7 @@ class InspectingRecorderApp extends EmptyRecorderApp { override async elementPicked(elementInfo: ElementInfo): Promise { const locator: string = asLocator(this._debugController._sdkLanguage, elementInfo.selector); - this._debugController.emit(DebugController.Events.InspectRequested, { selector: elementInfo.selector, locator }); + this._debugController.emit(DebugController.Events.InspectRequested, { selector: elementInfo.selector, locator, ariaSnapshot: elementInfo.ariaSnapshot }); } override async setSources(sources: Source[]): Promise { diff --git a/packages/playwright-core/src/server/dispatchers/debugControllerDispatcher.ts b/packages/playwright-core/src/server/dispatchers/debugControllerDispatcher.ts index 77d7b503abfe4..fc722d1bd33cc 100644 --- a/packages/playwright-core/src/server/dispatchers/debugControllerDispatcher.ts +++ b/packages/playwright-core/src/server/dispatchers/debugControllerDispatcher.ts @@ -32,8 +32,8 @@ export class DebugControllerDispatcher extends Dispatcher { this._dispatchEvent('stateChanged', params); }), - eventsHelper.addEventListener(this._object, DebugController.Events.InspectRequested, ({ selector, locator }) => { - this._dispatchEvent('inspectRequested', { selector, locator }); + eventsHelper.addEventListener(this._object, DebugController.Events.InspectRequested, ({ selector, locator, ariaSnapshot }) => { + this._dispatchEvent('inspectRequested', { selector, locator, ariaSnapshot }); }), eventsHelper.addEventListener(this._object, DebugController.Events.SourceChanged, ({ text, header, footer, actions }) => { this._dispatchEvent('sourceChanged', ({ text, header, footer, actions })); diff --git a/packages/protocol/src/channels.ts b/packages/protocol/src/channels.ts index 27c4242fe53d4..100baf59f9601 100644 --- a/packages/protocol/src/channels.ts +++ b/packages/protocol/src/channels.ts @@ -691,6 +691,7 @@ export interface DebugControllerChannel extends DebugControllerEventTarget, Chan export type DebugControllerInspectRequestedEvent = { selector: string, locator: string, + ariaSnapshot: string, }; export type DebugControllerSetModeRequestedEvent = { mode: string, diff --git a/packages/protocol/src/protocol.yml b/packages/protocol/src/protocol.yml index d9597c2295b2a..9997989f77cef 100644 --- a/packages/protocol/src/protocol.yml +++ b/packages/protocol/src/protocol.yml @@ -807,6 +807,7 @@ DebugController: parameters: selector: string locator: string + ariaSnapshot: string setModeRequested: parameters: diff --git a/tests/library/debug-controller.spec.ts b/tests/library/debug-controller.spec.ts index 6050d4e64525d..c3fb643665cf9 100644 --- a/tests/library/debug-controller.spec.ts +++ b/tests/library/debug-controller.spec.ts @@ -84,9 +84,11 @@ test('should pick element', async ({ backend, connectedBrowser }) => { expect(events).toEqual([ { + ariaSnapshot: '- button "Submit"', selector: 'internal:role=button[name=\"Submit\"i]', locator: 'getByRole(\'button\', { name: \'Submit\' })', }, { + ariaSnapshot: '- button "Submit"', selector: 'internal:role=button[name=\"Submit\"i]', locator: 'getByRole(\'button\', { name: \'Submit\' })', },