diff --git a/lib/rules/no-debug.js b/lib/rules/no-debug.js index 83086af2..d82057a6 100644 --- a/lib/rules/no-debug.js +++ b/lib/rules/no-debug.js @@ -48,13 +48,7 @@ module.exports = { return { VariableDeclarator(node) { - if ( - node.init && - node.init.callee && - ['render', ...renderFunctions].some( - name => name === node.init.callee.name - ) - ) { + if (isRenderVariableDeclarator(node, renderFunctions)) { if ( node.id.type === 'ObjectPattern' && node.id.properties.some(property => property.key.name === 'debug') @@ -149,3 +143,24 @@ module.exports = { }; }, }; + +function isRenderFunction(callNode, renderFunctions) { + return ['render', ...renderFunctions].some( + name => name === callNode.callee.name + ); +} + +function isRenderVariableDeclarator(node, renderFunctions) { + if (node.init) { + if (node.init.type === 'AwaitExpression') { + return ( + node.init.argument && + isRenderFunction(node.init.argument, renderFunctions) + ); + } else { + return node.init.callee && isRenderFunction(node.init, renderFunctions); + } + } + + return false; +} diff --git a/tests/lib/rules/no-debug.js b/tests/lib/rules/no-debug.js index 5b9cca2b..e924a739 100644 --- a/tests/lib/rules/no-debug.js +++ b/tests/lib/rules/no-debug.js @@ -147,6 +147,34 @@ ruleTester.run('no-debug', rule, { }, ], }, + { + code: ` + describe(() => { + test(async () => { + const { debug } = await render("foo") + debug() + }) + })`, + errors: [ + { + messageId: 'noDebug', + }, + ], + }, + { + code: ` + describe(() => { + test(async () => { + const utils = await render("foo") + utils.debug() + }) + })`, + errors: [ + { + messageId: 'noDebug', + }, + ], + }, { code: ` const { screen } = require('@testing-library/dom')