Repository: denoland/deno
Pull request: ci(lsp): timeout tests after 5 minutes


Changed files:
filename: Cargo.lock
patch: @@ -897,6 +897,7 @@ dependencies = [
  "hyper 1.6.0",
  "hyper-util",
  "nix",
+ "ntest_timeout",
  "once_cell",
  "os_pipe",
  "pretty_assertions",
@@ -5450,6 +5451,18 @@ dependencies = [
  "winapi",
 ]
 
+[[package]]
+name = "ntest_timeout"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcc7c92f190c97f79b4a332f5e81dcf68c8420af2045c936c9be0bc9de6f63b5"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
 [[package]]
 name = "nu-ansi-term"
 version = "0.46.0"
@@ -6125,6 +6138,15 @@ dependencies = [
  "elliptic-curve",
 ]
 
+[[package]]
+name = "proc-macro-crate"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
+dependencies = [
+ "toml_edit",
+]
+
 [[package]]
 name = "proc-macro-error"
 version = "1.0.4"
@@ -8414,6 +8436,23 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "toml_datetime"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
+
+[[package]]
+name = "toml_edit"
+version = "0.22.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee"
+dependencies = [
+ "indexmap 2.3.0",
+ "toml_datetime",
+ "winnow 0.7.1",
+]
+
 [[package]]
 name = "tonic"
 version = "0.12.3"
@@ -9463,6 +9502,15 @@ dependencies = [
  "memchr",
 ]
 
+[[package]]
+name = "winnow"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f"
+dependencies = [
+ "memchr",
+]
+
 [[package]]
 name = "winreg"
 version = "0.50.0"
@@ -9578,7 +9626,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2a6a39b6b5ba0d02c910d05d7fbc366a4befb8901ea107dcde9c1c97acb8a366"
 dependencies = [
  "rowan",
- "winnow",
+ "winnow 0.6.15",
 ]
 
 [[package]]

filename: Cargo.toml
patch: @@ -168,6 +168,7 @@ lsp-types = "=0.97.0" # used by tower-lsp and "proposed" feature is unstable in
 memmem = "0.1.1"
 monch = "=0.5.0"
 notify = "=6.1.1"
+ntest_timeout = "0.9.3"
 num-bigint = { version = "0.4", features = ["rand"] }
 once_cell = "1.17.1"
 os_pipe = { version = "=1.1.5", features = ["io_safety"] }

filename: tests/Cargo.toml
patch: @@ -48,6 +48,7 @@ http.workspace = true
 http-body-util.workspace = true
 hyper.workspace = true
 hyper-util.workspace = true
+ntest_timeout.workspace = true
 once_cell.workspace = true
 os_pipe.workspace = true
 pretty_assertions.workspace = true

filename: tests/integration/lsp_tests.rs
patch: @@ -3,6 +3,7 @@
 use std::fs;
 use std::str::FromStr;
 
+use ntest_timeout::timeout;
 use pretty_assertions::assert_eq;
 use serde::Deserialize;
 use serde_json::json;
@@ -20,6 +21,7 @@ use tower_lsp::lsp_types as lsp;
 use url::Url;
 
 #[test]
+#[timeout(300_000)]
 fn lsp_startup_shutdown() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -28,6 +30,7 @@ fn lsp_startup_shutdown() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_init_tsconfig() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -61,6 +64,7 @@ fn lsp_init_tsconfig() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_tsconfig_types() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -104,6 +108,7 @@ fn lsp_tsconfig_types() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_tsconfig_types_config_sub_dir() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -149,6 +154,7 @@ fn lsp_tsconfig_types_config_sub_dir() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_triple_slash_types() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -172,6 +178,7 @@ fn lsp_triple_slash_types() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn unadded_dependency_message_with_import_map() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -239,6 +246,7 @@ fn unadded_dependency_message_with_import_map() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn unadded_dependency_message() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -299,6 +307,7 @@ fn unadded_dependency_message() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -357,6 +366,7 @@ fn lsp_import_map() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_remote() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -398,6 +408,7 @@ fn lsp_import_map_remote() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_data_url() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -424,6 +435,7 @@ fn lsp_import_map_data_url() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_config_file() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -490,6 +502,7 @@ fn lsp_import_map_config_file() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_embedded_in_config_file() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -551,6 +564,7 @@ fn lsp_import_map_embedded_in_config_file() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_embedded_in_config_file_after_initialize() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -623,6 +637,7 @@ fn lsp_import_map_embedded_in_config_file_after_initialize() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_config_file_auto_discovered() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -735,6 +750,7 @@ fn lsp_import_map_config_file_auto_discovered() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_config_file_auto_discovered_symlink() {
   let context = TestContextBuilder::new()
     // DO NOT COPY THIS CODE. Very rare case where we want to force the temp
@@ -800,6 +816,7 @@ fn lsp_import_map_config_file_auto_discovered_symlink() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_imports_comments_cache() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -846,6 +863,7 @@ fn lsp_deno_json_imports_comments_cache() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_node_specifiers() {
   let context = TestContextBuilder::for_npm().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -879,6 +897,7 @@ fn lsp_import_map_node_specifiers() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_vendor_path() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -971,6 +990,7 @@ fn lsp_format_vendor_path() {
 // Disable the `workspace/configuration` capability. Ensure the LSP falls back
 // to using `enablePaths` from the `InitializationOptions`.
 #[test]
+#[timeout(300_000)]
 fn lsp_workspace_enable_paths_no_workspace_configuration() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -1049,6 +1069,7 @@ fn lsp_workspace_enable_paths_no_workspace_configuration() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_did_refresh_deno_configuration_tree_notification() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -1231,6 +1252,7 @@ fn lsp_did_refresh_deno_configuration_tree_notification() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_did_change_deno_configuration_notification() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -1355,6 +1377,7 @@ fn lsp_did_change_deno_configuration_notification() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_task() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -1393,6 +1416,7 @@ fn lsp_deno_task() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_reload_import_registries_command() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -1406,6 +1430,7 @@ fn lsp_reload_import_registries_command() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_attributes() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -1521,6 +1546,7 @@ fn lsp_import_attributes() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_import_completions() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -1695,6 +1721,7 @@ fn lsp_import_map_import_completions() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -1737,6 +1764,7 @@ fn lsp_hover() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_asset() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -1798,6 +1826,7 @@ fn lsp_hover_asset() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_disabled() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -1828,6 +1857,7 @@ fn lsp_hover_disabled() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_inlay_hints() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -2034,6 +2064,7 @@ fn lsp_inlay_hints() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_inlay_hints_not_enabled() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -2082,6 +2113,7 @@ fn lsp_inlay_hints_not_enabled() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_suggestion_actions_disabled() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -2163,6 +2195,7 @@ fn lsp_suggestion_actions_disabled() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_workspace_disable_enable_paths() {
   fn run_test(use_trailing_slash: bool) {
     let context = TestContextBuilder::new().use_temp_cwd().build();
@@ -2381,6 +2414,7 @@ fn lsp_workspace_disable_enable_paths() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_exclude_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -2510,6 +2544,7 @@ fn lsp_exclude_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_unstable_always_enabled() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -2554,6 +2589,7 @@ fn lsp_hover_unstable_always_enabled() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_unstable_enabled() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -2599,6 +2635,7 @@ fn lsp_hover_unstable_enabled() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_change_mbc() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -2665,6 +2702,7 @@ fn lsp_hover_change_mbc() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_closed_document() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -2757,6 +2795,7 @@ fn lsp_hover_closed_document() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_dependency() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -2928,6 +2967,7 @@ fn lsp_hover_dependency() {
 // This tests for a regression covered by denoland/deno#12753 where the lsp was
 // unable to resolve dependencies when there was an invalid syntax in the module
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_deps_preserved_when_invalid_parse() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -3021,6 +3061,7 @@ fn lsp_hover_deps_preserved_when_invalid_parse() {
 
 // Regression test for https://github.com/denoland/vscode_deno/issues/1068.
 #[test]
+#[timeout(300_000)]
 fn lsp_rename_synbol_file_scheme_edits_only() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -3084,6 +3125,7 @@ fn lsp_rename_synbol_file_scheme_edits_only() {
 
 // Regression test for https://github.com/denoland/deno/issues/23121.
 #[test]
+#[timeout(300_000)]
 fn lsp_document_preload_limit_zero_deno_json_detection() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -3113,6 +3155,7 @@ fn lsp_document_preload_limit_zero_deno_json_detection() {
 
 // Regression test for https://github.com/denoland/deno/issues/23141.
 #[test]
+#[timeout(300_000)]
 fn lsp_import_map_setting_with_deno_json() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -3147,6 +3190,7 @@ fn lsp_import_map_setting_with_deno_json() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_typescript_types() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -3201,6 +3245,7 @@ fn lsp_hover_typescript_types() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_jsr() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -3251,6 +3296,7 @@ fn lsp_hover_jsr() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_hover_jsdoc_symbol_link() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -3302,6 +3348,7 @@ fn lsp_hover_jsdoc_symbol_link() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_goto_type_definition() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -3345,6 +3392,7 @@ fn lsp_goto_type_definition() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_call_hierarchy() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -3475,6 +3523,7 @@ fn lsp_call_hierarchy() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_large_doc_changes() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -3577,6 +3626,7 @@ fn lsp_large_doc_changes() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_document_symbol() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -3777,6 +3827,7 @@ fn lsp_document_symbol() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_folding_range() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -3824,6 +3875,7 @@ fn lsp_folding_range() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_rename() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -3877,6 +3929,7 @@ fn lsp_rename() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_selection_range() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -3955,6 +4008,7 @@ fn lsp_selection_range() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_semantic_tokens() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -4015,6 +4069,7 @@ fn lsp_semantic_tokens() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_lens_references() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -4216,6 +4271,7 @@ fn lsp_code_lens_references() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_lens_implementations() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -4390,6 +4446,7 @@ fn lsp_code_lens_implementations() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_lens_test() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -4646,6 +4703,7 @@ fn lsp_code_lens_test() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_lens_test_disabled() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -4685,6 +4743,7 @@ fn lsp_code_lens_test_disabled() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_lens_non_doc_nav_tree() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -4752,6 +4811,7 @@ fn lsp_code_lens_non_doc_nav_tree() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_nav_tree_updates() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -4938,6 +4998,7 @@ fn lsp_nav_tree_updates() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_find_references() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -5047,6 +5108,7 @@ fn lsp_find_references() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_signature_help() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -5168,6 +5230,7 @@ fn lsp_signature_help() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -5356,6 +5419,7 @@ fn lsp_code_actions() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn test_lsp_code_actions_ordering() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -5449,6 +5513,7 @@ fn test_lsp_code_actions_ordering() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_status_file() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -5479,6 +5544,7 @@ fn lsp_status_file() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_deno_cache() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -5569,6 +5635,7 @@ fn lsp_code_actions_deno_cache() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_deno_cache_jsr() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -5672,6 +5739,7 @@ fn lsp_code_actions_deno_cache_jsr() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsr_lockfile() {
   let context = TestContextBuilder::for_jsr().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -5723,6 +5791,7 @@ fn lsp_jsr_lockfile() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsr_auto_import_completion() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -5794,6 +5863,7 @@ fn lsp_jsr_auto_import_completion() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsr_auto_import_completion_import_map() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -5871,6 +5941,7 @@ fn lsp_jsr_auto_import_completion_import_map() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsr_auto_import_completion_import_map_sub_path() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -5945,6 +6016,7 @@ fn lsp_jsr_auto_import_completion_import_map_sub_path() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsr_code_action_missing_declaration() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -6066,6 +6138,7 @@ fn lsp_jsr_code_action_missing_declaration() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsr_code_action_move_to_new_file() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -6180,6 +6253,7 @@ fn lsp_jsr_code_action_move_to_new_file() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_deno_cache_npm() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -6265,6 +6339,7 @@ fn lsp_code_actions_deno_cache_npm() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_deno_cache_all() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -6419,6 +6494,7 @@ fn lsp_code_actions_deno_cache_all() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_deno_types_for_npm() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -6548,6 +6624,7 @@ fn lsp_code_actions_deno_types_for_npm() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_cache_on_save() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -6607,6 +6684,7 @@ fn lsp_cache_on_save() {
 
 // Regression test for https://github.com/denoland/deno/issues/25999.
 #[test]
+#[timeout(300_000)]
 fn lsp_asset_document_dom_code_action() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -6646,6 +6724,7 @@ fn lsp_asset_document_dom_code_action() {
 
 // Regression test for https://github.com/denoland/deno/issues/22122.
 #[test]
+#[timeout(300_000)]
 fn lsp_cache_then_definition() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -6714,6 +6793,7 @@ fn lsp_cache_then_definition() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_imports() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -6965,6 +7045,7 @@ export class DuckConfig {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_imports_dts() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -7037,6 +7118,7 @@ fn lsp_code_actions_imports_dts() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_import_map_remap() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -7148,6 +7230,7 @@ fn lsp_code_actions_import_map_remap() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_refactor() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -7358,6 +7441,7 @@ fn lsp_code_actions_refactor() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_imports_respects_fmt_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -7526,6 +7610,7 @@ fn lsp_code_actions_imports_respects_fmt_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_quote_style_from_workspace_settings() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -7666,6 +7751,7 @@ fn lsp_quote_style_from_workspace_settings() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_refactor_no_disabled_support() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -7736,6 +7822,7 @@ fn lsp_code_actions_refactor_no_disabled_support() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_deadlock() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -7858,6 +7945,7 @@ fn lsp_code_actions_deadlock() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -7917,6 +8005,7 @@ fn lsp_completions() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_private_fields() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -7942,6 +8031,7 @@ fn lsp_completions_private_fields() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_optional() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -8025,6 +8115,7 @@ fn lsp_completions_optional() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_auto_import() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -8085,6 +8176,7 @@ fn lsp_completions_auto_import() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_auto_import_node_builtin() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -8153,6 +8245,7 @@ fn lsp_completions_auto_import_node_builtin() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_npm_completions_auto_import_and_quick_fix_no_import_map() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -8406,6 +8499,7 @@ fn lsp_npm_completions_auto_import_and_quick_fix_no_import_map() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_npm_auto_import_and_quick_fix_byonm() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -8551,6 +8645,7 @@ fn lsp_npm_auto_import_and_quick_fix_byonm() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_npm_auto_import_with_deno_types() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -8675,6 +8770,7 @@ fn lsp_npm_auto_import_with_deno_types() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_node_specifier() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -8784,6 +8880,7 @@ fn lsp_completions_node_specifier() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_infer_return_type() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -8883,6 +8980,7 @@ fn lsp_infer_return_type() {
 
 // Regression test for https://github.com/denoland/deno/issues/23895.
 #[test]
+#[timeout(300_000)]
 fn lsp_npm_types_nested_js_dts() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -8932,6 +9030,7 @@ fn lsp_npm_types_nested_js_dts() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_using_decl() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -8969,6 +9068,7 @@ res"#
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_npm_always_caches() {
   // npm specifiers should always be cached even when not specified
   // because they affect the resolution of each other
@@ -9035,6 +9135,7 @@ fn lsp_npm_always_caches() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_semantic_tokens_for_disabled_module() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -9075,6 +9176,7 @@ fn lsp_semantic_tokens_for_disabled_module() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_auto_import_and_quick_fix_with_import_map() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -9523,6 +9625,7 @@ fn lsp_completions_auto_import_and_quick_fix_with_import_map() {
 
 // Regression test for https://github.com/denoland/deno/issues/25775.
 #[test]
+#[timeout(300_000)]
 fn lsp_quick_fix_missing_import_exclude_bare_node_builtins() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -9590,6 +9693,7 @@ fn lsp_quick_fix_missing_import_exclude_bare_node_builtins() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_snippet() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -9685,6 +9789,7 @@ fn lsp_completions_snippet() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_no_snippet() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -9741,6 +9846,7 @@ fn lsp_completions_no_snippet() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_npm() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -9892,6 +9998,7 @@ fn lsp_completions_npm() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_auto_imports_npm_auto() {
   let context = TestContextBuilder::for_npm().use_temp_cwd().build();
   let temp_dir_path = context.temp_dir().path();
@@ -9956,6 +10063,7 @@ fn lsp_auto_imports_npm_auto() {
 
 // Regression test for https://github.com/denoland/deno/issues/23869.
 #[test]
+#[timeout(300_000)]
 fn lsp_auto_imports_remote_dts() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10024,6 +10132,7 @@ fn lsp_auto_imports_remote_dts() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_npm_specifier_unopened_file() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10103,6 +10212,7 @@ fn lsp_npm_specifier_unopened_file() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_node_builtin() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10323,6 +10433,7 @@ fn lsp_completions_node_builtin() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_node_specifier_node_modules_dir() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10387,6 +10498,7 @@ fn lsp_completions_node_specifier_node_modules_dir() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_registry() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10453,6 +10565,7 @@ fn lsp_completions_registry() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_registry_empty() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10516,6 +10629,7 @@ fn lsp_completions_registry_empty() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_auto_discover_registry() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10553,6 +10667,7 @@ fn lsp_auto_discover_registry() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_cache_location() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10644,6 +10759,7 @@ fn lsp_cache_location() {
 /// the custom signed test server and be able to retrieve the registry config
 /// and cache files.
 #[test]
+#[timeout(300_000)]
 fn lsp_tls_cert() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10733,6 +10849,7 @@ fn lsp_tls_cert() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_npmrc() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10810,6 +10927,7 @@ fn lsp_npmrc() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_diagnostics_warn_redirect() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10886,6 +11004,7 @@ fn lsp_diagnostics_warn_redirect() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_redirect_quick_fix() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -10973,6 +11092,7 @@ fn lsp_redirect_quick_fix() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_lockfile_redirect_resolution() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -11031,6 +11151,7 @@ fn lsp_lockfile_redirect_resolution() {
 
 // Regression test for https://github.com/denoland/vscode_deno/issues/1157.
 #[test]
+#[timeout(300_000)]
 fn lsp_diagnostics_brackets_in_file_name() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11075,6 +11196,7 @@ fn lsp_diagnostics_brackets_in_file_name() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_diagnostics_deprecated() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11129,6 +11251,7 @@ fn lsp_diagnostics_deprecated() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_diagnostics_deno_types() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11157,6 +11280,7 @@ fn lsp_diagnostics_deno_types() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_root_with_global_reference_types() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -11186,6 +11310,7 @@ fn lsp_root_with_global_reference_types() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_diagnostics_refresh_dependents() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11262,6 +11387,7 @@ fn lsp_diagnostics_refresh_dependents() {
 
 // Regression test for https://github.com/denoland/deno/issues/10897.
 #[test]
+#[timeout(300_000)]
 fn lsp_ts_diagnostics_refresh_on_lsp_version_reset() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -11308,6 +11434,7 @@ fn lsp_ts_diagnostics_refresh_on_lsp_version_reset() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_diagnostics_none_for_resolving_types() {
   let context = TestContextBuilder::for_npm().use_temp_cwd().build();
   context
@@ -11341,6 +11468,7 @@ fn lsp_diagnostics_none_for_resolving_types() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jupyter_diagnostics() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11384,6 +11512,7 @@ fn lsp_jupyter_diagnostics() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_untitled_file_diagnostics() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11439,6 +11568,7 @@ struct PerformanceAverages {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_performance() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11499,6 +11629,7 @@ fn lsp_performance() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_no_changes() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11529,6 +11660,7 @@ fn lsp_format_no_changes() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_error() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11558,6 +11690,7 @@ fn lsp_format_error() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_mbc() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11614,6 +11747,7 @@ fn lsp_format_mbc() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_exclude_with_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -11665,6 +11799,7 @@ fn lsp_format_exclude_with_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_exclude_default_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -11716,6 +11851,7 @@ fn lsp_format_exclude_default_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_untitled() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11756,6 +11892,7 @@ fn lsp_format_untitled() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_json() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -11805,6 +11942,7 @@ fn lsp_format_json() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_editor_options() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -11866,6 +12004,7 @@ fn lsp_format_editor_options() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_json_no_diagnostics() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -11904,6 +12043,7 @@ fn lsp_json_no_diagnostics() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_json_import_with_query_string() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -11938,6 +12078,7 @@ fn lsp_json_import_with_query_string() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_markdown() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -11980,6 +12121,7 @@ fn lsp_format_markdown() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_html() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -12019,6 +12161,7 @@ fn lsp_format_html() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_css() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -12126,6 +12269,7 @@ fn lsp_format_css() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_yaml() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -12165,6 +12309,7 @@ fn lsp_format_yaml() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_sql() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -12214,6 +12359,7 @@ fn lsp_format_sql() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_component() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -12360,6 +12506,7 @@ fn lsp_format_component() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_format_with_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -12468,6 +12615,7 @@ fn lsp_format_with_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_markdown_no_diagnostics() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -12506,6 +12654,7 @@ fn lsp_markdown_no_diagnostics() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_configuration_did_change() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -12592,6 +12741,7 @@ fn lsp_configuration_did_change() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_completions_complete_function_calls() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -12664,6 +12814,7 @@ fn lsp_completions_complete_function_calls() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_workspace_symbol() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -12759,6 +12910,7 @@ fn lsp_workspace_symbol() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_ignore_lint() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -12883,6 +13035,7 @@ fn lsp_code_actions_ignore_lint() {
 
 /// This test exercises updating an existing deno-lint-ignore-file comment.
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_update_ignore_lint() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -13009,6 +13162,7 @@ console.log(snake_case);
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_code_actions_lint_fixes() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -13107,6 +13261,7 @@ fn lsp_code_actions_lint_fixes() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_lint_with_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -13148,6 +13303,7 @@ fn lsp_lint_with_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_lint_exclude_with_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -13187,6 +13343,7 @@ fn lsp_lint_exclude_with_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsx_import_source_pragma() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -13250,6 +13407,7 @@ export function B() {
 
 #[ignore = "https://github.com/denoland/deno/issues/21770"]
 #[test]
+#[timeout(300_000)]
 fn lsp_jsx_import_source_config_file_automatic_cache() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -13315,6 +13473,7 @@ fn lsp_jsx_import_source_config_file_automatic_cache() {
 
 #[ignore = "https://github.com/denoland/deno/issues/21770"]
 #[test]
+#[timeout(300_000)]
 fn lsp_jsx_import_source_package_json_automatic_cache() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -13389,6 +13548,7 @@ fn lsp_jsx_import_source_package_json_automatic_cache() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsx_import_source_byonm_preact() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -13449,6 +13609,7 @@ fn lsp_jsx_import_source_byonm_preact() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsx_import_source_types_pragma() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -13555,6 +13716,7 @@ struct TestRunResponseParams {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_testing_api() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -13817,6 +13979,7 @@ Deno.test({
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_closed_file_find_references() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -13870,6 +14033,7 @@ fn lsp_closed_file_find_references() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_closed_file_find_references_low_document_pre_load() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -13912,6 +14076,7 @@ fn lsp_closed_file_find_references_low_document_pre_load() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_closed_file_find_references_excluded_path() {
   // we exclude any files or folders in the "exclude" part of
   // the config file from being pre-loaded
@@ -13966,6 +14131,7 @@ fn lsp_closed_file_find_references_excluded_path() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_data_urls_with_jsx_compiler_option() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -14030,6 +14196,7 @@ fn lsp_data_urls_with_jsx_compiler_option() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_node_modules_dir() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -14155,6 +14322,7 @@ fn lsp_node_modules_dir() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_vendor_dir() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -14389,6 +14557,7 @@ fn lsp_vendor_dir() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_import_map() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -14518,6 +14687,7 @@ fn lsp_deno_json_scopes_import_map() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_vendor_dir() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -14704,6 +14874,7 @@ fn lsp_deno_json_scopes_vendor_dir() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_node_modules_dir() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -14893,6 +15064,7 @@ fn lsp_deno_json_scopes_node_modules_dir() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_ts_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -14965,6 +15137,7 @@ fn lsp_deno_json_scopes_ts_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_declaration_files() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15031,6 +15204,7 @@ fn lsp_deno_json_scopes_declaration_files() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_find_references() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15073,6 +15247,7 @@ fn lsp_deno_json_scopes_find_references() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_file_rename_import_edits() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15119,6 +15294,7 @@ fn lsp_deno_json_scopes_file_rename_import_edits() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_goto_implementations() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15158,6 +15334,7 @@ fn lsp_deno_json_scopes_goto_implementations() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_call_hierarchy() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15268,6 +15445,7 @@ fn lsp_deno_json_scopes_call_hierarchy() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_rename_symbol() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15326,6 +15504,7 @@ fn lsp_deno_json_scopes_rename_symbol() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_scopes_search_symbol() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15370,6 +15549,7 @@ fn lsp_deno_json_scopes_search_symbol() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_workspace_fmt_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15491,6 +15671,7 @@ fn lsp_deno_json_workspace_fmt_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_workspace_lint_config() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15638,6 +15819,7 @@ fn lsp_deno_json_workspace_lint_config() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_workspace_import_map() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -15737,6 +15919,7 @@ fn lsp_deno_json_workspace_import_map() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_workspace_lockfile() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -15801,6 +15984,7 @@ fn lsp_workspace_lockfile() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_workspace_vendor_dir() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -15873,6 +16057,7 @@ fn lsp_deno_json_workspace_vendor_dir() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_workspace_node_modules_dir() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -15948,6 +16133,7 @@ fn lsp_deno_json_workspace_node_modules_dir() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_deno_json_workspace_jsr_resolution() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16008,6 +16194,7 @@ fn lsp_deno_json_workspace_jsr_resolution() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_workspace_compiler_options_root_dirs() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16068,6 +16255,7 @@ fn lsp_workspace_compiler_options_root_dirs() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_npm_workspace() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -16170,6 +16358,7 @@ fn lsp_npm_workspace() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_import_unstable_bare_node_builtins_auto_discovered() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16259,6 +16448,7 @@ fn lsp_import_unstable_bare_node_builtins_auto_discovered() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jupyter_byonm_diagnostics() {
   let context = TestContextBuilder::for_npm().use_temp_cwd().build();
   let temp_dir = context.temp_dir().path();
@@ -16319,6 +16509,7 @@ fn lsp_jupyter_byonm_diagnostics() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_byonm() {
   let context = TestContextBuilder::for_npm().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16410,6 +16601,7 @@ fn lsp_byonm() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_sloppy_imports() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16536,6 +16728,7 @@ fn lsp_sloppy_imports() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_sloppy_imports_prefers_dts() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16613,6 +16806,7 @@ fn lsp_sloppy_imports_prefers_dts() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn sloppy_imports_not_enabled() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16740,6 +16934,7 @@ fn sloppy_imports_not_enabled() {
 
 // Regression test for https://github.com/denoland/deno/issues/24457.
 #[test]
+#[timeout(300_000)]
 fn lsp_byonm_js_import_resolves_to_dts() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -16779,6 +16974,7 @@ fn lsp_byonm_js_import_resolves_to_dts() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn decorators_tc39() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16827,6 +17023,7 @@ new C().m(1);
 }
 
 #[test]
+#[timeout(300_000)]
 fn decorators_ts() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16882,6 +17079,7 @@ C.test();
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_uses_lockfile_for_npm_initialization() {
   let context = TestContextBuilder::for_npm().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -16911,6 +17109,7 @@ fn lsp_uses_lockfile_for_npm_initialization() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_cjs_internal_types_default_export() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -16959,6 +17158,7 @@ fn lsp_cjs_internal_types_default_export() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_cjs_import_dual() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -17007,6 +17207,7 @@ fn lsp_cjs_import_dual() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_type_commonjs() {
   let context = TestContextBuilder::new()
     .use_http_server()
@@ -17056,6 +17257,7 @@ fn lsp_type_commonjs() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_ts_code_fix_any_param() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir();
@@ -17125,6 +17327,7 @@ fn lsp_ts_code_fix_any_param() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_semantic_token_caching() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir().path();
@@ -17209,6 +17412,7 @@ fn lsp_semantic_token_caching() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_jsdoc_named_example() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let temp_dir = context.temp_dir().path();
@@ -17261,6 +17465,7 @@ fn lsp_jsdoc_named_example() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn lsp_wasm_module() {
   let context = TestContextBuilder::new()
     .use_temp_cwd()
@@ -17305,6 +17510,7 @@ fn lsp_wasm_module() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn wildcard_augment() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -17340,6 +17546,7 @@ fn wildcard_augment() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn compiler_options_types() {
   let context = TestContextBuilder::for_npm().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -17385,6 +17592,7 @@ fn compiler_options_types() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn type_reference_import_meta() {
   let context = TestContextBuilder::for_npm().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();
@@ -17458,6 +17666,7 @@ fn type_reference_import_meta() {
 }
 
 #[test]
+#[timeout(300_000)]
 fn ambient_module_errors_suppressed() {
   let context = TestContextBuilder::new().use_temp_cwd().build();
   let mut client = context.new_lsp_command().build();