From bb8134a2a5e699bd30e0f0b384144bd5a039af93 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 7 Mar 2026 13:48:54 +0000 Subject: [PATCH 1/2] perf: run test project builds in parallel during Test Explorer refresh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, the refreshTestList function built each test project sequentially using Promise.mapExecuteForAll. With multiple test projects, this means projects are built one at a time — the total refresh time is the sum of all build times. This change switches to Promise.all so builds run concurrently, matching the approach already used for test discovery in discoverTests_WithDotnetCli (which uses Promise.all for --list-tests discovery and executeWithMaxParallel for TRX-based discovery). For a workspace with N test projects each taking ~30 s to build, this reduces the refresh delay from ~30 N seconds to ~30 seconds. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/Components/TestExplorer.fs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Components/TestExplorer.fs b/src/Components/TestExplorer.fs index a6bcafb7..754b8ee6 100644 --- a/src/Components/TestExplorer.fs +++ b/src/Components/TestExplorer.fs @@ -2119,13 +2119,15 @@ module Interactions = let! buildOutcomePerProject = testProjects - |> Promise.mapExecuteForAll (fun project -> + |> List.map (fun project -> promise { let projectPath = project.Project logger.Info($"Building {projectPath}") let! processExit = MSBuild.invokeMSBuildWithCancel projectPath "Build" cancellationToken return (project, processExit) }) + |> Promise.all + |> Promise.map List.ofArray From 1e63a4d35b5f99a4d71766f32ca9090db34bc6f9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 7 Mar 2026 13:53:06 +0000 Subject: [PATCH 2/2] ci: trigger checks