1; Add support for (node:test, bun:test, Jest and Deno.test) runnable
2; Function expression that has `it`, `test` or `describe` as the function name
3(
4 (call_expression
5 function: [
6 (identifier) @_name
7 (member_expression
8 object: [
9 (identifier) @_name
10 (member_expression object: (identifier) @_name)
11 ]
12 )
13 ]
14 (#any-of? @_name "it" "test" "describe" "context" "suite")
15 arguments: (
16 arguments . [
17 (string (string_fragment) @run)
18 (identifier) @run
19 ]
20 )
21 ) @_js-test
22
23 (#set! tag js-test)
24)
25
26; Add support for parameterized tests
27(
28 (call_expression
29 function: (call_expression
30 function: (member_expression
31 object: [(identifier) @_name (member_expression object: (identifier) @_name)]
32 property: (property_identifier) @_property
33 )
34 (#any-of? @_name "it" "test" "describe" "context" "suite")
35 (#any-of? @_property "each")
36 )
37 arguments: (
38 arguments . [
39 (string (string_fragment) @run)
40 (identifier) @run
41 ]
42 )
43 ) @_js-test
44
45 (#set! tag js-test)
46)
47
48; Add support for Deno.test with string names
49(
50 (call_expression
51 function: (member_expression
52 object: (identifier) @_namespace
53 property: (property_identifier) @_method
54 )
55 (#eq? @_namespace "Deno")
56 (#eq? @_method "test")
57 arguments: (
58 arguments . [
59 (string (string_fragment) @run @DENO_TEST_NAME)
60 (identifier) @run @DENO_TEST_NAME
61 ]
62 )
63 ) @_js-test
64
65 (#set! tag js-test)
66)
67
68; Add support for Deno.test with named function expressions
69(
70 (call_expression
71 function: (member_expression
72 object: (identifier) @_namespace
73 property: (property_identifier) @_method
74 )
75 (#eq? @_namespace "Deno")
76 (#eq? @_method "test")
77 arguments: (
78 arguments . (function_expression
79 name: (identifier) @run @DENO_TEST_NAME
80 )
81 )
82 ) @_js-test
83
84 (#set! tag js-test)
85)