Skip to content

Enable Playground tests on GitHub Actions CI workflow#14790

Draft
radical wants to merge 11 commits intomainfrom
enable-playground-tests-ci
Draft

Enable Playground tests on GitHub Actions CI workflow#14790
radical wants to merge 11 commits intomainfrom
enable-playground-tests-ci

Conversation

@radical
Copy link
Member

@radical radical commented Feb 28, 2026

Description

This PR enables the Aspire.Playground.Tests to run outside the repo on the GitHub Actions CI workflow, using built NuGet packages instead of project references.

Changes

Archive fixes (Aspire.Playground.Tests.csproj):

  • Added TestFeature.cs and PathLookupHelper.cs to the PrepareForHelix archive items (they were referenced as Compile items in-repo but missing from the archive)
  • Added RunOnGithubActionsLinux=false to exclude Playground from the integration test matrix (it now has its own dedicated job)

Workflow changes (run-tests.yml):

  • Added buildOnTarget input parameter for tests that need to build from source in the extracted archive (not just run pre-built DLLs)
  • Added 'Build test from source' and 'Run build-on-target tests' steps for Linux/macOS
  • Skipped regular nuget-dependent test execution when buildOnTarget is true

Test orchestration (tests.yml):

  • Added playground_tests job: Playground Linux (ubuntu-latest, 25m timeout)
  • Added playground_tests to results job dependency list

Cleanup:

  • Removed FIXME comment in TestRunsheetBuilder.targets about Playground not running in out-of-repo mode

Validation

Locally validated by:

  1. Building the archive with PrepareForHelix=true
  2. Extracting to a temp directory outside the repo
  3. Building with TestsRunningOutsideOfRepo=true and BUILT_NUGETS_PATH set
  4. Confirming tests are discovered and execute correctly

radical and others added 4 commits February 27, 2026 14:51
Add comprehensive documentation for the Azure DevOps public pipeline
(azure-pipelines-public) covering pipeline architecture, Helix test
categories, test archiving, test routing, and 9 known breakage patterns
identified from real incidents in git history.

The doc helps developers and agents understand what can break on AzDO
since tests don't run on PRs and only run weekly. Includes a PR review
checklist for AzDO safety.

Also adds a brief reference in AGENTS.md under Continuous Integration
pointing to the new doc.

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

- Fix /azp run command in azdo-tests.yml comment to match actual pipeline name
- Remove shell command escaping section that contradicted working implementation
- Remove DCP wait from post-commands (Linux-only, not cross-platform)
- Renumber remaining Known Breakage Patterns sections

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add language identifiers to 4 fenced code blocks (MD040)
- Fix manual trigger label from 'azdo-tests' to 'aspire-tests' in table
- Update breakage patterns count from implicit 9 to explicit 8
- Use full path for azure-pipelines-public.yml in AGENTS.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a dedicated 'Playground Linux' job to the tests.yml workflow that:
- Builds Aspire.Playground.Tests from source outside the repo
- Uses built NuGet packages via the archive mechanism
- Runs with Docker support on ubuntu-latest

Changes:
- Add buildOnTarget parameter to run-tests.yml for tests that need
  to build from source in the extracted archive
- Add playground_tests job to tests.yml
- Exclude Playground from integration tests matrix (dedicated job)
- Fix missing TestFeature.cs and PathLookupHelper.cs in helix archive
- Remove resolved FIXME comment in TestRunsheetBuilder.targets

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

github-actions bot commented Feb 28, 2026

🚀 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/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 14790

Or

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

The tests/.editorconfig suppresses CA2007 and CA1305 diagnostics for test
projects. Without it in the archive, these warnings become errors when
building with TreatWarningsAsErrors=true.

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

github-actions bot commented Feb 28, 2026

🎬 CLI E2E Test Recordings

The following terminal recordings are available for commit e16f833:

Test Recording
AddPackageInteractiveWhileAppHostRunningDetached ▶️ View Recording
AddPackageWhileAppHostRunningDetached ▶️ View Recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View Recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View Recording
AgentInitCommand_WithMalformedMcpJson_ShowsErrorAndExitsNonZero ▶️ View Recording
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps ▶️ View Recording
Banner_DisplayedOnFirstRun ▶️ View Recording
Banner_DisplayedWithExplicitFlag ▶️ View Recording
CreateAndDeployToDockerCompose ▶️ View Recording
CreateAndDeployToDockerComposeInteractive ▶️ View Recording
CreateAndPublishToKubernetes ▶️ View Recording
CreateAndRunAspireStarterProject ▶️ View Recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View Recording
CreateAndRunJsReactProject ▶️ View Recording
CreateAndRunPythonReactProject ▶️ View Recording
CreateEmptyAppHostProject ▶️ View Recording
CreateStartAndStopAspireProject ▶️ View Recording
CreateStartWaitAndStopAspireProject ▶️ View Recording
CreateTypeScriptAppHostWithViteApp ▶️ 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
LogsCommandShowsResourceLogs ▶️ View Recording
PsCommandListsRunningAppHost ▶️ View Recording
PsFormatJsonOutputsOnlyJsonToStdout ▶️ View Recording
SecretCrudOnDotNetAppHost ▶️ View Recording
SecretCrudOnTypeScriptAppHost ▶️ View Recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View Recording
StopAllAppHostsFromAppHostDirectory ▶️ View Recording
StopAllAppHostsFromUnrelatedDirectory ▶️ View Recording
StopNonInteractiveMultipleAppHostsShowsError ▶️ View Recording
StopNonInteractiveSingleAppHost ▶️ View Recording
StopWithNoRunningAppHostExitsSuccessfully ▶️ View Recording

📹 Recordings uploaded automatically from CI run #22520370561

@radical
Copy link
Member Author

radical commented Feb 28, 2026

/azp run aspire-tests

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

…ead of concrete type

ContainerRegistryHook was injecting the concrete DistributedApplicationEventing
type, but only the IDistributedApplicationEventing interface is registered in
the DI container. This caused all tests to fail with a service resolution error.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@radical
Copy link
Member Author

radical commented Feb 28, 2026

/azp run aspire-tests

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

The ~15 container-based integration tests each take 2-10+ minutes.
The previous 25m session timeout caused hang dumps mid-test, and
with the 60m job timeout the full suite could not complete.

Increased both GH Actions and Helix timeouts to 50m to accommodate
the full test suite.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@radical
Copy link
Member Author

radical commented Feb 28, 2026

/azp run aspire-tests

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

The 60m hardcoded job timeout is too short for Playground tests which need
~10m for setup/build plus 50m for running ~15 container-based integration
tests. Added jobTimeout input (default 60m) and set Playground to 90m.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@radical
Copy link
Member Author

radical commented Feb 28, 2026

/azp run aspire-tests

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

radical and others added 2 commits February 28, 2026 04:27
The SqlServerEndToEnd test hangs for 55+ minutes on GH Actions because
app.StartAsync() blocks on a container that never becomes ready.

Reduced both --timeout and --hangdump-timeout to 10m (matching the
default BlameHangTimeout used for in-repo tests). This ensures hanging
tests are killed promptly instead of consuming the entire job timeout.

Reverted the Helix timeout back to 25m and removed the 90m jobTimeout
since tests should complete much faster with per-test hang detection.

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

MTP --timeout and --hangdump-timeout don't reliably terminate hanging
tests that produce continuous output (Kafka/Redis connection retries).

Wrapped dotnet test with timeout --signal=TERM using testSessionTimeout
as the hard deadline. Set Playground to 40m hard timeout with 10m MTP
hang detection.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant