Repository navigation
Conversation
Omit edges whose endpoint is not in the application graph and show the affected resource and target IDs in an accessible warning. Preserve valid connections and update graph regression records. Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: nicolejms <nicolej@microsoft.com>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are recorded for the change that makes unresolved application-graph dependencies visible.
No open issues 🎉
What changed in this PR
Addresses #353 by making unresolved dependencies visible in the Radius Dashboard application graph. Connections with missing endpoints are omitted before layout and rendering, while valid connections—including exact ID matches that cannot be parsed—remain intact.
Changes:
- Adds an expandable warning listing unresolved connections and their owning resource IDs.
- Adds unit and browser regression coverage, including keyboard access to warning details.
- Updates graph records, retires the repaired defect entries, and documents the behavior.
| File | Description |
|---|---|
packages/rad-components/src/graphRecord.ts |
Removes the repaired #353 known-defect entries. |
packages/rad-components/src/components/appgraph/AppGraph.tsx |
Validates endpoints and displays unresolved connections without hiding the graph. |
packages/rad-components/src/components/appgraph/__test__/AppGraph.test.tsx |
Tests warnings, valid edges, both directions, and exact unparseable ID matches. |
packages/rad-components/src/components/appgraph/__docs__/AppGraph.stories.tsx |
Adds stories for missing and unparseable targets. |
packages/rad-components/src/components/appgraph/__docs__/AppGraph.mdx |
Documents the warning and expandable connection details. |
packages/rad-components/src/__test__/graphRecords.test.ts |
Updates defect checks and restricts declared record changes to #353. |
packages/rad-components/src/__test__/graphInvariants.test.ts |
Replaces dangling-edge defect pins with endpoint regression checks. |
packages/rad-components/src/__fixtures__/graph-records/unparseable-connection.json |
Removes the expected dangling edge for an unparseable target. |
packages/rad-components/src/__fixtures__/graph-records/missing-target.json |
Removes the expected dangling edge for an absent target. |
packages/rad-components/src/__fixtures__/graph-expected-changes.md |
Declares the two intentional edge removals. |
packages/rad-components/e2e-tests/appGraph.test.ts |
Checks warning visibility, graph visibility, and keyboard disclosure access. |
docs/design/2026-09-dashboard-plugin-test-plan.md |
Marks #353 as fixed and updates regression expectations. |
Review effort: Balanced
This branch has not been deployed
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.
Summary
Show a warning when a connection target is not in the application graph. The warning lists the owning resource ID and target ID in an expandable section. Omit edges with missing endpoints before layout and rendering. Keep valid connections visible.
The independent rubber duck review found no material issues.
Reason for change
Fixes #353
React Flow discards edges whose endpoints are missing. Without a warning, the graph can appear complete even when dependencies are absent. Check connection IDs against the full resource set, not just the resource ID parser. A connection with an exact matching node remains valid even when its ID cannot be parsed.
How to test
Use the Node.js and Yarn versions described in the build guide, then run
yarn install.yarn workspace @radapp.io/rad-components test --watch=false --runInBand --silent. Expect all 170 tests to pass, including the missing-endpoint invariants and stored graph records.yarn test:e2e:components --reporter=line. Expect all 10 browser tests to pass. The new cases check that the warning is visible, the resource node remains visible, and the connection IDs can be opened with the keyboard.yarn workspace @radapp.io/rad-components storybook --ci --no-open. Open the AppGraph / Missing Target and AppGraph / Unparseable Connection stories. Expect an incomplete-graph warning. Expand Show unresolved connections to see both IDs. The graph and its controls must remain visible. Open AppGraph / Multi Tier to confirm that valid edges remain visible and no warning appears.yarn tscandyarn lint:all. Expect no errors.Local validation used the pinned Yarn package because Yarn is not on this host's PATH:
npx --yes --package '@yarnpkg/cli-dist@4.18.1' yarn tscnpx --yes --package '@yarnpkg/cli-dist@4.18.1' yarn lint:allnpx --yes --package '@yarnpkg/cli-dist@4.18.1' yarn workspace '@radapp.io/rad-components' test --watch=false --runInBand --silentnpx --yes --package '@yarnpkg/cli-dist@4.18.1' yarn test:e2e:components --reporter=linegit diff --checkPrettier passed for all changed TypeScript files. ShellCheck 0.11.0 is installed; no shell scripts changed, so no files apply. The full repository
yarn test:allsuite was not run.File change summary
packages/rad-components/src/components/appgraph/AppGraph.tsxpackages/rad-components/src/components/appgraph/__test__/AppGraph.test.tsxpackages/rad-components/src/__test__/graphInvariants.test.tspackages/rad-components/src/graphRecord.tspackages/rad-components/src/__test__/graphRecords.test.tspackages/rad-components/src/__fixtures__/graph-records/missing-target.jsonpackages/rad-components/src/__fixtures__/graph-records/unparseable-connection.jsonpackages/rad-components/src/__fixtures__/graph-expected-changes.mdpackages/rad-components/src/components/appgraph/__docs__/AppGraph.stories.tsxpackages/rad-components/e2e-tests/appGraph.test.tspackages/rad-components/src/components/appgraph/__docs__/AppGraph.mdxdocs/design/2026-09-dashboard-plugin-test-plan.md