Apply TypeScript test improvements to tsx files (#32477)

Alexander created

relates-to: #32467
relates-to: #31499

Release Notes:

- N/A

Change summary

crates/languages/src/tsx/outline.scm   | 25 ++++++++++++++++++++++++-
crates/languages/src/tsx/runnables.scm | 27 ++++++++++++++++++++++++++-
2 files changed, 50 insertions(+), 2 deletions(-)

Detailed changes

crates/languages/src/tsx/outline.scm 🔗

@@ -83,7 +83,30 @@
         ] @context
         (#any-of? @_name "it" "test" "describe" "context" "suite")
         arguments: (
-            arguments . (string (string_fragment) @name)
+            arguments . [
+                (string (string_fragment) @name)
+                (identifier) @name
+            ]
+        )
+    )
+) @item
+
+; Add support for parameterized tests
+(
+    (call_expression
+        function: (call_expression
+            function: (member_expression
+                object: [(identifier) @_name (member_expression object: (identifier) @_name)]
+                property: (property_identifier) @_property
+            )
+            (#any-of? @_name "it" "test" "describe" "context" "suite")
+            (#any-of? @_property "each")
+        )
+        arguments: (
+            arguments . [
+                (string (string_fragment) @name)
+                (identifier) @name
+            ]
         )
     )
 ) @item

crates/languages/src/tsx/runnables.scm 🔗

@@ -13,7 +13,32 @@
         ]
         (#any-of? @_name "it" "test" "describe" "context" "suite")
         arguments: (
-            arguments . (string (string_fragment) @run)
+            arguments . [
+                (string (string_fragment) @run)
+                (identifier) @run
+            ]
+        )
+    ) @_js-test
+
+    (#set! tag js-test)
+)
+
+; Add support for parameterized tests
+(
+    (call_expression
+        function: (call_expression
+            function: (member_expression
+                object: [(identifier) @_name (member_expression object: (identifier) @_name)]
+                property: (property_identifier) @_property
+            )
+            (#any-of? @_name "it" "test" "describe" "context" "suite")
+            (#any-of? @_property "each")
+        )
+        arguments: (
+            arguments . [
+                (string (string_fragment) @run)
+                (identifier) @run
+            ]
         )
     ) @_js-test