Repository navigation
Fix remaining Outerloop failures in DCP, CLI, and Dashboard tests - #20466
Merged
Merged
Conversation
This comment has been minimized.
This comment has been minimized.
Contributor
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 20466Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 20466" |
Ankit Jain (radical)
marked this pull request as ready for review
September 25, 2026 01:29
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Karol Zadora-Przylecki (karolz-ms)
approved these changes
Sep 25, 2026
Contributor
|
KubernetesService and DCP watcher changes look good. CLI tests seem unhappy though. |
This comment has been minimized.
This comment has been minimized.
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. |
This comment has been minimized.
This comment has been minimized.
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. |
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. |
Contributor
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
Ankit Jain (radical)
force-pushed
the
ankj/fix-remaining-outerloop-flakes
branch
from
September 25, 2026 18:12
69c271a to
cf114f3
Compare
This comment has been minimized.
This comment has been minimized.
LocalArchive E2E installs copied built packages into the local hive but left the CLI on its baked channel, so aspire add could not resolve the 14.0.0-ci AppHost SDK. DCP watches also inherited the one-minute non-streaming API timeout even though the Kubernetes client buffers their long-lived response body. The dashboard smooth-scroll test separately depended on observing an intermediate compositor frame that Windows headless Chromium can skip. Select the local hive after LocalArchive installs, keep watch requests alive until their periodic restart, and drive the scrollend contract deterministically in the Playwright test. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
LocalArchive installs can auto-detect a PR package suffix and place packages in a pr-N hive, which conflicts with configuring the installed CLI to use the local hive. Long-lived watch factories can also be canceled by their periodic restart token before returning an enumerable. That cancellation currently escapes and terminates the outer watch instead of recreating it. Force LocalArchive installs into the local hive and restart factories whose restart interval expires. Cover both LocalArchive command paths and both periodic-enumerable overloads. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The periodic factory restart handler currently treats every cancellation as a restart while the outer token is active. A factory canceled for another reason would be silently retried instead of propagating its failure. Handle cancellation only when the periodic restart token fired, and verify that unrelated cancellation propagates for both enumerable overloads. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
PR archive tests install pre-downloaded packages through LocalArchive. Forcing those packages into the local hive breaks the CLI's baked pr-N channel, so generated AppHosts cannot resolve the PR AppHost SDK. Allow the installer to infer the hive from the package version and only configure the global local channel for non-PR archives. Cover both PR and CI package identities with focused tests. Periodic restart handling also retried independent cancellation in the struct factory and class enumerator paths. Require the periodic token to be canceled before restarting, and verify unrelated cancellation is propagated without retrying the factory. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This was referenced Oct 29, 2026
Open
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.
Four repeat failures remained in the Outerloop workflow:
Root causes
LocalArchive test installs must preserve the package build identity. PR packages use a
pr-Nhive that matches the CLI's baked channel. Non-PR CI packages such as14.0.0-ciuse the local hive, but their CLI archive retains a bakeddailyidentity. User configuration does not override the environment, install-sidecar, or assembly identity, so generated AppHosts selected daily feeds and could not resolve the CI SDK from the local hive.DCP watch connections can stall while waiting for their initial HTTP response. Each connection attempt needs the API timeout so a stalled request is canceled and retried, while an established stream must remain active until its longer periodic restart. Factory or enumeration cancellation unrelated to that periodic restart must propagate instead of being silently retried.
The template tests matched
.main-grid .resource-row. Fluent data-grid copies the configured row class onto optimized plain cells, so the locator returned bothtrrows andtdcells. A matched cell has no descendant grid cells, causing resource extraction to fail even though the dashboard displayed healthy resources.The smooth-scroll test required observing an intermediate native animation frame. Windows headless Chromium can skip that frame under load even though the scroll request and
scrollendbehavior are correct.Fix
LocalArchive installs now let the installer derive
pr-Norlocalfrom the package version. Non-PR archives explicitly overrideASPIRE_CLI_CHANNEL,ASPIRE_CLI_VERSION, andASPIRE_CLI_PACKAGESso generated projects consume the local package directory. PR archives retain their automatically selectedpr-Nidentity. Focused tests cover both package identities, both install command paths, and the exact local identity override.DCP watches now apply the API timeout to each connection attempt and retry timeout failures until the periodic restart token is canceled. Once connected, the watch stream remains governed by the periodic restart token.
PeriodicRestartAsyncEnumerablerecreates factories canceled by that restart token, while cancellation from any other source propagates without retrying. Focused regressions require a second connection attempt after a deliberately stalled watch and cover both periodic-enumerable overloads.Template resource checks now restrict the locator to
.main-grid tr.resource-rowand keep grid-cell lookups scoped to each matched row.The Playwright test captures the requested smooth-scroll destination and dispatches
scrollendexplicitly after growing the content, preserving the product contract without depending on compositor timing.Validation
CliInstallStrategyTests: 61 passedAspire.Deployment.EndToEnd.Testsbuild: succeededAspire.Templates.Testsbuild: succeededKubernetesServiceTestsandPeriodicRestartAsyncEnumerableTests: 14 passedDashboardInteractionsTests: 13 passedSurprises
The intermittent terminal WebSocket failures are intentionally unchanged. They moved between operating systems and test cases across reruns, and no reproducible root cause was established.