From 0fec322aa61aa8c3ab338c709035db54bd7ef9f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltra=CC=81n=20Alarco=CC=81n?= Date: Mon, 26 Oct 2020 18:19:17 +0100 Subject: [PATCH 1/3] feat: new setting for customizing file name pattern to report --- lib/detect-testing-library-utils.ts | 19 +++++++++- tests/create-testing-library-rule.test.ts | 43 ++++++++++++++++++++--- tests/lib/rules/no-node-access.test.ts | 31 ++++++++++++---- tests/lib/test-utils.ts | 4 +++ 4 files changed, 84 insertions(+), 13 deletions(-) diff --git a/lib/detect-testing-library-utils.ts b/lib/detect-testing-library-utils.ts index cf5ca51f..0ca45a53 100644 --- a/lib/detect-testing-library-utils.ts +++ b/lib/detect-testing-library-utils.ts @@ -2,6 +2,7 @@ import { TSESLint, TSESTree } from '@typescript-eslint/experimental-utils'; export type TestingLibrarySettings = { 'testing-library/module'?: string; + 'testing-library/file-name'?: string; }; export type TestingLibraryContext< @@ -25,9 +26,12 @@ export type EnhancedRuleCreate< export type DetectionHelpers = { getIsTestingLibraryImported: () => boolean; + getIsValidFileName: () => boolean; canReportErrors: () => boolean; }; +const DEFAULT_FILE_NAME_PATTERN = '^.*\\.(test|spec)\\.[jt]sx?$'; + /** * Enhances a given rule `create` with helpers to detect Testing Library utils. */ @@ -45,6 +49,9 @@ export function detectTestingLibraryUtils< // Init options based on shared ESLint settings const customModule = context.settings['testing-library/module']; + const fileNamePattern = + context.settings['testing-library/file-name'] ?? + DEFAULT_FILE_NAME_PATTERN; // Helpers for Testing Library detection. const helpers: DetectionHelpers = { @@ -68,11 +75,21 @@ export function detectTestingLibraryUtils< return isImportingTestingLibraryModule || isImportingCustomModule; }, + /** + * Gets if file name being analyzed is valid or not. + * + * This is based on "testing-library/file-name" setting. + */ + getIsValidFileName() { + const fileName = context.getFilename(); + return !!fileName.match(fileNamePattern); + }, + /** * Wraps all conditions that must be met to report rules. */ canReportErrors() { - return this.getIsTestingLibraryImported(); + return this.getIsTestingLibraryImported() && this.getIsValidFileName(); }, }; diff --git a/tests/create-testing-library-rule.test.ts b/tests/create-testing-library-rule.test.ts index 14977c72..566eb318 100644 --- a/tests/create-testing-library-rule.test.ts +++ b/tests/create-testing-library-rule.test.ts @@ -1,15 +1,12 @@ import { createRuleTester } from './lib/test-utils'; import rule, { RULE_NAME } from './fake-rule'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ { + filename: 'MyComponent.test.js', code: ` // case: nothing related to Testing Library at all import { shallow } from 'enzyme'; @@ -18,6 +15,7 @@ ruleTester.run(RULE_NAME, rule, { `, }, { + filename: 'MyComponent.test.js', code: ` // case: render imported from other than custom module import { render } from '@somewhere/else' @@ -29,6 +27,7 @@ ruleTester.run(RULE_NAME, rule, { }, }, { + filename: 'MyComponent.test.js', code: ` // case: prevent import which should trigger an error since it's imported // from other than custom module @@ -38,9 +37,20 @@ ruleTester.run(RULE_NAME, rule, { 'testing-library/module': 'test-utils', }, }, + { + filename: 'MyComponent.test.js', + code: ` + // case: import module forced to be reported but not matching file name + import { foo } from 'report-me' + `, + settings: { + 'testing-library/file-name': 'testing-library\\.js', + }, + }, ], invalid: [ { + filename: 'MyComponent.test.js', code: ` // case: import module forced to be reported import { foo } from 'report-me' @@ -48,6 +58,26 @@ ruleTester.run(RULE_NAME, rule, { errors: [{ line: 3, column: 7, messageId: 'fakeError' }], }, { + filename: 'MyComponent.spec.js', + code: ` + // case: import module forced to be reported but from .spec.js named file + import { foo } from 'report-me' + `, + errors: [{ line: 3, column: 7, messageId: 'fakeError' }], + }, + { + filename: 'MyComponent.testing-library.js', + code: ` + // case: import module forced to be reported with custom file name + import { foo } from 'report-me' + `, + settings: { + 'testing-library/file-name': 'testing-library\\.js', + }, + errors: [{ line: 3, column: 7, messageId: 'fakeError' }], + }, + { + filename: 'MyComponent.test.js', code: ` // case: render imported from any module by default (aggressive reporting) import { render } from '@somewhere/else' @@ -64,6 +94,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` // case: render imported from Testing Library module import { render } from '@testing-library/react' @@ -80,6 +111,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` // case: render imported from config custom module import { render } from 'test-utils' @@ -99,6 +131,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` // case: render imported from Testing Library module if // custom module setup diff --git a/tests/lib/rules/no-node-access.test.ts b/tests/lib/rules/no-node-access.test.ts index 9c7cbcc4..54ec18fc 100644 --- a/tests/lib/rules/no-node-access.test.ts +++ b/tests/lib/rules/no-node-access.test.ts @@ -10,6 +10,7 @@ const ruleTester = createRuleTester({ ruleTester.run(RULE_NAME, rule, { valid: [ { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -17,6 +18,7 @@ ruleTester.run(RULE_NAME, rule, { `, }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -26,6 +28,7 @@ ruleTester.run(RULE_NAME, rule, { `, }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -34,6 +37,7 @@ ruleTester.run(RULE_NAME, rule, { `, }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -43,6 +47,7 @@ ruleTester.run(RULE_NAME, rule, { `, }, { + filename: 'MyComponent.test.js', code: ` import { render, within } from '@testing-library/react'; @@ -51,19 +56,19 @@ ruleTester.run(RULE_NAME, rule, { within(signinModal).getByPlaceholderText('Username'); `, }, - /*{ - // TODO: this one should be valid indeed. Rule implementation must be improved - // to track where the nodes are coming from. This one wasn't reported before - // just because this code is not importing TL module, but that's a really - // brittle check. Instead, this one shouldn't be reported since `children` - // it's just a property not related to a node + { + filename: 'MyComponent.test.js', code: ` const Component = props => { return
{props.children}
} `, - },*/ + settings: { + 'testing-library/file-name': 'testing-library\\.js', + }, + }, { + filename: 'MyComponent.test.js', code: ` // case: importing custom module const closestButton = document.getElementById('submit-btn').closest('button'); @@ -76,6 +81,7 @@ ruleTester.run(RULE_NAME, rule, { ], invalid: [ { + filename: 'MyComponent.test.js', code: ` // case: without importing TL (aggressive reporting) const closestButton = document.getElementById('submit-btn') @@ -84,6 +90,7 @@ ruleTester.run(RULE_NAME, rule, { errors: [{ messageId: 'noNodeAccess', line: 3 }], }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -99,6 +106,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -111,6 +119,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -126,6 +135,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -138,6 +148,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { render } from '@testing-library/react'; @@ -151,6 +162,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -175,6 +187,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -188,6 +201,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { render } from '@testing-library/react'; @@ -202,6 +216,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { render } from '@testing-library/react'; @@ -215,6 +230,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -245,6 +261,7 @@ ruleTester.run(RULE_NAME, rule, { ], }, { + filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; diff --git a/tests/lib/test-utils.ts b/tests/lib/test-utils.ts index 391f5844..b318e0b2 100644 --- a/tests/lib/test-utils.ts +++ b/tests/lib/test-utils.ts @@ -9,6 +9,10 @@ export const createRuleTester = ( parserOptions: { ecmaVersion: 2018, sourceType: 'module', + // TODO: we should deep merge here + ecmaFeatures: { + jsx: true, + }, ...parserOptions, }, }); From 4ec2a687e921f014103fb8f7bbfcd6c710df3152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltra=CC=81n=20Alarco=CC=81n?= Date: Tue, 27 Oct 2020 18:27:57 +0100 Subject: [PATCH 2/3] test: add custom rule tester for testing library --- lib/detect-testing-library-utils.ts | 2 +- tests/create-testing-library-rule.test.ts | 9 ----- tests/lib/test-utils.ts | 40 +++++++++++++++++++++-- tsconfig.json | 2 +- 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/lib/detect-testing-library-utils.ts b/lib/detect-testing-library-utils.ts index 0ca45a53..31b4c809 100644 --- a/lib/detect-testing-library-utils.ts +++ b/lib/detect-testing-library-utils.ts @@ -76,7 +76,7 @@ export function detectTestingLibraryUtils< }, /** - * Gets if file name being analyzed is valid or not. + * Gets if name of the file being analyzed is valid or not. * * This is based on "testing-library/file-name" setting. */ diff --git a/tests/create-testing-library-rule.test.ts b/tests/create-testing-library-rule.test.ts index 566eb318..1073b370 100644 --- a/tests/create-testing-library-rule.test.ts +++ b/tests/create-testing-library-rule.test.ts @@ -6,7 +6,6 @@ const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ { - filename: 'MyComponent.test.js', code: ` // case: nothing related to Testing Library at all import { shallow } from 'enzyme'; @@ -15,7 +14,6 @@ ruleTester.run(RULE_NAME, rule, { `, }, { - filename: 'MyComponent.test.js', code: ` // case: render imported from other than custom module import { render } from '@somewhere/else' @@ -27,7 +25,6 @@ ruleTester.run(RULE_NAME, rule, { }, }, { - filename: 'MyComponent.test.js', code: ` // case: prevent import which should trigger an error since it's imported // from other than custom module @@ -38,7 +35,6 @@ ruleTester.run(RULE_NAME, rule, { }, }, { - filename: 'MyComponent.test.js', code: ` // case: import module forced to be reported but not matching file name import { foo } from 'report-me' @@ -50,7 +46,6 @@ ruleTester.run(RULE_NAME, rule, { ], invalid: [ { - filename: 'MyComponent.test.js', code: ` // case: import module forced to be reported import { foo } from 'report-me' @@ -77,7 +72,6 @@ ruleTester.run(RULE_NAME, rule, { errors: [{ line: 3, column: 7, messageId: 'fakeError' }], }, { - filename: 'MyComponent.test.js', code: ` // case: render imported from any module by default (aggressive reporting) import { render } from '@somewhere/else' @@ -94,7 +88,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` // case: render imported from Testing Library module import { render } from '@testing-library/react' @@ -111,7 +104,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` // case: render imported from config custom module import { render } from 'test-utils' @@ -131,7 +123,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` // case: render imported from Testing Library module if // custom module setup diff --git a/tests/lib/test-utils.ts b/tests/lib/test-utils.ts index b318e0b2..263cc6e7 100644 --- a/tests/lib/test-utils.ts +++ b/tests/lib/test-utils.ts @@ -1,18 +1,52 @@ import { resolve } from 'path'; import { TSESLint } from '@typescript-eslint/experimental-utils'; +// TODO: remove ecmaFeatures object from other tests files + +const DEFAULT_TEST_CASE_CONFIG = { + filename: 'MyComponent.test.js', +}; + +class TestingLibraryRuleTester extends TSESLint.RuleTester { + run>( + ruleName: string, + rule: TSESLint.RuleModule, + tests: TSESLint.RunTests + ): void { + const { valid, invalid } = tests; + + const finalValid = valid.map((testCase) => { + if (typeof testCase === 'string') { + return { + ...DEFAULT_TEST_CASE_CONFIG, + code: testCase, + }; + } + + return { ...DEFAULT_TEST_CASE_CONFIG, ...testCase }; + }); + const finalInvalid = invalid.map((testCase) => ({ + ...DEFAULT_TEST_CASE_CONFIG, + ...testCase, + })); + + super.run(ruleName, rule, { valid: finalValid, invalid: finalInvalid }); + } +} + export const createRuleTester = ( parserOptions: Partial = {} -): TSESLint.RuleTester => - new TSESLint.RuleTester({ +): TSESLint.RuleTester => { + return new TestingLibraryRuleTester({ parser: resolve('./node_modules/@typescript-eslint/parser'), parserOptions: { ecmaVersion: 2018, sourceType: 'module', - // TODO: we should deep merge here + // TODO: should we deep merge here? ecmaFeatures: { jsx: true, }, ...parserOptions, }, }); +}; diff --git a/tsconfig.json b/tsconfig.json index cddbaa37..1856daa6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es5", + "target": "es6", "module": "commonjs", "moduleResolution": "node", "esModuleInterop": true, From 6f92a9058a2a5d1406dff79f824fccb8cbc14d29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltra=CC=81n=20Alarco=CC=81n?= Date: Wed, 28 Oct 2020 10:23:21 +0100 Subject: [PATCH 3/3] refactor: use common rule tester config --- .../lib/rules/consistent-data-testid.test.ts | 6 +---- tests/lib/rules/no-container.test.ts | 6 +---- tests/lib/rules/no-debug.test.ts | 6 +---- .../no-multiple-assertions-wait-for.test.ts | 6 +---- tests/lib/rules/no-node-access.test.ts | 25 +------------------ tests/lib/rules/no-render-in-setup.test.ts | 6 +---- .../rules/no-side-effects-wait-for.test.ts | 6 +---- tests/lib/rules/prefer-find-by.test.ts | 6 +---- .../render-result-naming-convention.test.ts | 6 +---- tests/lib/test-utils.ts | 3 --- 10 files changed, 9 insertions(+), 67 deletions(-) diff --git a/tests/lib/rules/consistent-data-testid.test.ts b/tests/lib/rules/consistent-data-testid.test.ts index cb7ba92c..dd0892f2 100644 --- a/tests/lib/rules/consistent-data-testid.test.ts +++ b/tests/lib/rules/consistent-data-testid.test.ts @@ -1,11 +1,7 @@ import { createRuleTester } from '../test-utils'; import rule, { RULE_NAME } from '../../../lib/rules/consistent-data-testid'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ diff --git a/tests/lib/rules/no-container.test.ts b/tests/lib/rules/no-container.test.ts index a6a6116a..4823e9a6 100644 --- a/tests/lib/rules/no-container.test.ts +++ b/tests/lib/rules/no-container.test.ts @@ -1,11 +1,7 @@ import { createRuleTester } from '../test-utils'; import rule, { RULE_NAME } from '../../../lib/rules/no-container'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ diff --git a/tests/lib/rules/no-debug.test.ts b/tests/lib/rules/no-debug.test.ts index ad175bac..3e26b414 100644 --- a/tests/lib/rules/no-debug.test.ts +++ b/tests/lib/rules/no-debug.test.ts @@ -1,11 +1,7 @@ import { createRuleTester } from '../test-utils'; import rule, { RULE_NAME } from '../../../lib/rules/no-debug'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ diff --git a/tests/lib/rules/no-multiple-assertions-wait-for.test.ts b/tests/lib/rules/no-multiple-assertions-wait-for.test.ts index 44bef16a..4398662a 100644 --- a/tests/lib/rules/no-multiple-assertions-wait-for.test.ts +++ b/tests/lib/rules/no-multiple-assertions-wait-for.test.ts @@ -3,11 +3,7 @@ import rule, { RULE_NAME, } from '../../../lib/rules/no-multiple-assertions-wait-for'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ diff --git a/tests/lib/rules/no-node-access.test.ts b/tests/lib/rules/no-node-access.test.ts index 54ec18fc..83dcf04c 100644 --- a/tests/lib/rules/no-node-access.test.ts +++ b/tests/lib/rules/no-node-access.test.ts @@ -1,16 +1,11 @@ import { createRuleTester } from '../test-utils'; import rule, { RULE_NAME } from '../../../lib/rules/no-node-access'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -18,7 +13,6 @@ ruleTester.run(RULE_NAME, rule, { `, }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -28,7 +22,6 @@ ruleTester.run(RULE_NAME, rule, { `, }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -37,7 +30,6 @@ ruleTester.run(RULE_NAME, rule, { `, }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -47,7 +39,6 @@ ruleTester.run(RULE_NAME, rule, { `, }, { - filename: 'MyComponent.test.js', code: ` import { render, within } from '@testing-library/react'; @@ -57,7 +48,6 @@ ruleTester.run(RULE_NAME, rule, { `, }, { - filename: 'MyComponent.test.js', code: ` const Component = props => { return
{props.children}
@@ -68,7 +58,6 @@ ruleTester.run(RULE_NAME, rule, { }, }, { - filename: 'MyComponent.test.js', code: ` // case: importing custom module const closestButton = document.getElementById('submit-btn').closest('button'); @@ -81,7 +70,6 @@ ruleTester.run(RULE_NAME, rule, { ], invalid: [ { - filename: 'MyComponent.test.js', code: ` // case: without importing TL (aggressive reporting) const closestButton = document.getElementById('submit-btn') @@ -90,7 +78,6 @@ ruleTester.run(RULE_NAME, rule, { errors: [{ messageId: 'noNodeAccess', line: 3 }], }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -106,7 +93,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -119,7 +105,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -135,7 +120,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -148,7 +132,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { render } from '@testing-library/react'; @@ -162,7 +145,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -187,7 +169,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -201,7 +182,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { render } from '@testing-library/react'; @@ -216,7 +196,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { render } from '@testing-library/react'; @@ -230,7 +209,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; @@ -261,7 +239,6 @@ ruleTester.run(RULE_NAME, rule, { ], }, { - filename: 'MyComponent.test.js', code: ` import { screen } from '@testing-library/react'; diff --git a/tests/lib/rules/no-render-in-setup.test.ts b/tests/lib/rules/no-render-in-setup.test.ts index 3c8fbc57..1cf9867a 100644 --- a/tests/lib/rules/no-render-in-setup.test.ts +++ b/tests/lib/rules/no-render-in-setup.test.ts @@ -2,11 +2,7 @@ import { createRuleTester } from '../test-utils'; import { TESTING_FRAMEWORK_SETUP_HOOKS } from '../../../lib/utils'; import rule, { RULE_NAME } from '../../../lib/rules/no-render-in-setup'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ diff --git a/tests/lib/rules/no-side-effects-wait-for.test.ts b/tests/lib/rules/no-side-effects-wait-for.test.ts index 664e5db2..6b3fadf2 100644 --- a/tests/lib/rules/no-side-effects-wait-for.test.ts +++ b/tests/lib/rules/no-side-effects-wait-for.test.ts @@ -1,11 +1,7 @@ import { createRuleTester } from '../test-utils'; import rule, { RULE_NAME } from '../../../lib/rules/no-side-effects-wait-for'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ diff --git a/tests/lib/rules/prefer-find-by.test.ts b/tests/lib/rules/prefer-find-by.test.ts index eacef738..da743103 100644 --- a/tests/lib/rules/prefer-find-by.test.ts +++ b/tests/lib/rules/prefer-find-by.test.ts @@ -14,11 +14,7 @@ import rule, { MessageIds, } from '../../../lib/rules/prefer-find-by'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); function buildFindByMethod(queryMethod: string) { return `${getFindByQueryVariant(queryMethod)}${queryMethod.split('By')[1]}`; diff --git a/tests/lib/rules/render-result-naming-convention.test.ts b/tests/lib/rules/render-result-naming-convention.test.ts index 3e34c524..7f51163c 100644 --- a/tests/lib/rules/render-result-naming-convention.test.ts +++ b/tests/lib/rules/render-result-naming-convention.test.ts @@ -3,11 +3,7 @@ import rule, { RULE_NAME, } from '../../../lib/rules/render-result-naming-convention'; -const ruleTester = createRuleTester({ - ecmaFeatures: { - jsx: true, - }, -}); +const ruleTester = createRuleTester(); ruleTester.run(RULE_NAME, rule, { valid: [ diff --git a/tests/lib/test-utils.ts b/tests/lib/test-utils.ts index 263cc6e7..88c1b778 100644 --- a/tests/lib/test-utils.ts +++ b/tests/lib/test-utils.ts @@ -1,8 +1,6 @@ import { resolve } from 'path'; import { TSESLint } from '@typescript-eslint/experimental-utils'; -// TODO: remove ecmaFeatures object from other tests files - const DEFAULT_TEST_CASE_CONFIG = { filename: 'MyComponent.test.js', }; @@ -42,7 +40,6 @@ export const createRuleTester = ( parserOptions: { ecmaVersion: 2018, sourceType: 'module', - // TODO: should we deep merge here? ecmaFeatures: { jsx: true, },