Skip to content

Commit 653e53f

Browse files
committed
Enable ESLint Plugins for Testing Library and Jest-DOM
1 parent f9ad621 commit 653e53f

File tree

4 files changed

+419
-7
lines changed

4 files changed

+419
-7
lines changed

frontend/.eslintrc.js

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,15 @@ module.exports = {
2626
extraFileExtensions: ['.json'],
2727
tsconfigRootDir: './',
2828
},
29-
plugins: ['react', 'react-hooks', '@typescript-eslint', 'graphql', 'eslint-plugin-tsdoc'],
29+
plugins: [
30+
'react',
31+
'react-hooks',
32+
'@typescript-eslint',
33+
'graphql',
34+
'eslint-plugin-tsdoc',
35+
'testing-library',
36+
'jest-dom',
37+
],
3038
rules: {
3139
camelcase: [
3240
'error',
@@ -129,4 +137,26 @@ module.exports = {
129137
VoidFunction: 'readonly',
130138
RequestInit: 'readonly',
131139
},
140+
overrides: [
141+
{
142+
files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],
143+
plugins: ['testing-library', 'jest-dom'],
144+
extends: ['plugin:testing-library/react', 'plugin:jest-dom/recommended'],
145+
rules: {
146+
// NOTE: Using eslint-plugin-testing-library v3.x (compatible with ESLint 6)
147+
// Some newer rules are not available in this version:
148+
// - prefer-user-event (added in v5.x) - Use code review to enforce userEvent over fireEvent
149+
// - no-node-access (added in v5.x) - Use code review to enforce no container usage
150+
// - prefer-query-by-disappearance - Not available in v3.x
151+
//
152+
// Available rules being enforced:
153+
'testing-library/await-fire-event': 'warn', // Encourages userEvent which is always async
154+
'testing-library/prefer-find-by': 'error', // Similar to prefer-query-by-disappearance
155+
'testing-library/no-await-sync-query': 'error',
156+
'testing-library/no-wait-for-empty-callback': 'error',
157+
'testing-library/prefer-screen-queries': 'error',
158+
'testing-library/prefer-presence-queries': 'error',
159+
},
160+
},
161+
],
132162
};

frontend/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@
265265
"cypress-jest-adapter": "^0.1.1",
266266
"cypress-multi-reporters": "^2.0.5",
267267
"esbuild-loader": "^4.4.2",
268+
"eslint-plugin-jest-dom": "^4.0.3",
269+
"eslint-plugin-testing-library": "^3.10.0",
268270
"file-loader": "6.2.0",
269271
"find-up": "4.x",
270272
"fork-ts-checker-webpack-plugin": "9.1.0",

frontend/packages/.eslintrc.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,26 @@
11
module.exports = {
22
root: true,
33
extends: ['plugin:console/react-typescript-prettier'],
4+
plugins: ['testing-library', 'jest-dom'],
5+
overrides: [
6+
{
7+
files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],
8+
extends: ['plugin:testing-library/react', 'plugin:jest-dom/recommended'],
9+
rules: {
10+
// NOTE: Using eslint-plugin-testing-library v3.x (compatible with ESLint 6)
11+
// Some newer rules are not available in this version:
12+
// - prefer-user-event (added in v5.x) - Use code review to enforce userEvent over fireEvent
13+
// - no-node-access (added in v5.x) - Use code review to enforce no container usage
14+
// - prefer-query-by-disappearance - Not available in v3.x
15+
//
16+
// Available rules being enforced:
17+
'testing-library/await-fire-event': 'warn', // Encourages userEvent which is always async
18+
'testing-library/prefer-find-by': 'error', // Similar to prefer-query-by-disappearance
19+
'testing-library/no-await-sync-query': 'error',
20+
'testing-library/no-wait-for-empty-callback': 'error',
21+
'testing-library/prefer-screen-queries': 'error',
22+
'testing-library/prefer-presence-queries': 'error',
23+
},
24+
},
25+
],
426
};

0 commit comments

Comments
 (0)