runnables.scm

 1; Add support for (node:test, bun:test and Jest) 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)