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((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))
43
44; Add support for Deno.test with string names
45((call_expression
46 function: (member_expression
47 object: (identifier) @_namespace
48 property: (property_identifier) @_method)
49 (#eq? @_namespace "Deno")
50 (#eq? @_method "test")
51 arguments: (arguments
52 .
53 [
54 (string
55 (string_fragment) @run @DENO_TEST_NAME)
56 (identifier) @run @DENO_TEST_NAME
57 ])) @_js-test
58 (#set! tag js-test))
59
60; Add support for Deno.test with named function expressions
61((call_expression
62 function: (member_expression
63 object: (identifier) @_namespace
64 property: (property_identifier) @_method)
65 (#eq? @_namespace "Deno")
66 (#eq? @_method "test")
67 arguments: (arguments
68 .
69 (function_expression
70 name: (identifier) @run @DENO_TEST_NAME))) @_js-test
71 (#set! tag js-test))