diff --git a/src/vaadin-text-field-mixin.html b/src/vaadin-text-field-mixin.html
index ae1f56ad..a60d904b 100644
--- a/src/vaadin-text-field-mixin.html
+++ b/src/vaadin-text-field-mixin.html
@@ -514,7 +514,7 @@
/** @private */
_onHelperSlotChange() {
- const slottedNodes = this.root.querySelector(`[name="helper"]`).assignedNodes();
+ const slottedNodes = this.shadowRoot.querySelector(`[name="helper"]`).assignedNodes();
// Only has slotted helper if not a text node
// Text nodes are added by the helperText prop and not the helper slot
// The filter is added due to shady DOM triggering this slotchange event on helperText prop change