From de18a205df67078b61e2edbe660c26d66bc319d8 Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Thu, 21 May 2026 20:36:42 +0200 Subject: [PATCH] Update browser extension form detector logic (#2051) --- .../src/utils/formDetector/FormDetector.ts | 24 ++++++++-- .../__tests__/FormDetector.de.test.ts | 32 +++++++++++++ .../__tests__/test-forms/de-login-form1.html | 47 +++++++++++++++++++ 3 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 apps/browser-extension/src/utils/formDetector/__tests__/FormDetector.de.test.ts create mode 100644 apps/browser-extension/src/utils/formDetector/__tests__/test-forms/de-login-form1.html diff --git a/apps/browser-extension/src/utils/formDetector/FormDetector.ts b/apps/browser-extension/src/utils/formDetector/FormDetector.ts index af70d5561..b6e2f725c 100644 --- a/apps/browser-extension/src/utils/formDetector/FormDetector.ts +++ b/apps/browser-extension/src/utils/formDetector/FormDetector.ts @@ -853,16 +853,30 @@ export class FormDetector { // Check for parent label and table cell structure let currentElement: HTMLElement | null = input; - for (let depth = 0; depth < 5 && currentElement; depth++) { + for (let depth = 0; depth < 7 && currentElement; depth++) { // Stop if we have too many child elements (near body) if (currentElement.children.length > 15) { break; } - // Check for label - search both parent and child elements - const childLabel = currentElement.querySelector('label'); - if (childLabel) { - attributesToCheck.push(childLabel.textContent?.toLowerCase() ?? ''); + /* + * Check for label - search both parent and child elements. + * Prefer the first label with non-empty text content; some component + * frameworks (e.g. Salesforce LWC, Lightning) nest an empty + * slot-only