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