diff --git a/src/to-be-announced.ts b/src/to-be-announced.ts index ffc5a4f..6fe17ac 100644 --- a/src/to-be-announced.ts +++ b/src/to-be-announced.ts @@ -174,6 +174,7 @@ export function register( interceptMethod(Element.prototype, 'removeAttribute', onRemoveAttribute), interceptMethod(Node.prototype, 'appendChild', onNodeMount), interceptMethod(Node.prototype, 'insertBefore', onNodeMount), + interceptMethod(Node.prototype, 'replaceChild', onNodeMount), interceptSetter(Node.prototype, 'textContent', onTextContentChange), interceptSetter(Node.prototype, 'nodeValue', onNodeValueChange) ); diff --git a/test/to-be-announced.dom.test.ts b/test/to-be-announced.dom.test.ts index 85387a2..a57eb3e 100644 --- a/test/to-be-announced.dom.test.ts +++ b/test/to-be-announced.dom.test.ts @@ -150,5 +150,17 @@ ASSERTIVE_CASES.forEach(({ name, value }) => { expect('Hello world').toBeAnnounced(); }); + + test('should announce when content is added with `replaceChild`', async () => { + const parent = document.createElement('div'); + const oldChild = document.createElement('div'); + parent.appendChild(oldChild); + appendToRoot(parent); + + element.textContent = 'Hello world'; + parent.replaceChild(element, oldChild); + + expect('Hello world').toBeAnnounced(); + }); }); });