diff --git a/rules/prefer-dom-node-text-content.js b/rules/prefer-dom-node-text-content.js index e85ef81bad..f527e41211 100644 --- a/rules/prefer-dom-node-text-content.js +++ b/rules/prefer-dom-node-text-content.js @@ -8,7 +8,7 @@ const messages = { [SUGGESTION]: 'Switch to `.textContent`.', }; -const memberExpressionPropertySelector = `${memberExpressionSelector('innerText')} > .property`; +const memberExpressionPropertySelector = `${memberExpressionSelector({property: 'innerText', includeOptional: true})} > .property`; const destructuringSelector = [ 'ObjectPattern', ' > ', diff --git a/test/prefer-dom-node-text-content.mjs b/test/prefer-dom-node-text-content.mjs index 88cc6c7131..393b192329 100644 --- a/test/prefer-dom-node-text-content.mjs +++ b/test/prefer-dom-node-text-content.mjs @@ -19,6 +19,7 @@ test.snapshot({ ], invalid: [ 'node.innerText;', + 'node?.innerText;', 'node.innerText = \'foo\';', 'innerText.innerText;', 'const {innerText} = node;', diff --git a/test/snapshots/prefer-dom-node-text-content.mjs.md b/test/snapshots/prefer-dom-node-text-content.mjs.md index 4d32684832..b38c3ea029 100644 --- a/test/snapshots/prefer-dom-node-text-content.mjs.md +++ b/test/snapshots/prefer-dom-node-text-content.mjs.md @@ -19,6 +19,20 @@ Generated by [AVA](https://avajs.dev). ` ## Invalid #2 + 1 | node?.innerText; + +> Error 1/1 + + `␊ + > 1 | node?.innerText;␊ + | ^^^^^^^^^ Prefer \`.textContent\` over \`.innerText\`.␊ + ␊ + --------------------------------------------------------------------------------␊ + Suggestion 1/1: Switch to \`.textContent\`.␊ + 1 | node?.textContent;␊ + ` + +## Invalid #3 1 | node.innerText = 'foo'; > Error 1/1 @@ -32,7 +46,7 @@ Generated by [AVA](https://avajs.dev). 1 | node.textContent = 'foo';␊ ` -## Invalid #3 +## Invalid #4 1 | innerText.innerText; > Error 1/1 @@ -46,7 +60,7 @@ Generated by [AVA](https://avajs.dev). 1 | innerText.textContent;␊ ` -## Invalid #4 +## Invalid #5 1 | const {innerText} = node; > Error 1/1 @@ -60,7 +74,7 @@ Generated by [AVA](https://avajs.dev). 1 | const {textContent: innerText} = node;␊ ` -## Invalid #5 +## Invalid #6 1 | const {innerText,} = node; > Error 1/1 @@ -74,7 +88,7 @@ Generated by [AVA](https://avajs.dev). 1 | const {textContent: innerText,} = node;␊ ` -## Invalid #6 +## Invalid #7 1 | const {innerText: text} = node; > Error 1/1 @@ -88,7 +102,7 @@ Generated by [AVA](https://avajs.dev). 1 | const {textContent: text} = node;␊ ` -## Invalid #7 +## Invalid #8 1 | const {innerText = "default text"} = node; > Error 1/1 @@ -102,7 +116,7 @@ Generated by [AVA](https://avajs.dev). 1 | const {textContent: innerText = "default text"} = node;␊ ` -## Invalid #8 +## Invalid #9 1 | const {innerText: text = "default text"} = node; > Error 1/1 @@ -116,7 +130,7 @@ Generated by [AVA](https://avajs.dev). 1 | const {textContent: text = "default text"} = node;␊ ` -## Invalid #9 +## Invalid #10 1 | ({innerText} = node); > Error 1/1 @@ -130,7 +144,7 @@ Generated by [AVA](https://avajs.dev). 1 | ({textContent: innerText} = node);␊ ` -## Invalid #10 +## Invalid #11 1 | ({innerText: text} = node); > Error 1/1 @@ -144,7 +158,7 @@ Generated by [AVA](https://avajs.dev). 1 | ({textContent: text} = node);␊ ` -## Invalid #11 +## Invalid #12 1 | ({innerText = "default text"} = node); > Error 1/1 @@ -158,7 +172,7 @@ Generated by [AVA](https://avajs.dev). 1 | ({textContent: innerText = "default text"} = node);␊ ` -## Invalid #12 +## Invalid #13 1 | ({innerText: text = "default text"} = node); > Error 1/1 @@ -172,7 +186,7 @@ Generated by [AVA](https://avajs.dev). 1 | ({textContent: text = "default text"} = node);␊ ` -## Invalid #13 +## Invalid #14 1 | function foo({innerText}) {return innerText} > Error 1/1 @@ -186,7 +200,7 @@ Generated by [AVA](https://avajs.dev). 1 | function foo({textContent: innerText}) {return innerText}␊ ` -## Invalid #14 +## Invalid #15 1 | for (const [{innerText}] of elements); > Error 1/1 diff --git a/test/snapshots/prefer-dom-node-text-content.mjs.snap b/test/snapshots/prefer-dom-node-text-content.mjs.snap index f67e310388..d2535a6b33 100644 Binary files a/test/snapshots/prefer-dom-node-text-content.mjs.snap and b/test/snapshots/prefer-dom-node-text-content.mjs.snap differ