Skip to content

Fix for Aspire.Deployment.EndToEnd.Tests.FrontDoorDeploymentTests.DeployReactTemplateWithFrontDoor#17431

Open
mitchdenny wants to merge 1 commit into
mainfrom
copilot/fix-frontdoor-deployment-e2e
Open

Fix for Aspire.Deployment.EndToEnd.Tests.FrontDoorDeploymentTests.DeployReactTemplateWithFrontDoor#17431
mitchdenny wants to merge 1 commit into
mainfrom
copilot/fix-frontdoor-deployment-e2e

Conversation

@mitchdenny
Copy link
Copy Markdown
Member

⚠️ This PR was created automatically by a workflow analyzing Deployment E2E test failures on main. It is intentionally opened as a draft so a human can review the fix before merging.

Fix for Aspire.Deployment.EndToEnd.Tests.FrontDoorDeploymentTests.DeployReactTemplateWithFrontDoor

Fixes #17426

Problem

The test consistently fails on every nightly Deployment E2E run with:

Hex1b.Automation.WaitUntilTimeoutException : WaitUntil timed out after 00:01:00
    waiting for: text "(based on NuGet.config)" to appear

The 60-second WaitUntilText("(based on NuGet.config)") after the first
aspire add Aspire.Hosting.Azure.AppContainers times out. The recorded
terminal for the failing run shows that aspire add installs the package
directly without any version-selection prompt:

⠲ Adding Aspire hosting integration...
✅ The package Aspire.Hosting.Azure.AppContainers::13.4.0-dev was added successfully.
[6 OK] $

Root Cause

When aspire add resolves a single candidate from the local bundle (the
typical CI case), it skips the legacy "(based on NuGet.config)" version-selection prompt and installs directly. The test's hard-coded wait for that
prompt is therefore brittle.

Fix

Replace the explicit WaitUntilTextAsync(...) + EnterAsync() pair with
WaitForAspireAddCompletionAsync, which already handles both prompted and
prompt-less code paths and is the same helper used by the other deployment
E2E tests (e.g. the AKS cert-manager test).

Verification

CI on this PR will run the standard build. After CI is green, the
/deployment-test command will be triggered to re-run the affected
deployment E2E test against Azure and confirm the fix.

The test hard-coded a WaitUntilText for the legacy '(based on NuGet.config)'
version-selection prompt and pressed Enter to accept the default. However when
'aspire add' resolves a package from the local bundle (the typical CI case)
no version prompt is shown and the command installs directly, causing the
60-second WaitUntilText to time out.

Replace the prompt-specific wait with WaitForAspireAddCompletionAsync, which
already handles both the prompted and prompt-less code paths and is the same
helper used by the other deployment E2E tests (e.g. the AKS cert-manager test).

Fixes #17426

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions
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 -- 17431

Or

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

@mitchdenny
Copy link
Copy Markdown
Member Author

/deployment-test

@github-actions
Copy link
Copy Markdown
Contributor

🚀 Deployment tests starting on PR #17431...

This will deploy to real Azure infrastructure. Results will be posted here when complete.

View workflow run

@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot had a problem deploying to deployment-testing May 24, 2026 03:47 Failure
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot had a problem deploying to deployment-testing May 24, 2026 03:47 Failure
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot had a problem deploying to deployment-testing May 24, 2026 03:47 Failure
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing May 24, 2026 03:47 Inactive
@mitchdenny mitchdenny self-assigned this May 24, 2026
@mitchdenny mitchdenny added azure Issues associated specifically with scenarios tied to using Azure area-deployment labels May 24, 2026
@mitchdenny mitchdenny added this to the 13.4 milestone May 24, 2026
@mitchdenny mitchdenny marked this pull request as ready for review May 24, 2026 03:55
Copilot AI review requested due to automatic review settings May 24, 2026 03:55
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Replaces brittle hard-coded waits for the legacy (based on NuGet.config) version prompt in FrontDoorDeploymentTests with WaitForAspireAddCompletionAsync, which handles both prompted and prompt-less aspire add flows. This matches the pattern already used in other deployment E2E tests.

Changes:

  • Remove the IsRunningInCI-gated WaitUntilTextAsync("(based on NuGet.config)") + EnterAsync blocks after both aspire add invocations.
  • Call WaitForAspireAddCompletionAsync(counter, TimeSpan.FromMinutes(3)) instead.
  • Add a comment explaining why the helper is used.
Show a summary per file
File Description
tests/Aspire.Deployment.EndToEnd.Tests/FrontDoorDeploymentTests.cs Switch both aspire add waits to WaitForAspireAddCompletionAsync to handle both prompted and prompt-less code paths.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 0

@github-actions
Copy link
Copy Markdown
Contributor

Deployment E2E Tests failed — 37 passed, 3 failed, 0 cancelled

View test results and recordings

View workflow run

Test Result Recording
Deployment.EndToEnd-AzureServiceBusDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureKeyVaultDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureLogAnalyticsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaCompactNamingDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaStarterDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureAppConfigDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-NspStorageKeyVaultDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksAzureKubernetesEnvironmentGatewayDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaDeploymentErrorOutputTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksVnetWithAzureResourcesDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksAzureKubernetesEnvironmentCertManagerDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureStorageDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaManagedRedisDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetKeyVaultInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaExistingRegistryDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-TypeScriptExpressDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaCustomRegistryDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-TypeScriptVnetSqlServerInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AuthenticationTests ✅ Passed
Deployment.EndToEnd-AksVnetInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-FrontDoorDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-KubernetesGatewayTlsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksMultipleNodePoolsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureEventHubsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetKeyVaultConnectivityDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksWithHelmChartDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetSqlServerConnectivityDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetStorageBlobInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureContainerRegistryDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-KubernetesHelmChartDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksBlazorRedisDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksStarterDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksWithAzureResourcesDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetStorageBlobConnectivityDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AppServiceReactDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetSqlServerInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksStarterWithRedisHelmDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksAzureKubernetesEnvironmentCertManagerTypeScriptDeploymentTests ❌ Failed ▶️ View Recording
Deployment.EndToEnd-TypeScriptJavaScriptHostingDeploymentTests ❌ Failed ▶️ View Recording
Deployment.EndToEnd-TypeScriptAzureContainerAppJobDeploymentTests ❌ Failed ▶️ View Recording

@github-actions
Copy link
Copy Markdown
Contributor

CLI E2E Tests unknown — 96 passed, 0 failed, 5 unknown (commit 363d1bc)

View all recordings
Status Test Recording
AddPackageInteractiveWhileAppHostRunningDetached ▶️ View recording
AddPackageWhileAppHostRunningDetached ▶️ View recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View recording
AgentInitCommand_DefaultSelection_InstallsDefaultSkills ▶️ View recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View recording
AgentMcpListStructuredLogsFromStarterAppCore ▶️ View recording
AllPublishMethodsBuildDockerImages ▶️ View recording
AspireAddPackageVersionToDirectoryPackagesProps ▶️ View recording
AspireInitSingleFileAppHostRunsViaDotnetRunAppHost ▶️ View recording
AspireInitWithExistingAppHostDirRecreatesMissingNuGetConfigAndPreservesFiles ▶️ View recording
AspireInitWithSolutionFileGeneratesAppHostThatBuildsAgainstChannelHive ▶️ View recording
AspireStartUpdatesStaleTypeScriptAppHostPath ▶️ View recording
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps ▶️ View recording
AspireUpdateRemovesOrphanAppHostPackageVersionWhenSdkAlreadyCurrent ▶️ View recording
Banner_DisplayedOnFirstRun ▶️ View recording
Banner_DisplayedWithExplicitFlag ▶️ View recording
Banner_NotDisplayedWithNoLogoFlag ▶️ View recording
CertificatesClean_RemovesCertificates ▶️ View recording
CertificatesTrust_WithNoCert_CreatesAndTrustsCertificate ▶️ View recording
CertificatesTrust_WithUntrustedCert_TrustsCertificate ▶️ View recording
ConfigSetGet_CreatesNestedJsonFormat ▶️ View recording
CreateAndRunAspireStarterProject ▶️ View recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View recording
CreateAndRunEmptyAppHostProject ▶️ View recording
CreateAndRunJavaEmptyAppHostProject ▶️ View recording
CreateAndRunJsReactProject ▶️ View recording
CreateAndRunPythonReactProject ▶️ View recording
CreateAndRunTypeScriptEmptyAppHostProject ▶️ View recording
CreateAndRunTypeScriptStarterProject ▶️ View recording
CreateJavaAppHostWithViteApp ▶️ View recording
CreateTypeScriptAppHostWithViteApp_UsesConfiguredToolchain ▶️ View recording
DashboardRunWithAgentMcpCore ▶️ View recording
DashboardRunWithOtelTracesReturnsNoTracesCore ▶️ View recording
DeployK8sBasicApiService ▶️ View recording
DeployK8sWithExternalHelmChart ▶️ View recording
DeployK8sWithGarnet ▶️ View recording
DeployK8sWithMongoDB ▶️ View recording
DeployK8sWithMySql ▶️ View recording
DeployK8sWithPostgres ▶️ View recording
DeployK8sWithRabbitMQ ▶️ View recording
DeployK8sWithRedis ▶️ View recording
DeployK8sWithSqlServer ▶️ View recording
DeployK8sWithValkey ▶️ View recording
DeployTypeScriptAppToKubernetes ▶️ View recording
DescribeCommandResolvesReplicaNames ▶️ View recording
DescribeCommandShowsRunningResources ▶️ View recording
DetachFormatJsonProducesValidJson ▶️ View recording
DetachFormatJsonProducesValidJsonWhenRestartingExistingInstance ▶️ View recording
DoListStepsShowsPipelineSteps ▶️ View recording
DocsCommand_RendersInteractiveMarkdownFromLocalSource ▶️ View recording
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View recording
DoctorCommand_TypeScriptAppHostReportsMissingConfiguredToolchain ▶️ View recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ View recording
GeneratedAspireDevScript_StartsWatchMode_WithConfiguredToolchain ▶️ View recording
GlobalMigration_HandlesCommentsAndTrailingCommas ▶️ View recording
GlobalMigration_HandlesMalformedLegacyJson ▶️ View recording
GlobalMigration_PreservesAllValueTypes ▶️ View recording
GlobalMigration_SkipsWhenNewConfigExists ▶️ View recording
GlobalSettings_MigratedFromLegacyFormat ▶️ View recording
InitTypeScriptAppHost_AugmentsExistingViteRepoAtRoot ▶️ View recording
InteractiveCSharpInitCreatesExpectedFiles ▶️ View recording
InvalidAppHostPathWithComments_IsHealedOnRun ▶️ View recording
JavaScriptHostingApisRunFromTypeScriptAppHost ▶️ View recording
LatestCliCanStartStableChannelAppHost ▶️ View recording
LatestCliCanStartStableChannelTypeScriptAppHost ▶️ View recording
LegacySettingsMigration_AdjustsRelativeAppHostPath ▶️ View recording
LogLevelTrace_ProducesTraceEntriesInCliLogFile ▶️ View recording
LogsCommandShowsResourceLogs ▶️ View recording
OtelLogsReturnsStructuredLogsFromStarterApp ▶️ View recording
OtelLogsReturnsStructuredLogsFromStarterAppIsolated ▶️ View recording
PsCommandListsRunningAppHost ▶️ View recording
PsFormatJsonOutputsOnlyJsonToStdout ▶️ View recording
PublishJavaScriptPatternsGeneratesExpectedDockerComposeArtifacts ▶️ View recording
PublishWithConfigureEnvFileUpdatesEnvOutput ▶️ View recording
PublishWithDockerComposeServiceCallbackSucceeds ▶️ View recording
PublishWithoutOutputPathUsesAppHostDirectoryDefault ▶️ View recording
ResourceCommand_FailedExecution_DisplaysAppHostLogPathAndLogContainsEntries ▶️ View recording
ResourceCommand_FailsWhenInteractionServiceIsRequired ▶️ View recording
ResourceCommand_SetAndDeleteParameterUpdatesDescribeOutput ▶️ View recording
RestoreGeneratesSdkFiles ▶️ View recording
RestoreGeneratesSdkFiles_WithConfiguredToolchain ▶️ View recording
RestoreRefreshesGeneratedSdkAfterAddingIntegration ▶️ View recording
RestoreSupportsConfigOnlyHelperPackageAndCrossPackageTypes ▶️ View recording
RunFromParentDirectory_UsesExistingConfigNearAppHost ▶️ View recording
RunPublishFailureScenarioAsync ▶️ View recording
RunReportsSyntaxErrorsForDotNetAppHost ▶️ View recording
RunReportsSyntaxErrorsForTypeScriptAppHost ▶️ View recording
SecretCrudOnDotNetAppHost ▶️ View recording
SecretCrudOnTypeScriptAppHost ▶️ View recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View recording
StartAndWaitForTypeScriptSqlServerAppHostWithNativeAssets ▶️ View recording
StartReportsSyntaxErrorsForDotNetAppHost ▶️ View recording
StartReportsSyntaxErrorsForTypeScriptAppHost ▶️ View recording
StopAllAppHostsFromAppHostDirectory ▶️ View recording
StopJavaPolyglotAppHostUsingApphostDirectory ▶️ View recording
StopNonInteractiveSingleAppHost ▶️ View recording
StopTypeScriptPolyglotAppHostUsingApphostDirectory ▶️ View recording
StopWithNoRunningAppHostExitsSuccessfully ▶️ View recording
UnAwaitedChainsCompileWithAutoResolvePromises ▶️ View recording
UpdateProjectChannelToStable_TypeScript_PicksUpStablePackages ▶️ View recording

📹 Recordings uploaded automatically from CI run #26350955664

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-deployment azure Issues associated specifically with scenarios tied to using Azure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

E2E Deployment Test Failure: Aspire.Deployment.EndToEnd.Tests.FrontDoorDeploymentTests.DeployReactTemplateWithFrontDoor

2 participants