Skip to content

[release/13.5] Fix dashboard graph rendering for multi-path icons - #19585

Merged
Jose Perez Rodriguez (joperezr) merged 2 commits into
release/13.5from
backport/pr-19579-to-release/13.5
Aug 24, 2026
Merged

[release/13.5] Fix dashboard graph rendering for multi-path icons#19585
Jose Perez Rodriguez (joperezr) merged 2 commits into
release/13.5from
backport/pr-19579-to-release/13.5

Conversation

@aspire-repo-bot

@aspire-repo-bot aspire-repo-bot Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Backport of #19579 to release/13.5

/cc Sébastien Ros (@sebastienros)

Customer Impact

Dahboard failures

Testing

Local verification of PR build succesfull and published

Risk

Low

Regression?

Yes

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings August 21, 2026 22:14
@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 -- 19585

Or

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

@github-actions

This comment has been minimized.

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

Fixes dashboard Graph view failures when Fluent UI icons contain multiple SVG paths.

Changes:

  • Parses icon content as an SVG fragment.
  • Combines sibling path data into one compound path.
  • Adds regression tests for single- and multi-path icons.

Reviewed changes

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

File Description
src/Aspire.Dashboard/Model/ResourceGraph/ResourceGraphMapper.cs Supports multi-path Fluent UI icons.
tests/Aspire.Dashboard.Tests/Model/ResourceGraphMapperTests.cs Covers both icon shapes.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

@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.

@sebastienros

Copy link
Copy Markdown
Contributor

PR #19585 Testing Report

Result

The dashboard fix is verified with the PR dogfood binary. Aspire 13.5.1 reproduces the original multi-path icon crash with the same AppHost.

CI is failing for an unrelated deterministic CLI E2E test-harness issue. On all four attempts, two aspire update tests waited at an unexpected post-update CLI self-update prompt until the 10-minute hang timeout killed the test host.

Artifact Verification

CI Failure Analysis

The failing test jobs are:

  1. Cli.EndToEnd-ChannelUpdateWorkflowTests
    • Hung test: UpdateToStable_TypeScriptSingleFileInit_KeepsConfigChannel
  2. Cli.EndToEnd-CentralPackageManagementTests
    • Hung test: AspireUpdateRemovesOrphanAppHostPackageVersionWhenSdkAlreadyCurrent

Both recordings show the project update finishing, followed by:

An update is available for the Aspire CLI. Would you like to update it now? [Y/n]:

The automator did not expect this post-update prompt, so it waited for the shell success prompt for about 500 seconds. MTP then reached its 10-minute hang-dump timeout, killed the test host, and reported exit codes 137/7 with no completed test results.

This prompt now appears because stable 13.5.2 sorts newer than the PR prerelease 13.5.2-pr.19585.gc18aed2f. The tests attempt to disable update notifications, but that does not suppress this interactive self-update prompt. Rerunning CI alone will not resolve it; the tests must handle/decline the post-update prompt or otherwise suppress CLI self-update prompting.

The PR changes only ResourceGraphMapper.cs and its unit tests. Dashboard build and dogfood publication succeeded.

Side-by-Side Dashboard Reproduction

Both fresh single-file AppHosts used the same resource:

builder.AddExecutable("multi-path-icon", "sleep", ".", "300")
    .WithIconName("DocumentMultiple");

DocumentMultiple contains three sibling SVG <path> elements and directly exercises the changed parser.

PR dogfood

  • Status: Passed
  • Graph rendered the multi-path-icon node with its state and labels.
  • No Blazor circuit failure occurred.
  • Screenshot: pr-19585-graph-working.png

Aspire 13.5.1

  • Status: Expected failure reproduced
  • The graph remained empty and displayed An unhandled error has occurred.
  • The Blazor circuit terminated.
  • Server exception:
System.Xml.XmlException: There are multiple root elements. Line 1, position 142.
   at Aspire.Dashboard.Model.ResourceGraph.ResourceGraphMapper.GetIconPathData(Icon icon)
  • Screenshot: aspire-13.5.1-graph-failure.png

Evidence

  • pr-19585-graph-working.png
  • aspire-13.5.1-graph-failure.png
  • aspire-13.5.1-server-exception.log
  • pr-19585-browser-console.log
  • aspire-13.5.1-browser-console.log
  • UpdateToStable_TypeScriptSingleFileInit_KeepsConfigChannel.cast
  • AspireUpdateRemovesOrphanAppHostPackageVersionWhenSdkAlreadyCurrent.cast
  • pr-19585-repro-apphost.cs
  • aspire-13.5.1-repro-apphost.cs

Overall

Dashboard fix verified. PR #19585 correctly handles multi-path Fluent UI icons. The red CI status is caused by unrelated CLI E2E prompt handling.

Screenshots

PR #19585 dogfood — graph renders

PR #19585 graph renders

Aspire 13.5.1 — graph crashes

Aspire 13.5.1 graph failure

@sebastienros

Sébastien Ros (sebastienros) commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

Mitch Denny (@mitchdenny) two tests are failing on aspire update do you know of any issues with it? It should be unrelated to this change

Update: Apparently that's accepted on this branch

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks for fixing Seb, approved.

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: 3/3 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

@github-actions

Copy link
Copy Markdown
Contributor

Tests selector (audit mode)

The full test matrix and all jobs still run in audit mode. The tests and jobs below are what selective CI would run under enforcement.

Runs the full test matrix + all jobs (ALL) — a rule matching 'eng/Versions.props' selects ALL


Selection computed for commit d15f4a3.

@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.

@joperezr
Jose Perez Rodriguez (joperezr) merged commit 9e2f792 into release/13.5 Aug 24, 2026
677 of 680 checks passed
@joperezr
Jose Perez Rodriguez (joperezr) deleted the backport/pr-19579-to-release/13.5 branch August 24, 2026 20:49
@github-actions github-actions Bot added this to the 13.5.x milestone Aug 24, 2026
@aspire-repo-bot

Copy link
Copy Markdown
Contributor Author

✅ No documentation update needed.

Step 5 branch taken: excluded → backport

This PR is a backport (release/13.5) of #19579. Exclusion reasons from signals.json: base_branch_is_release, head_branch_is_backport, title_release_prefix, body_backport_marker (title prefixed [release/13.5], body contains Backport of #19579 to release/13.5, head branch pattern matches backport bot, base ref is release/13.5).

No signals triggered (signal_count: 0). Documentation for this fix should be authored against the original forward PR (#19579) on the default branch, not duplicated here.

This was referenced Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants