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 . (string (string_fragment) @run)
17        )
18    ) @_js-test
19
20    (#set! tag js-test)
21)
22
23; Add support for parameterized tests
24(
25    (call_expression
26        function: (call_expression
27            function: (member_expression
28                object: [(identifier) @_name (member_expression object: (identifier) @_name)]
29                property: (property_identifier) @_property
30            )
31            (#any-of? @_name "it" "test" "describe" "context" "suite")
32            (#any-of? @_property "each")
33        )
34        arguments: (
35            arguments . (string (string_fragment) @run)
36        )
37    ) @_js-test
38
39    (#set! tag js-test)
40)