Skip to content

Re-enable VS Code extension E2E tests in CI - #19142

Merged
Adam Ratzman (adamint) merged 8 commits into
microsoft:mainfrom
adamint:reenable-extension-e2e
Aug 12, 2026
Merged

Adam Ratzman (adamint) merged 8 commits into
microsoft:mainfrom
adamint:reenable-extension-e2e

Conversation

@adamint

@adamint Adam Ratzman (adamint) commented Aug 7, 2026 •

Copy link
Copy Markdown
Member

Re-enables the VS Code extension E2E workflow by removing the false && guard and restoring the aggregate-gate skip checks.

Probe result

Run 31202231991 exercised the E2E matrix after the guard was removed. Verify ExTester internal feed availability passed.

Passed on both Linux and Windows in that run: apphost-tree, command-palette, debug-dashboard, debug-startup-timeout, discovery-configuration, edge-cases, package-surface, settings-files, tree-actions, and zero-to-running. debug-dashboard passing on both platforms removes the main known reason the job had been disabled.

A later run exposed a race in apphost-tree: the test waited for the transient Searching for AppHosts... welcome after discovery could already finish. This PR now gates the simulated ps and streaming ls CLI calls so the loading state is observed deterministically before releasing the running AppHost snapshot and then the workspace candidate.

The only deterministic E2E shard failure from the original probe was azure-functions on Linux: it timed out after 300000ms waiting for e2e-functions to reach Running with Last error: <none>. The job log shows Azure Functions Core Tools 4.12.1 was installed and func --version succeeded, so this was not a missing Core Tools install. The workflow currently has no Windows azure-functions shard.

Follow-up

The azure-functions shard remains visible in the reusable workflow, but the Functions fixture is disabled pending #19151. The other VS Code extension E2E shards are re-enabled.

Validation after the AppHost race fix: run 31212569613 passed both apphost-tree jobs (Linux and Windows) and reported no VS Code extension E2E failures.

Review follow-up

Re-checked the guard and fixed it to slice the intended running AppHosts appear before slow discovery results test block before comparing the wait/release ordering. The earlier unrelated waitForWorkspaceRediscoveryLoading occurrence can no longer make the guard pass.

Validation from extension/:

corepack yarn compile-tests   passed
corepack yarn compile         webpack succeeded with existing optional/ws warnings
corepack yarn lint            passed
./node_modules/.bin/mocha out/test/e2eLaunchProfile.test.js --ui tdd --grep "gates slow AppHost discovery"
  1 passing

Mutation check: moving the intended wait after discoveryGate.releasePsSnapshot() made the fixed guard fail on the wait-before-release assertion.

Pushed commit: b74dc620c7df64fb67177c6f5f57590cc4da73f5.

Review convergence follow-up

Latest Copilot pass found that disabledIssue skipped Azure Functions prerequisites but not the actual E2E execution step. The Run extension E2E tests step now has the same !matrix.disabledIssue guard, so disabled shards stay visible in the matrix without running the spec.

Validation:

corepack yarn --silent compile-tests                         passed
corepack yarn --silent compile                               webpack succeeded with existing optional/ws warnings
corepack yarn --silent unit-test --grep "E2E launch profile"
  50 passing

Mutation check: removing the Run extension E2E tests condition made pins the real Azure Functions toolchain for the offline E2E shard fail on assert.ok(runStep.includes('if: ${{ !matrix.disabledIssue }}')). Restored fix reran green.

Pushed commit: 0d41da0bf69bd957cc94c659dd74c9dc13395ccb.

Copilot AI balanced review requested due to automatic review settings August 7, 2026 17:25
@github-actions github-actions Bot added the area-engineering-systems infrastructure helix infra engineering repo stuff label Aug 7, 2026
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 19142

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 19142"

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Re-enables VS Code extension E2E tests and restores aggregate-gate enforcement.

Changes:

  • Removes the unconditional skip guard.
  • Treats unexpectedly skipped E2E runs as failures.
Show a summary per file
File Description
.github/workflows/tests.yml Restores E2E execution and gate checks.

Review details

  • Files reviewed: 1/1 changed files
  • Comments generated: 0
  • Review effort level: Balanced

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

Suppressed comments (2)

.github/workflows/extension-e2e-tests.yml:258

  • The temporary-disable behavior has no regression coverage even though extension/src/test/e2eLaunchProfile.test.ts:216-236 already source-checks this exact Azure Functions shard. Without asserting disabledIssue and the prerequisite guard, a later edit can silently re-enable issue #19151 while those tests still pass. Please update that test to pin the disabled marker and guarded install behavior.
            disabledIssue: 'https://github.com/microsoft/aspire/issues/19151'

.github/workflows/tests.yml:830

  • This comment does not match the current selector configuration. setup_for_tests passes enforce: 'false' at tests.yml:69, and .github/actions/select-tests/action.yml:19 documents that audit mode sets every run_* output to true; non-PR events also force the full set. Therefore this job currently runs on unrelated changes too. Describe the condition in terms of the selector output so the aggregate-gate exception remains accurate in both audit and enforce modes.
        # - extension_e2e_tests: this job only runs when the PR/push changes the VS Code extension,
        #   Aspire CLI, or the extension E2E workflow wiring.
  • Files reviewed: 2/2 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

Copilot AI review requested due to automatic review settings August 7, 2026 19:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

Suppressed comments (1)

extension/src/test/e2eLaunchProfile.test.ts:510

  • This lookup resolves the earlier waitForWorkspaceRediscoveryLoading call at line 92, not the call in the gated test. Removing or moving the gated test's loading assertion after releasePsSnapshot() would therefore still pass this regression test and allow the CI race to return. Match the unique call and verify every index exists before checking their order.
        assert.ok(appHostTree.indexOf('await waitForWorkspaceRediscoveryLoading') < appHostTree.indexOf('discoveryGate.releasePsSnapshot();'));
  • Files reviewed: 5/5 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

Adam Ratzman and others added 3 commits August 7, 2026 16:10
Reverts the `false &&` guard added in microsoft#18547 and restores the two
run_extension_e2e skip-checks in the aggregate gate.

The job has been dark since 2026-06-29. microsoft#18547 disabled it because the
Windows debug-dashboard shard was consistently failing, but it linked
microsoft#18412 as the tracker -- and
that issue had already been closed as completed on 2026-06-26 by the
*previous* re-enable (microsoft#18464). So there is currently no open issue
tracking the disable, and nothing surfaces that the shards do not run.

This change is a probe: CI on this PR exercises the shards against
current main so we can see empirically whether debug-dashboard still
fails, rather than inferring it from a six-week-old report.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 487b899d-d79d-4349-a84b-a026861bde7f
The re-enable probe showed the non-Functions VS Code extension E2E shards passing, while the Linux Azure Functions shard timed out waiting for e2e-functions to reach Running.

Keep the shard visible in the workflow, but leave the Functions fixture disabled with a tracked issue until the Linux startup timeout is root-caused.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Gate the simulated ps and streaming ls CLI calls so the test observes the loading welcome before allowing the running AppHost snapshot and workspace candidate to arrive.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 7, 2026 20:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

Suppressed comments (1)

extension/src/test/e2eLaunchProfile.test.ts:510

  • This lookup matches the earlier unrelated loading wait in appHostTree.e2e.test.ts (currently line 92), not the wait in the gated test. As a result, the assertion still passes if releasePsSnapshot() is moved before the intended wait, so the regression guard does not enforce the ordering it claims to protect. Scope the indices to the gated test block.
        assert.ok(appHostTree.indexOf('await waitForWorkspaceRediscoveryLoading') < appHostTree.indexOf('discoveryGate.releasePsSnapshot();'));
  • Files reviewed: 5/5 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 487b899d-d79d-4349-a84b-a026861bde7f

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

  • Files reviewed: 5/5 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

  • Files reviewed: 5/5 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

A shard row is disabled by adding disabledIssue to its matrix entry, which keeps
the job visible while the fixture is broken. That only holds if every shard-only
step carries the same condition: guarding the Azure Functions Core Tools install
alone still runs the suite without its prerequisites, and a shard that runs no
tests but reports green is indistinguishable from one that passed unless the job
says why. The test parses the workflow and asserts the run-e2e.js step and every
matrix.installAzureFunctions step are guarded by !matrix.disabledIssue, and that
the skip notice step is not.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

  • Files reviewed: 6/6 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

Copilot AI review requested due to automatic review settings August 10, 2026 07:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

  • Files reviewed: 6/6 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@adamint
Adam Ratzman (adamint) merged commit ff0dbb4 into microsoft:main Aug 12, 2026
1073 of 1080 checks passed
@github-actions github-actions Bot added this to the 13.6 milestone Aug 12, 2026
Mitch Denny (mitchdenny) added a commit that referenced this pull request Aug 12, 2026
PR #19146 (dfa7428) added an assertion that every disabled row in the
extension E2E workflow matrix is explicitly tracked in expectedDisabledRows.
PR #19142 (ff0dbb4) added a disabled row for the Linux azure-functions
shard 80 seconds later. Each was green on its own branch, but together they
form a semantic merge conflict: the workflow has one disabled row and the
allowlist is empty, so "Run VS Code extension unit tests (Windows)" fails on
every run of main.

Add the tracking entry so the allowlist matches the workflow. The allowlist
stays hand-maintained by design - deriving it from the workflow would make
the assertion vacuous, since its whole purpose is to force disabling a shard
to be an explicit, reviewable code change.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 11, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-engineering-systems infrastructure helix infra engineering repo stuff

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants