Skip to content

Fix deployment E2E nightly failures#16086

Closed
mitchdenny wants to merge 2 commits into
mainfrom
fix-deployment-e2e-tests-16057-merge
Closed

Fix deployment E2E nightly failures#16086
mitchdenny wants to merge 2 commits into
mainfrom
fix-deployment-e2e-tests-16057-merge

Conversation

@mitchdenny
Copy link
Copy Markdown
Member

Cherry-pick of #16072 from internal branch to get CI checks running. Credit to @ideepakchauhan7 for the original fix.

Fixes #16057

Copilot AI review requested due to automatic review settings April 12, 2026 07:24
@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 -- 16086

Or

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

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

Updates the Deployment E2E test suite to align with recent Aspire CLI interactive prompt and bundle/layout behaviors, addressing nightly failures in deployment scenarios.

Changes:

  • Updates aspire init prompt-handling logic in TypeScript VNet SQL infra and compact naming upgrade tests (template version prompt + agent-init prompt sequencing).
  • Switches Python deployment tests’ CI setup to use the bundle environment (and optionally install from PR artifacts).
  • Adjusts a few prompt matchers/flows (ACR purge prompt handling, managed Redis output-path prompt text).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/Aspire.Deployment.EndToEnd.Tests/TypeScriptVnetSqlServerInfraDeploymentTests.cs Refines aspire init --language typescript prompt handling to accommodate newer CLI prompt sequences.
tests/Aspire.Deployment.EndToEnd.Tests/PythonFastApiDeploymentTests.cs In CI, sources bundle environment and optionally installs from PR artifacts for Python template flows.
tests/Aspire.Deployment.EndToEnd.Tests/AppServicePythonDeploymentTests.cs Same CI bundle setup adjustment as Python FastAPI test, for App Service scenario.
tests/Aspire.Deployment.EndToEnd.Tests/AcrPurgeTaskDeploymentTests.cs Updates CI bundle setup and modifies aspire add prompt handling for PR vs non-PR runs.
tests/Aspire.Deployment.EndToEnd.Tests/AcaManagedRedisDeploymentTests.cs Relaxes output-path prompt matcher to tolerate minor CLI text changes.
tests/Aspire.Deployment.EndToEnd.Tests/AcaCompactNamingUpgradeDeploymentTests.cs Reworks GA aspire init automation to handle multiple possible prompts before success.
Comments suppressed due to low confidence (1)

tests/Aspire.Deployment.EndToEnd.Tests/AcrPurgeTaskDeploymentTests.cs:109

  • The version-selection handling is now skipped when GetPrNumber() > 0, but the prompt itself is detected via the very specific string "(based on NuGet.config)". That text can change depending on channel/source details, and skipping the prompt entirely is risky if aspire add still prompts (the command would block and the next WaitForSuccessPromptAsync would time out). Consider waiting for the actual selection prompt (e.g., "Select a version of …") and only sending Enter when that prompt is present, rather than branching on PR number / matching the NuGet.config suffix.
            await auto.TypeAsync("aspire add Aspire.Hosting.Azure.AppContainers");
            await auto.EnterAsync();

            if (DeploymentE2ETestHelpers.IsRunningInCI && DeploymentE2ETestHelpers.GetPrNumber() <= 0)
            {
                await auto.WaitUntilTextAsync("(based on NuGet.config)", timeout: TimeSpan.FromSeconds(60));
                await auto.EnterAsync();
            }

Comment on lines +89 to +95
var waitingForTemplateVersionPrompt = new CellPatternSearcher()
.Find("NuGet.config");
var waitingForInitComplete = new CellPatternSearcher()
.Find("Aspire initialization complete");
var waitingForAgentInitPrompt = new CellPatternSearcher()
.Find("configure AI agent environments");
var waitingForSuccessPrompt = new CellPatternSearcher()
.FindPattern(counter.Value.ToString())
.RightText(" OK] $ ");
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

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

The "template version prompt" matcher is currently Find("NuGet.config"), which is a brittle signal (it depends on the channel/source text shown in the selection list). If the CLI shows the template-version selection but without the "NuGet.config" suffix, this wait will never detect it and aspire init will hang until the 2-minute timeout. Consider matching the actual prompt text (e.g., "Select a template version:") instead of relying on "NuGet.config" appearing somewhere in the output.

Copilot uses AI. Check for mistakes.
Comment on lines +101 to +109
var waitingForLanguageSelectionPrompt = new CellPatternSearcher()
.Find("Which language would you like to use?");
var waitingForTemplateVersionPrompt = new CellPatternSearcher()
.Find("NuGet.config");
var waitingForAgentInitPrompt = new CellPatternSearcher()
.Find("configure AI agent environments");
var waitingForSuccessPrompt = new CellPatternSearcher()
.FindPattern(counter.Value.ToString())
.RightText(" OK] $ ");
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

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

waitingForTemplateVersionPrompt is searching for "NuGet.config", but the template-version prompt itself has a stable header (e.g., "Select a template version:"). Depending on the configured channel/source, the selection items may not include "NuGet.config", which would make this state machine miss the prompt and time out while aspire init is still waiting for input. Prefer matching the prompt header text rather than a source-detail substring.

Copilot uses AI. Check for mistakes.
@mitchdenny
Copy link
Copy Markdown
Member Author

/deployment-test

@github-actions
Copy link
Copy Markdown
Contributor

🚀 Deployment tests starting on PR #16086...

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 April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot had a problem deploying to deployment-testing April 12, 2026 07:58 Failure
@github-actions github-actions Bot had a problem deploying to deployment-testing April 12, 2026 07:58 Failure
@github-actions github-actions Bot had a problem deploying to deployment-testing April 12, 2026 07:58 Failure
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot had a problem deploying to deployment-testing April 12, 2026 07:58 Failure
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot had a problem deploying to deployment-testing April 12, 2026 07:58 Failure
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions github-actions Bot had a problem deploying to deployment-testing April 12, 2026 07:58 Failure
@github-actions github-actions Bot temporarily deployed to deployment-testing April 12, 2026 07:58 Inactive
@github-actions
Copy link
Copy Markdown
Contributor

🎬 CLI E2E Test Recordings — 68 recordings uploaded (commit 64bd4c3)

View recordings
Test Recording
AddPackageInteractiveWhileAppHostRunningDetached ▶️ View Recording
AddPackageWhileAppHostRunningDetached ▶️ View Recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View Recording
AgentInitCommand_DefaultSelection_InstallsSkillOnly ▶️ View Recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View Recording
AllPublishMethodsBuildDockerImages ▶️ View Recording
AspireAddPackageVersionToDirectoryPackagesProps ▶️ View Recording
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps ▶️ 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
CreateStartAndStopAspireProject ▶️ View Recording
CreateTypeScriptAppHostWithViteApp ▶️ View Recording
DashboardRunWithOtelTracesReturnsNoTraces ▶️ View Recording
DeployK8sBasicApiService ▶️ 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
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View Recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View Recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ 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
InvalidAppHostPathWithComments_IsHealedOnRun ▶️ View Recording
LegacySettingsMigration_AdjustsRelativeAppHostPath ▶️ View Recording
LogsCommandShowsResourceLogs ▶️ View Recording
PsCommandListsRunningAppHost ▶️ View Recording
PsFormatJsonOutputsOnlyJsonToStdout ▶️ View Recording
PublishWithDockerComposeServiceCallbackSucceeds ▶️ View Recording
RestoreGeneratesSdkFiles ▶️ View Recording
RestoreSupportsConfigOnlyHelperPackageAndCrossPackageTypes ▶️ View Recording
RunFromParentDirectory_UsesExistingConfigNearAppHost ▶️ View Recording
SecretCrudOnDotNetAppHost ▶️ View Recording
SecretCrudOnTypeScriptAppHost ▶️ View Recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View Recording
StartAndWaitForTypeScriptSqlServerAppHostWithNativeAssets ▶️ View Recording
StopAllAppHostsFromAppHostDirectory ▶️ View Recording
StopAllAppHostsFromUnrelatedDirectory ▶️ View Recording
StopNonInteractiveMultipleAppHostsShowsError ▶️ View Recording
StopNonInteractiveSingleAppHost ▶️ View Recording
StopWithNoRunningAppHostExitsSuccessfully ▶️ View Recording
UnAwaitedChainsCompileWithAutoResolvePromises ▶️ View Recording

📹 Recordings uploaded automatically from CI run #24301402310

@mitchdenny
Copy link
Copy Markdown
Member Author

Can't merge without another reviewer's approval. Re-opening the original #16072 instead. Our PR #16077 already includes equivalent fixes.

@mitchdenny mitchdenny closed this Apr 12, 2026
auto-merge was automatically disabled April 12, 2026 08:01

Pull request was closed

@mitchdenny mitchdenny deleted the fix-deployment-e2e-tests-16057-merge branch April 12, 2026 08:01
@github-actions
Copy link
Copy Markdown
Contributor

Deployment E2E Tests failed — 24 passed, 6 failed, 0 cancelled

View test results and recordings

View workflow run

Test Result Recording
Deployment.EndToEnd-VnetKeyVaultConnectivityDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetSqlServerInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetSqlServerConnectivityDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureServiceBusDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-NspStorageKeyVaultDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaCompactNamingDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetKeyVaultInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureLogAnalyticsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureStorageDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AuthenticationTests ✅ Passed
Deployment.EndToEnd-AzureKeyVaultDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaCompactNamingUpgradeDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureContainerRegistryDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksStarterDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaCustomRegistryDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureEventHubsDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetStorageBlobInfraDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaDeploymentErrorOutputTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AksStarterWithRedisDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AppServiceReactDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AzureAppConfigDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaExistingRegistryDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-VnetStorageBlobConnectivityDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-AcaStarterDeploymentTests ✅ Passed ▶️ View Recording
Deployment.EndToEnd-TypeScriptVnetSqlServerInfraDeploymentTests ❌ Failed ▶️ View Recording
Deployment.EndToEnd-PythonFastApiDeploymentTests ❌ Failed ▶️ View Recording
Deployment.EndToEnd-TypeScriptExpressDeploymentTests ❌ Failed ▶️ View Recording
Deployment.EndToEnd-AcaManagedRedisDeploymentTests ❌ Failed ▶️ View Recording
Deployment.EndToEnd-AcrPurgeTaskDeploymentTests ❌ Failed ▶️ View Recording
Deployment.EndToEnd-AppServicePythonDeploymentTests ❌ Failed ▶️ View Recording

@github-actions github-actions Bot locked and limited conversation to collaborators May 12, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Deployment E2E] Nightly test failure - 2026-04-11

3 participants