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
+ `);
+});