Added TSX test runnables (#12922)

Chung Wei Leong and Piotr Osiewicz created

Fix #12884

Release Notes:

- Added runnable tests for TSX files.

---
Runnable tests can be customized via `tsx-test` tag

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>

Change summary

crates/languages/src/lib.rs            |  3 ++-
crates/languages/src/tsx/runnables.scm | 14 ++++++++++++++
crates/languages/src/typescript.rs     |  2 +-
3 files changed, 17 insertions(+), 2 deletions(-)

Detailed changes

crates/languages/src/lib.rs 🔗

@@ -141,7 +141,8 @@ pub fn init(
         vec![
             Arc::new(typescript::TypeScriptLspAdapter::new(node_runtime.clone())),
             Arc::new(vtsls::VtslsLspAdapter::new(node_runtime.clone()))
-        ]
+        ],
+        typescript_task_context()
     );
     language!(
         "typescript",

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

@@ -0,0 +1,14 @@
+; Add support for (node:test, bun:test and Jest) runnable
+; Function expression that has `it`, `test` or `describe` as the function name
+(
+    (call_expression
+        function: (_) @_name
+        (#any-of? @_name "it" "test" "describe")
+        arguments: (
+            arguments . (string
+                (string_fragment) @run
+            )
+        )
+    ) @_tsx-test
+    (#set! tag tsx-test)
+)

crates/languages/src/typescript.rs 🔗

@@ -37,7 +37,7 @@ pub(super) fn typescript_task_context() -> ContextProviderWithTasks {
                 VariableName::Symbol.template_value(),
                 VariableName::File.template_value(),
             ],
-            tags: vec!["ts-test".into(), "js-test".into()],
+            tags: vec!["ts-test".into(), "js-test".into(), "tsx-test".into()],
             ..TaskTemplate::default()
         },
         TaskTemplate {