Skip to content

Commit e332173

Browse files
feat: add support for @marko/testing-library (#572)
* feat: add support for @marko/testing-library * feat: add tests and update documentation for @marko/testing-library * fix: run prettier and update readme * test: add tests for @marko/testing-library * test: add marko tests for await-async-query-test * chore: address review comment * test: add marko await fire-event test case * test: add test for no-await-sync-query * test: no container * test: no-debugging-utils * test: no-dom-import * test: no-node-access * test: no unnecassary act * test: no-wait-for-empty-callback * test: no-wait-for-multiple-assertions * test: no-wait-for-side-effects * test: prefer-query-by-disappearance * test: prefer-screen-queries * test: render-result-naming-convention * fix: update no-dom-import rule to report the right module name * fix: address PR comments * fix: update Marko's brand logo
1 parent 6148c6b commit e332173

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+749
-177
lines changed

README.md

+45-31
Large diffs are not rendered by default.

docs/rules/await-fire-event.md

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ methods.
1212
>
1313
> - `@testing-library/vue` (supported by this plugin)
1414
> - `@testing-library/svelte` (not supported yet by this plugin)
15+
> - `@marko/testing-library` (supported by this plugin)
1516
1617
Examples of **incorrect** code for this rule:
1718

docs/rules/no-dom-import.md

+1
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,4 @@ With the configuration above, if the user imports from `@testing-library/dom` or
7676
- [Angular Testing Library API](https://testing-library.com/docs/angular-testing-library/api)
7777
- [React Testing Library API](https://testing-library.com/docs/react-testing-library/api)
7878
- [Vue Testing Library API](https://testing-library.com/docs/vue-testing-library/api)
79+
- [Marko Testing Library API](https://testing-library.com/docs/marko-testing-library/api)

docs/rules/no-unnecessary-act.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
> - `@testing-library/react` (supported by this plugin)
66
> - `@testing-library/preact` (not supported yet by this plugin)
77
> - `@testing-library/svelte` (not supported yet by this plugin)
8+
> - `@marko/testing-library` (supported by this plugin)
89
910
## Rule Details
1011

lib/configs/marko.ts

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// THIS CODE WAS AUTOMATICALLY GENERATED
2+
// DO NOT EDIT THIS CODE BY HAND
3+
// YOU CAN REGENERATE IT USING npm run generate:configs
4+
5+
export = {
6+
plugins: ['testing-library'],
7+
rules: {
8+
'testing-library/await-async-query': 'error',
9+
'testing-library/await-async-utils': 'error',
10+
'testing-library/await-fire-event': 'error',
11+
'testing-library/no-await-sync-query': 'error',
12+
'testing-library/no-container': 'error',
13+
'testing-library/no-debugging-utils': 'error',
14+
'testing-library/no-dom-import': ['error', 'marko'],
15+
'testing-library/no-node-access': 'error',
16+
'testing-library/no-promise-in-fire-event': 'error',
17+
'testing-library/no-render-in-setup': 'error',
18+
'testing-library/no-unnecessary-act': 'error',
19+
'testing-library/no-wait-for-empty-callback': 'error',
20+
'testing-library/no-wait-for-multiple-assertions': 'error',
21+
'testing-library/no-wait-for-side-effects': 'error',
22+
'testing-library/no-wait-for-snapshot': 'error',
23+
'testing-library/prefer-find-by': 'error',
24+
'testing-library/prefer-presence-queries': 'error',
25+
'testing-library/prefer-query-by-disappearance': 'error',
26+
'testing-library/prefer-screen-queries': 'error',
27+
'testing-library/render-result-naming-convention': 'error',
28+
},
29+
};

lib/rules/await-async-query.ts

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2525
angular: 'error',
2626
react: 'error',
2727
vue: 'error',
28+
marko: 'error',
2829
},
2930
},
3031
messages: {

lib/rules/await-async-utils.ts

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2424
angular: 'error',
2525
react: 'error',
2626
vue: 'error',
27+
marko: 'error',
2728
},
2829
},
2930
messages: {

lib/rules/await-fire-event.ts

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2424
angular: false,
2525
react: false,
2626
vue: 'error',
27+
marko: 'error',
2728
},
2829
},
2930
messages: {

lib/rules/consistent-data-testid.ts

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2323
angular: false,
2424
react: false,
2525
vue: false,
26+
marko: false,
2627
},
2728
},
2829
messages: {

lib/rules/no-await-sync-events.ts

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2929
angular: false,
3030
react: false,
3131
vue: false,
32+
marko: false,
3233
},
3334
},
3435
messages: {

lib/rules/no-await-sync-query.ts

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
1818
angular: 'error',
1919
react: 'error',
2020
vue: 'error',
21+
marko: 'error',
2122
},
2223
},
2324
messages: {

lib/rules/no-container.ts

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2525
angular: 'error',
2626
react: 'error',
2727
vue: 'error',
28+
marko: 'error',
2829
},
2930
},
3031
messages: {

lib/rules/no-debugging-utils.ts

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
3232
angular: 'error',
3333
react: 'error',
3434
vue: 'error',
35+
marko: 'error',
3536
},
3637
},
3738
messages: {

lib/rules/no-dom-import.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2323
angular: ['error', 'angular'],
2424
react: ['error', 'react'],
2525
vue: ['error', 'vue'],
26+
marko: ['error', 'marko'],
2627
},
2728
},
2829
messages: {
@@ -46,7 +47,11 @@ export default createTestingLibraryRule<Options, MessageIds>({
4647
moduleName: string
4748
) {
4849
if (framework) {
49-
const correctModuleName = moduleName.replace('dom', framework);
50+
// marko TL is called @marko/testing-library
51+
const correctModuleName =
52+
framework === 'marko'
53+
? moduleName.replace('dom-', `@${framework}/`)
54+
: moduleName.replace('dom', framework);
5055
context.report({
5156
node,
5257
messageId: 'noDomImportFramework',

lib/rules/no-global-regexp-flag-in-query.ts

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2525
angular: false,
2626
react: false,
2727
vue: false,
28+
marko: false,
2829
},
2930
},
3031
messages: {

lib/rules/no-manual-cleanup.ts

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
3030
angular: false,
3131
react: false,
3232
vue: false,
33+
marko: false,
3334
},
3435
},
3536
messages: {

lib/rules/no-node-access.ts

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
1818
angular: 'error',
1919
react: 'error',
2020
vue: 'error',
21+
marko: 'error',
2122
},
2223
},
2324
messages: {

lib/rules/no-promise-in-fire-event.ts

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2525
angular: 'error',
2626
react: 'error',
2727
vue: 'error',
28+
marko: 'error',
2829
},
2930
},
3031
messages: {

lib/rules/no-render-in-setup.ts

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
5555
angular: 'error',
5656
react: 'error',
5757
vue: 'error',
58+
marko: 'error',
5859
},
5960
},
6061
messages: {

lib/rules/no-unnecessary-act.ts

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2828
angular: false,
2929
react: 'error',
3030
vue: false,
31+
marko: 'error',
3132
},
3233
},
3334
messages: {

lib/rules/no-wait-for-empty-callback.ts

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2323
angular: 'error',
2424
react: 'error',
2525
vue: 'error',
26+
marko: 'error',
2627
},
2728
},
2829
messages: {

lib/rules/no-wait-for-multiple-assertions.ts

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2222
angular: 'error',
2323
react: 'error',
2424
vue: 'error',
25+
marko: 'error',
2526
},
2627
},
2728
messages: {

lib/rules/no-wait-for-side-effects.ts

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2525
angular: 'error',
2626
react: 'error',
2727
vue: 'error',
28+
marko: 'error',
2829
},
2930
},
3031
messages: {

lib/rules/no-wait-for-snapshot.ts

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2424
angular: 'error',
2525
react: 'error',
2626
vue: 'error',
27+
marko: 'error',
2728
},
2829
},
2930
messages: {

lib/rules/prefer-explicit-assert.ts

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
7474
angular: false,
7575
react: false,
7676
vue: false,
77+
marko: false,
7778
},
7879
},
7980
messages: {

lib/rules/prefer-find-by.ts

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
5757
angular: 'error',
5858
react: 'error',
5959
vue: 'error',
60+
marko: 'error',
6061
},
6162
},
6263
messages: {

lib/rules/prefer-presence-queries.ts

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2323
angular: 'error',
2424
react: 'error',
2525
vue: 'error',
26+
marko: 'error',
2627
},
2728
},
2829
messages: {

lib/rules/prefer-query-by-disappearance.ts

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2828
angular: 'error',
2929
react: 'error',
3030
vue: 'error',
31+
marko: 'error',
3132
},
3233
},
3334
messages: {

lib/rules/prefer-screen-queries.ts

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
4545
angular: 'error',
4646
react: 'error',
4747
vue: 'error',
48+
marko: 'error',
4849
},
4950
},
5051
messages: {

lib/rules/prefer-user-event.ts

+1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
7676
angular: false,
7777
react: false,
7878
vue: false,
79+
marko: false,
7980
},
8081
},
8182
messages: {

lib/rules/prefer-wait-for.ts

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
3131
angular: false,
3232
react: false,
3333
vue: false,
34+
marko: false,
3435
},
3536
},
3637
messages: {

lib/rules/render-result-naming-convention.ts

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export default createTestingLibraryRule<Options, MessageIds>({
2929
angular: 'error',
3030
react: 'error',
3131
vue: 'error',
32+
marko: 'error',
3233
},
3334
},
3435
messages: {

lib/utils/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const LIBRARY_MODULES = [
2323
'@testing-library/preact',
2424
'@testing-library/vue',
2525
'@testing-library/svelte',
26+
'@marko/testing-library',
2627
];
2728

2829
const SYNC_QUERIES_VARIANTS = ['getBy', 'getAllBy', 'queryBy', 'queryAllBy'];

lib/utils/types.ts

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const SUPPORTED_TESTING_FRAMEWORKS = [
3030
'angular',
3131
'react',
3232
'vue',
33+
'marko',
3334
] as const;
3435
export type SupportedTestingFramework =
3536
typeof SUPPORTED_TESTING_FRAMEWORKS[number];

tests/__snapshots__/index.test.ts.snap

+30
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,36 @@ Object {
4949
"testing-library/prefer-screen-queries": "error",
5050
},
5151
},
52+
"marko": Object {
53+
"plugins": Array [
54+
"testing-library",
55+
],
56+
"rules": Object {
57+
"testing-library/await-async-query": "error",
58+
"testing-library/await-async-utils": "error",
59+
"testing-library/await-fire-event": "error",
60+
"testing-library/no-await-sync-query": "error",
61+
"testing-library/no-container": "error",
62+
"testing-library/no-debugging-utils": "error",
63+
"testing-library/no-dom-import": Array [
64+
"error",
65+
"marko",
66+
],
67+
"testing-library/no-node-access": "error",
68+
"testing-library/no-promise-in-fire-event": "error",
69+
"testing-library/no-render-in-setup": "error",
70+
"testing-library/no-unnecessary-act": "error",
71+
"testing-library/no-wait-for-empty-callback": "error",
72+
"testing-library/no-wait-for-multiple-assertions": "error",
73+
"testing-library/no-wait-for-side-effects": "error",
74+
"testing-library/no-wait-for-snapshot": "error",
75+
"testing-library/prefer-find-by": "error",
76+
"testing-library/prefer-presence-queries": "error",
77+
"testing-library/prefer-query-by-disappearance": "error",
78+
"testing-library/prefer-screen-queries": "error",
79+
"testing-library/render-result-naming-convention": "error",
80+
},
81+
},
5282
"react": Object {
5383
"plugins": Array [
5484
"testing-library",

0 commit comments

Comments
 (0)