Repository navigation
[release/17.0] Fix VS Code E2E folder picker flake after a colliding selection - #22025
Closed
Mitch Denny (mitchdenny) wants to merge 1 commit into
Closed
Mitch Denny (mitchdenny) wants to merge 1 commit into
Mitch Denny (mitchdenny) wants to merge 1 commit into
Conversation
## Description **What failed:** `Workspace target proof E2E › reopens the project folder picker after a colliding selection` timed out on attempt 1 in VS Code extension E2E (Linux, workspace-target-proof): [run 40807158783 / job 123237221153](https://github.com/microsoft/aspire/actions/runs/40807158783/job/123237221153). The test waited for the notification `The output directory '…/colliding-parent/aspire-empty' already exists and is not empty…`, which never appeared. In the failure screenshot, the folder picker is still open with the typed path and the parent listing (`..`, `colliding-parent`, `valid-parent`). The extension log shows `promptForFilePath` never returned, and it was cancelled at teardown. ## Failure stats (14d, attempt 1) `CI` workflow on microsoft/aspire, runs created 2026-10-25 06:28 → 2026-11-08 06:28 UTC, **attempt 1 only**. Denominator: attempt-1 jobs that ran (success or failure). Hits: the failed job's log matches the signature. Jobs that lost their runner, which have no log, are excluded. Main runs have no reruns, so their flake check is the next main run of the job. | | | |---|---| | Signature | `reopens the project folder picker after a colliding selection` timeout | | Job | VS Code extension E2E (Linux, workspace-target-proof) | | main pushes: hits / runs | 0 / 153 (0.00%) | | main pushes, 30d: hits / runs | 0 / 265 (0.00%). The 16 days before the 14d window add 0 hits. | | PR runs: hits / runs | 3 / 816 (0.37%); 3 PR-caused excluded | | Combined rate | 3 / 969 = **0.31%** | | Flake check | PR: 3/3 rerun hits passed on rerun (0 never rerun) | | First / last hit | 2026-10-28 / 2026-10-29 | | Still hitting main? | Last main hit: never. 123 main runs since the last hit (2026-10-29), with 0 hits | | Fix evidence | Local: forced-race spec 3/3 fail → 3/3 pass. The full shard passed 3/3, but the unmodified baseline also passed 2/2. This PR's CI: workspace-target-proof passed 3/3 attempts on the head commit. | Failing attempt-1 jobs, most recent first (6 of 6 log-verified hits, including PR-caused ones marked excluded): | Date (UTC) | Branch | Job | Signature excerpt | |---|---|---|---| | [2026-10-29 19:11](https://github.com/microsoft/aspire/actions/runs/40937836793/job/123684689037) | `danegsta-nuget-mapping-regression` (PR-caused, excluded) | VS Code extension E2E (Linux, workspace-target-proof) | `reopens the project folder picker after a colliding selection: TimeoutError: Timed out waiting for the generated AppHost…` | | [2026-10-29 02:34](https://github.com/microsoft/aspire/actions/runs/40807158783/job/123237221153) | `jamesnk/configurable-integration-sources` | VS Code extension E2E (Linux, workspace-target-proof) | `reopens the project folder picker after a colliding selection: TimeoutError: Timed out waiting for notification containi…` | | [2026-10-29 00:30](https://github.com/microsoft/aspire/actions/runs/40794520210/job/123195193042) | `danegsta-nuget-mapping-regression` (PR-caused, excluded) | VS Code extension E2E (Linux, workspace-target-proof) | `reopens the project folder picker after a colliding selection: TimeoutError: Timed out waiting for the generated AppHost…` | | [2026-10-28 23:37](https://github.com/microsoft/aspire/actions/runs/40788634670/job/123175977606) | `dependabot/npm_and_yarn/playground/AspireWithJavaScript/AspireJavaScript.Angular/npm_and_yarn-b95ee0e95b` | VS Code extension E2E (Linux, workspace-target-proof) | `reopens the project folder picker after a colliding selection: TimeoutError: Timed out waiting for quick pick 'No'. Visi…` | | [2026-10-28 20:53](https://github.com/microsoft/aspire/actions/runs/40767263273/job/123106717682) | `danegsta-nuget-mapping-regression` (PR-caused, excluded) | VS Code extension E2E (Linux, workspace-target-proof) | `reopens the project folder picker after a colliding selection: TimeoutError: Timed out waiting for the generated AppHost…` | | [2026-10-28 01:32](https://github.com/microsoft/aspire/actions/runs/40615656113/job/122583915112) | `mitchdenny-existing-aks-environments` | VS Code extension E2E (Linux, workspace-target-proof) | `reopens the project folder picker after a colliding selection: TimeoutError: Timed out waiting for quick pick 'No'. Visi…` | **Verdict: WEAK.** 3 non-PR-caused hits, **never on main**, all on 2026-10-28/29 and all passed on rerun. Another 3 hits on `danegsta-nuget-mapping-regression` failed on all 4 attempts and are excluded as PR-caused. Since 2026-10-29 there are **0 hits** in 123 main runs and the following PR runs, so it may already be gone or be very rare. <!-- /failure-stats --> **Why:** The test enables `files.simpleDialog.enable`. That dialog navigates asynchronously as the path is typed (`handleValueChange` → `tryUpdateItems` → `fileService.stat` → `updateItems`). The old helper typed the path and pressed Enter straight away. If Enter arrives before that navigation finishes, `onDidAccept` runs `tryUpdateItems` itself, sees that the listing changed, and returns without resolving ("If the items have updated, don't try to resolve"). Enter is consumed, and the dialog stays open forever. **Fix:** Add a test helper, `answerActiveSimpleFileDialog`, and use it for both folder answers. The helper: - waits for the dialog's initial listing to load, so the initial navigation can't overwrite the typed text; - types the path; - presses Enter only once the input shows the typed path and the listing shows that folder, meaning navigation has finished. This is test-only. There are no product changes, no added sleeps or retries, and no weakened assertions. ## Confidence - **Before (forced race):** A temporary local spec reproduced the race deterministically by typing the path and pressing Enter in a single `sendKeys`. It failed **3/3** with the CI signature: the same notification timeout, and the dialog left open with the typed path and parent listing. - **After:** The same temporary spec using `answerActiveSimpleFileDialog` passed **3/3**. - The full `workspace-target-proof` shard with this change passed **3/3** locally (VS Code 1.130.0, xvfb, CLI/DCP/nugets from main CI artifacts). An unmodified baseline also passed 2/2, so the flake is intermittent rather than consistent. - `yarn compile-e2e` and `eslint` pass on the touched files. - **Not run:** other E2E shards, macOS/Windows, and the extension unit tests. Only E2E helpers changed, and no other test uses the simple file dialog. **How we stop this recurring:** Tests that drive VS Code's simple file dialog should use `answerActiveSimpleFileDialog`, not `answerActiveInput`. The helper's comment explains the race. Refs #19282 (there is no dedicated issue for this flake). ## Checklist - Is this feature complete? - [x] Yes. Ready to ship. - [ ] No. Follow-up changes expected. - Are you including unit tests for the changes and scenario tests if relevant? - [x] Yes (E2E test fix) - [ ] No - Did you add public API? - [ ] Yes - [x] No - Does the change make any security assumptions or guarantees? - [ ] Yes - [x] No **🤖 Posted by AspireAgent (AI Agent)** Co-authored-by: davidfowl <95136+davidfowl@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> (cherry picked from commit 2f471dc)
14 tasks
This comment has been minimized.
This comment has been minimized.
Contributor
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
Mitch Denny (mitchdenny)
force-pushed
the
mitchdenny-backport-17-0-28-pr21926
branch
2 times, most recently
from
November 10, 2026 04:24
8b6f309 to
8c75800
Compare
Contributor
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 22025Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 22025" |
Mitch Denny (mitchdenny)
marked this pull request as ready for review
November 10, 2026 04:55
Mitch Denny (mitchdenny)
requested review from
Adam Ratzman (adamint) and
Ella Hathaway (ellahathaway)
as code owners
November 10, 2026 04:55
Member
Author
|
Approved for inclusion in release/17.0. Do not merge yet. |
Mitch Denny (mitchdenny)
force-pushed
the
mitchdenny-backport-17-0-28-pr21926
branch
from
November 10, 2026 05:52
8c75800 to
90eba77
Compare
This comment has been minimized.
This comment has been minimized.
Mitch Denny (mitchdenny)
force-pushed
the
mitchdenny-backport-17-0-28-pr21926
branch
from
November 10, 2026 06:44
90eba77 to
8c75800
Compare
Mitch Denny (mitchdenny)
force-pushed
the
mitchdenny-backport-17-0-28-pr21926
branch
from
November 10, 2026 07:35
8c75800 to
90eba77
Compare
Mitch Denny (mitchdenny)
force-pushed
the
mitchdenny-backport-17-0-28-pr21926
branch
from
November 10, 2026 08:54
90eba77 to
8c75800
Compare
Contributor
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Backport of #21926 to
release/17.0(cherry-picked from 2f471dc with no modifications). Layer 28 of 55 in the release/17.0 backport stack; stacked on #22024.Backport recommendation: No — Extension test flake.
Backport of #21926
Checklist
<remarks />and<code />elements on your triple slash comments?