From f35cf37451c63fd95966ed1af23de5203b3e5f2f Mon Sep 17 00:00:00 2001 From: Nicolas Merget Date: Mon, 12 Jan 2026 15:25:13 +0100 Subject: [PATCH] fix: add pageTitle to focus browser window, no need for browser name --- src/nvdaTest.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/nvdaTest.ts b/src/nvdaTest.ts index 912aa52..98503ac 100644 --- a/src/nvdaTest.ts +++ b/src/nvdaTest.ts @@ -57,15 +57,26 @@ const MOVE_TO_TOP = { modifiers: [WindowsModifiers.Control], }; +type FocusBrowserParams = { + applicationName: string; + pageTitle: string; +} + +const hasFocus = ({applicationName, pageTitle, windowTitle}:FocusBrowserParams & {windowTitle:string})=>{ + return (pageTitle.length && windowTitle.startsWith(pageTitle)) || windowTitle.includes(applicationName) +} + const focusBrowser = async ({ applicationName, + pageTitle, }: { applicationName: string; + pageTitle: string }) => { await nvdaPlaywright.perform(nvdaPlaywright.keyboardCommands.reportTitle); let windowTitle = await nvdaPlaywright.lastSpokenPhrase(); - if (windowTitle.includes(applicationName)) { + if (hasFocus({applicationName, pageTitle, windowTitle})) { return; } @@ -78,7 +89,7 @@ const focusBrowser = async ({ await nvdaPlaywright.perform(nvdaPlaywright.keyboardCommands.reportTitle); windowTitle = await nvdaPlaywright.lastSpokenPhrase(); - if (windowTitle.includes(applicationName)) { + if (hasFocus({applicationName, pageTitle, windowTitle})) { break; } } @@ -139,8 +150,9 @@ export const nvdaTest = test.extend<{ nvdaPlaywright.keyboardCommands.exitFocusMode ); + const pageTitle = await page.title(); // Ensure application is brought to front and focused. - await focusBrowser({ applicationName }); + await focusBrowser({ applicationName, pageTitle }); // NVDA appears to not work well with Firefox when switching between // applications resulting in the entire browser window having NVDA focus