Skip to content

Commit 0812bf5

Browse files
committed
Add tests configs
1 parent c321f5f commit 0812bf5

File tree

8 files changed

+84
-64
lines changed

8 files changed

+84
-64
lines changed

.vscode/settings.json

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
{
22
"editor.defaultFormatter": "esbenp.prettier-vscode",
33
"editor.formatOnSave": true,
4-
"editor.codeActionsOnSave": { "source.fixAll": true },
4+
"editor.codeActionsOnSave": {
5+
"source.fixAll": "explicit"
6+
},
57
"eslint.workingDirectories": ["example-app", "packages/eslint-plugin"],
68
"markdownlint.customRules": [
79
"./markdown-lint-custom-rules/no-relative-links.js"
8-
]
10+
],
11+
"eslint.useFlatConfig": true,
12+
"eslint.options": {
13+
"overrideConfigFile": "./eslint.config.js"
14+
}
915
}

example-app/eslint.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module.exports = [
44
...pluginBam.configs.recommended,
55
...pluginBam.configs.a11y,
66
...pluginBam.configs.import,
7+
...pluginBam.configs.tests,
78
{
89
rules: {
910
"@bam.tech/require-named-effect": "error",

example-app/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"eslint-plugin-react-native": "^5.0.0",
3030
"eslint-plugin-react-native-a11y": "^3.3.0",
3131
"eslint-plugin-simple-import-sort": "^12.0.0",
32-
"eslint-plugin-testing-library": "^6.0.1",
32+
"eslint-plugin-testing-library": "^7.1.1",
3333
"eslint-plugin-unused-imports": "^3.0.0",
3434
"globals": "^15.14.0",
3535
"jest": "^29.5.0",

packages/eslint-plugin/lib/configs/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { testsConfig } from "./tests";
55

66
export default {
77
recommended: recommendedConfig,
8-
tests: testsConfig,
98
a11y: a11yconfig,
109
import: importConfig,
10+
tests: testsConfig,
1111
};

packages/eslint-plugin/lib/configs/recommended.ts

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import reactHookPlugin from "eslint-plugin-react-hooks";
77
import { noDifferentDisplaynameRule } from "../rules/no-different-displayname";
88
import { requireNamedEffectRule } from "../rules/require-named-effect";
99
import { preferUserEventRule } from "../rules/prefer-user-event";
10+
import { awaitUserEventRule } from "../rules/await-user-event";
1011
const eslintPluginPrettierRecommended = require("eslint-plugin-prettier/recommended");
1112

1213
// @TODO Add the @bam.tech/import plugins
@@ -53,6 +54,7 @@ export const recommendedConfig = tseslint.config(
5354
"no-different-displayname": noDifferentDisplaynameRule,
5455
"require-named-effect": requireNamedEffectRule,
5556
"prefer-user-event": preferUserEventRule,
57+
"await-user-event": awaitUserEventRule,
5658
},
5759
},
5860
},
+55-45
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,57 @@
1-
import { defineConfig } from "eslint-define-config";
1+
import { defineFlatConfig } from "eslint-define-config";
2+
import jestPlugin from "eslint-plugin-jest";
3+
import testingLibrary from "eslint-plugin-testing-library";
4+
import { awaitUserEventRule } from "../rules/await-user-event";
25

3-
export const testsConfig = defineConfig({
4-
env: {
5-
"jest/globals": true,
6+
export const testsConfig = defineFlatConfig([
7+
{
8+
languageOptions: {
9+
globals: {
10+
"jest/globals": true,
11+
},
12+
},
13+
plugins: {
14+
jest: jestPlugin,
15+
"testing-library": testingLibrary,
16+
},
17+
rules: {
18+
// Setting the recommended rules manually, because we don't want warnings, only errors
19+
"jest/no-alias-methods": "error", // STYLE
20+
"jest/no-commented-out-tests": "error",
21+
"jest/no-conditional-expect": "error",
22+
"jest/no-conditional-in-test": "error",
23+
"jest/no-deprecated-functions": "error",
24+
"jest/no-disabled-tests": "error",
25+
"jest/no-done-callback": "error",
26+
"jest/no-export": "error",
27+
"jest/no-focused-tests": "error",
28+
"jest/no-identical-title": "error",
29+
"jest/no-mocks-import": "error",
30+
"jest/no-standalone-expect": "error",
31+
"jest/no-test-prefixes": "error", // STYLE - force it.skip over xtest
32+
"jest/no-test-return-statement": "error",
33+
"jest/prefer-to-have-length": "error", // STYLE
34+
"jest/valid-describe-callback": "error",
35+
"jest/valid-expect": "error",
36+
"jest/valid-expect-in-promise": "error",
37+
"jest/valid-title": ["error", { disallowedWords: ["should"] }], // STYLE
38+
"jest/padding-around-all": "error", // STYLE
39+
"testing-library/await-async-queries": "error",
40+
"testing-library/no-manual-cleanup": "error",
41+
"testing-library/no-container": "error",
42+
"testing-library/no-await-sync-queries": "error",
43+
"testing-library/no-await-sync-events": "error",
44+
"testing-library/no-debugging-utils": "error",
45+
"testing-library/await-async-utils": "error",
46+
"testing-library/no-promise-in-fire-event": "error",
47+
"testing-library/no-render-in-lifecycle": "error",
48+
"testing-library/no-unnecessary-act": "error",
49+
"testing-library/no-wait-for-multiple-assertions": "error",
50+
"testing-library/prefer-explicit-assert": "error",
51+
"testing-library/prefer-presence-queries": "error",
52+
"testing-library/no-wait-for-side-effects": "error",
53+
"testing-library/prefer-screen-queries": "error",
54+
"@bam.tech/await-user-event": "error",
55+
},
656
},
7-
plugins: ["jest", "testing-library"],
8-
rules: {
9-
// Setting the recommended rules manually, because we don't want warnings, only errors
10-
"jest/no-alias-methods": "error", // STYLE
11-
"jest/no-commented-out-tests": "error",
12-
"jest/no-conditional-expect": "error",
13-
"jest/no-conditional-in-test": "error",
14-
"jest/no-deprecated-functions": "error",
15-
"jest/no-disabled-tests": "error",
16-
"jest/no-done-callback": "error",
17-
"jest/no-export": "error",
18-
"jest/no-focused-tests": "error",
19-
"jest/no-identical-title": "error",
20-
"jest/no-mocks-import": "error",
21-
"jest/no-standalone-expect": "error",
22-
"jest/no-test-prefixes": "error", // STYLE - force it.skip over xtest
23-
"jest/no-test-return-statement": "error",
24-
"jest/prefer-to-have-length": "error", // STYLE
25-
"jest/valid-describe-callback": "error",
26-
"jest/valid-expect": "error",
27-
"jest/valid-expect-in-promise": "error",
28-
"jest/valid-title": ["error", { disallowedWords: ["should"] }], // STYLE
29-
"jest/padding-around-all": "error", // STYLE
30-
"testing-library/await-async-queries": "error",
31-
"testing-library/no-manual-cleanup": "error",
32-
"testing-library/no-container": "error",
33-
"testing-library/no-await-sync-queries": "error",
34-
"testing-library/no-await-sync-events": "error",
35-
"testing-library/no-debugging-utils": "error",
36-
"testing-library/await-async-utils": "error",
37-
"testing-library/no-promise-in-fire-event": "error",
38-
"testing-library/no-render-in-lifecycle": "error",
39-
"testing-library/no-unnecessary-act": "error",
40-
"testing-library/no-wait-for-multiple-assertions": "error",
41-
"testing-library/prefer-explicit-assert": "error",
42-
"testing-library/prefer-presence-queries": "error",
43-
"testing-library/no-wait-for-side-effects": "error",
44-
"testing-library/prefer-screen-queries": "error",
45-
"@bam.tech/await-user-event": "error",
46-
},
47-
});
57+
]);

packages/eslint-plugin/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"eslint-plugin-react-native": "^5.0.0",
3939
"eslint-plugin-react-native-a11y": "^3.3.0",
4040
"eslint-plugin-simple-import-sort": "^12.0.0",
41-
"eslint-plugin-testing-library": "^6.0.1",
41+
"eslint-plugin-testing-library": "^7.1.1",
4242
"eslint-plugin-unused-imports": "^3.0.0",
4343
"prettier": "^3.0.0"
4444
},
@@ -65,7 +65,7 @@
6565
"eslint-plugin-react-native": "^4.0.0",
6666
"eslint-plugin-react-native-a11y": "^3.3.0",
6767
"eslint-plugin-simple-import-sort": "^12.0.0",
68-
"eslint-plugin-testing-library": "6.0.1",
68+
"eslint-plugin-testing-library": "7.1.1",
6969
"eslint-plugin-unused-imports": "^3.0.0",
7070
"jest": "^29.7.0",
7171
"npm-run-all": "^4.1.5",

yarn.lock

+14-13
Original file line numberDiff line numberDiff line change
@@ -1698,7 +1698,7 @@ __metadata:
16981698
eslint-plugin-react-native: "npm:^4.0.0"
16991699
eslint-plugin-react-native-a11y: "npm:^3.3.0"
17001700
eslint-plugin-simple-import-sort: "npm:^12.0.0"
1701-
eslint-plugin-testing-library: "npm:6.0.1"
1701+
eslint-plugin-testing-library: "npm:7.1.1"
17021702
eslint-plugin-unused-imports: "npm:^3.0.0"
17031703
jest: "npm:^29.7.0"
17041704
npm-run-all: "npm:^4.1.5"
@@ -1720,7 +1720,7 @@ __metadata:
17201720
eslint-plugin-react-native: ^5.0.0
17211721
eslint-plugin-react-native-a11y: ^3.3.0
17221722
eslint-plugin-simple-import-sort: ^12.0.0
1723-
eslint-plugin-testing-library: ^6.0.1
1723+
eslint-plugin-testing-library: ^7.1.1
17241724
eslint-plugin-unused-imports: ^3.0.0
17251725
prettier: ^3.0.0
17261726
languageName: unknown
@@ -1744,7 +1744,7 @@ __metadata:
17441744
eslint-plugin-react-native: ^5.0.0
17451745
eslint-plugin-react-native-a11y: ^3.3.0
17461746
eslint-plugin-simple-import-sort: ^12.0.0
1747-
eslint-plugin-testing-library: ^6.0.1
1747+
eslint-plugin-testing-library: ^7.1.1
17481748
eslint-plugin-unused-imports: ^3.0.0
17491749
prettier: ^3.0.0
17501750
languageName: node
@@ -4062,7 +4062,7 @@ __metadata:
40624062
languageName: node
40634063
linkType: hard
40644064

4065-
"@typescript-eslint/scope-manager@npm:8.19.1":
4065+
"@typescript-eslint/scope-manager@npm:8.19.1, @typescript-eslint/scope-manager@npm:^8.15.0":
40664066
version: 8.19.1
40674067
resolution: "@typescript-eslint/scope-manager@npm:8.19.1"
40684068
dependencies:
@@ -4197,7 +4197,7 @@ __metadata:
41974197
languageName: node
41984198
linkType: hard
41994199

4200-
"@typescript-eslint/utils@npm:8.19.1, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0":
4200+
"@typescript-eslint/utils@npm:8.19.1, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.15.0":
42014201
version: 8.19.1
42024202
resolution: "@typescript-eslint/utils@npm:8.19.1"
42034203
dependencies:
@@ -4212,7 +4212,7 @@ __metadata:
42124212
languageName: node
42134213
linkType: hard
42144214

4215-
"@typescript-eslint/utils@npm:^5.38.1, @typescript-eslint/utils@npm:^5.58.0":
4215+
"@typescript-eslint/utils@npm:^5.38.1":
42164216
version: 5.62.0
42174217
resolution: "@typescript-eslint/utils@npm:5.62.0"
42184218
dependencies:
@@ -7097,14 +7097,15 @@ __metadata:
70977097
languageName: node
70987098
linkType: hard
70997099

7100-
"eslint-plugin-testing-library@npm:6.0.1, eslint-plugin-testing-library@npm:^6.0.1":
7101-
version: 6.0.1
7102-
resolution: "eslint-plugin-testing-library@npm:6.0.1"
7100+
"eslint-plugin-testing-library@npm:7.1.1, eslint-plugin-testing-library@npm:^7.1.1":
7101+
version: 7.1.1
7102+
resolution: "eslint-plugin-testing-library@npm:7.1.1"
71037103
dependencies:
7104-
"@typescript-eslint/utils": "npm:^5.58.0"
7104+
"@typescript-eslint/scope-manager": "npm:^8.15.0"
7105+
"@typescript-eslint/utils": "npm:^8.15.0"
71057106
peerDependencies:
7106-
eslint: ^7.5.0 || ^8.0.0
7107-
checksum: 10c0/cfa84f4fcc4efe8d46ea5a85d10d30c98adf33e0cfc7e6cec927ef3cc4a3887ddeb652b541df0677bbce26b03c169fbe6f2c0dcc6d3ee2e4e20d1dac37a8221c
7107+
eslint: ^8.57.0 || ^9.0.0
7108+
checksum: 10c0/648a7dd07ec3f26388eaad89e72ae74441f0e27e337cca7ca10ca55a4ff0437aa6303df5d9f37aeb90aaadd287c536696a7d11f14d1431bb8ae4fabad8c2744e
71087109
languageName: node
71097110
linkType: hard
71107111

@@ -7336,7 +7337,7 @@ __metadata:
73367337
eslint-plugin-react-native: "npm:^5.0.0"
73377338
eslint-plugin-react-native-a11y: "npm:^3.3.0"
73387339
eslint-plugin-simple-import-sort: "npm:^12.0.0"
7339-
eslint-plugin-testing-library: "npm:^6.0.1"
7340+
eslint-plugin-testing-library: "npm:^7.1.1"
73407341
eslint-plugin-unused-imports: "npm:^3.0.0"
73417342
expo: "npm:^49.0.0"
73427343
globals: "npm:^15.14.0"

0 commit comments

Comments
 (0)