diff --git a/packages/playwright-core/src/server/injected/ariaSnapshot.ts b/packages/playwright-core/src/server/injected/ariaSnapshot.ts index 5f6782fe7f285..4318b9aea9122 100644 --- a/packages/playwright-core/src/server/injected/ariaSnapshot.ts +++ b/packages/playwright-core/src/server/injected/ariaSnapshot.ts @@ -57,7 +57,8 @@ export function generateAriaTree(rootElement: Element): AriaSnapshot { if (node.nodeType === Node.TEXT_NODE && node.nodeValue) { const text = node.nodeValue; - if (text) + // should not report AAA as a child of the textarea. + if (ariaNode.role !== 'textbox' && text) ariaNode.children.push(node.nodeValue || ''); return; } diff --git a/tests/page/page-aria-snapshot.spec.ts b/tests/page/page-aria-snapshot.spec.ts index 878262400d950..78bfb667d855e 100644 --- a/tests/page/page-aria-snapshot.spec.ts +++ b/tests/page/page-aria-snapshot.spec.ts @@ -605,3 +605,16 @@ it('should escape special yaml values', async ({ page }) => { - textbox: "555" `); }); + +it('should not report textarea textContent', async ({ page }) => { + await page.setContent(``); + await checkAndMatchSnapshot(page.locator('body'), ` + - textbox: Before + `); + await page.evaluate(() => { + document.querySelector('textarea').value = 'After'; + }); + await checkAndMatchSnapshot(page.locator('body'), ` + - textbox: After + `); +});