WIP ACM-33544 update minimum ocp version 4.22#6317
Conversation
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: KevinFCormier The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
📝 WalkthroughWalkthroughRouter imports, test harness mocks, and package dependencies were switched from ChangesFrontend router and SDK migration
Estimated code review effort: ✨ Finishing Touches🧪 Generate unit tests (beta)
|
There was a problem hiding this comment.
Actionable comments posted: 7
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (5)
frontend/src/components/LostChanges.test.tsx (1)
66-75:⚠️ Potential issue | 🔴 CriticalFix React Router v6 routing in
LostChanges.test.tsx
- The project uses
react-router-dom^6.30.4, but this test uses React Router v5-style<Route path=...>with children directly underMemoryRouter(missing<Routes>andelementprop).- Re-enabling the skipped tests will also fail because the test mocks
useNavigatetojest.fn(), sonavigate('/discarded')/navigate('/submitted')won’t actually change routes (the expected routed text won’t render).🔧 Proposed fix to update Route usage for React Router v6
+import { MemoryRouter, Routes, Route, useNavigate } from 'react-router-dom' -import { MemoryRouter, Route, useNavigate } from 'react-router-dom' const TestLostChangesProvider = () => { return ( <MemoryRouter initialEntries={['/form', '/discarded', '/submitted']}> <LostChangesProvider> - <Route path={'/form'}> - <OuterForm /> - </Route> - <Route path={'/discarded'}>Form Discarded</Route> - <Route path={'/submitted'}>Form Submitted</Route> + <Routes> + <Route path="/form" element={<OuterForm />} /> + <Route path="/discarded" element={<>Form Discarded</>} /> + <Route path="/submitted" element={<>Form Submitted</>} /> + </Routes> </LostChangesProvider> </MemoryRouter> ) }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/components/LostChanges.test.tsx` around lines 66 - 75, Update LostChanges.test.tsx to use React Router v6 semantics: replace the v5-style nested <Route path=...> under MemoryRouter with a <Routes> wrapper and v6 Route elements using the element prop (e.g., <Routes><Route path="/form" element={<OuterForm/>}/><Route path="/discarded" element={'Form Discarded'}/><Route path="/submitted" element={'Form Submitted'}/></Routes>) while keeping MemoryRouter and LostChangesProvider. Also stop mocking useNavigate (or adjust the mock to delegate to the real navigate) so calls like navigate('/discarded') and navigate('/submitted') actually change the MemoryRouter location and cause the expected route text to render. Ensure references to MemoryRouter, LostChangesProvider, OuterForm, Route, Routes, and useNavigate are corrected accordingly.frontend/src/routes/Applications/components/DeleteResourceModal.tsx (1)
254-259:⚠️ Potential issue | 🟠 Major | ⚡ Quick winRemove unnecessary
dangerouslySetInnerHTMLin modal content.This block renders plain translated text; using
dangerouslySetInnerHTMLadds avoidable XSS risk surface. Render it as text directly.Suggested fix
- <div className="remove-app-modal-content-text"> - <p - dangerouslySetInnerHTML={{ - __html: `${props.t( - 'The following Argo application(s) deployed by the application set will also be deleted:' - )}`, - }} - /> - </div> + <div className="remove-app-modal-content-text"> + <p>{props.t('The following Argo application(s) deployed by the application set will also be deleted:')}</p> + </div>As per coding guidelines,
frontend/**/*.{tsx,scss,css}must avoid unsafe HTML injection patterns in UI code.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/routes/Applications/components/DeleteResourceModal.tsx` around lines 254 - 259, The modal is using dangerouslySetInnerHTML to render plain translated text in DeleteResourceModal; remove dangerouslySetInnerHTML and render the string directly (e.g., replace the element using dangerouslySetInnerHTML with a normal JSX child using props.t('The following Argo application(s) deployed by the application set will also be deleted:')), ensuring no HTML injection is used and translation is passed as a plain text child; keep the same props.t key and component structure.Source: Coding guidelines
frontend/src/routes/Infrastructure/Automations/AnsibleAutomations.test.tsx (1)
49-55:⚠️ Potential issue | 🟡 MinorFix
useLocationmock inAnsibleAutomations.test.tsxto return a Location object
The test mocksreact-router-dom’suseLocationto returnmockedUsedNavigate(a function). Components in this render path (e.g.,AcmTableToolbar) destructure{ pathname, search }fromuseLocation(), so you’ll getundefinedinstead of an actual location. Return a location-like object (e.g.,{ pathname: NavigationPath.ansibleAutomations, search: '' }) or remove theuseLocationmock soMemoryRoutersupplies the correct values. [frontend/src/routes/Infrastructure/Automations/AnsibleAutomations.test.tsx:49-57]🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/routes/Infrastructure/Automations/AnsibleAutomations.test.tsx` around lines 49 - 55, The mocked react-router-dom useLocation currently returns mockedUsedNavigate (a function) causing components like AcmTableToolbar that destructure { pathname, search } from useLocation() to receive undefined; update the jest.mock for useLocation to return a location-like object (e.g., { pathname: NavigationPath.ansibleAutomations, search: '' }) or remove the useLocation mock so MemoryRouter provides correct values, keeping useNavigate/mock behavior (mockedUsedNavigate) intact.frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/HypershiftAWSCLI.test.tsx (1)
24-37:⚠️ Potential issue | 🟠 Major | ⚡ Quick winAdd the required accessibility assertion for this component test.
This test renders a component but does not include the required
jest-axecheck.Suggested patch
import { render } from '`@testing-library/react`' +import { axe } from 'jest-axe' import { MemoryRouter, Route, Routes } from 'react-router-dom' ... test('should show all the steps', async () => { ... }) + + test('is accessible', async () => { + const { container } = render(<Component />) + expect(await axe(container)).toHaveNoViolations() + })As per coding guidelines, “Every component test must include an accessibility test with
jest-axe:expect(await axe(container)).toHaveNoViolations()”.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/HypershiftAWSCLI.test.tsx` around lines 24 - 37, The test "should show all the steps" renders <Component /> and exercises UI but lacks the required accessibility assertion; after the existing render(...) and waitForText/waitForTestId checks, import and invoke jest-axe's axe on the rendered container and add the assertion expect(await axe(container)).toHaveNoViolations() (ensure jest-axe is imported and any async await is used), placing the assertion at the end of the test so the component DOM is fully loaded before the accessibility check.Source: Coding guidelines
frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/NetworkForm.test.tsx (1)
96-100:⚠️ Potential issue | 🟠 Major | ⚡ Quick winAdd the mandatory
jest-axeaccessibility test for this rendered component.This file renders
NetworkFormbut currently only snapshots output.Suggested patch
import { render } from '`@testing-library/react`' +import { axe } from 'jest-axe' import { MemoryRouter, Route, Routes } from 'react-router-dom' ... test('it renders', async () => { const { container } = render(<Component />) normalizeGeneratedOuiaIds(container) expect(container).toMatchSnapshot() }) + + test('is accessible', async () => { + const { container } = render(<Component />) + expect(await axe(container)).toHaveNoViolations() + }) })As per coding guidelines, “Every component test must include an accessibility test with
jest-axe:expect(await axe(container)).toHaveNoViolations()”.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/NetworkForm.test.tsx` around lines 96 - 100, Add a jest-axe accessibility assertion to the existing render test: import { axe, toHaveNoViolations } from 'jest-axe' at the top of the test file and call expect.extend(toHaveNoViolations) once (top-level), then in the 'it renders' test (the async test that renders <Component /> and calls normalizeGeneratedOuiaIds(container)) add expect(await axe(container)).toHaveNoViolations() after normalizeGeneratedOuiaIds(container) so the test both snapshots and asserts no accessibility violations.Source: Coding guidelines
🧹 Nitpick comments (4)
frontend/jest.config.ts (1)
23-23: ⚡ Quick winDocument or track removal of this temporary test shim.
The moduleNameMapper entry redirecting
react-router-dom-v5-compattoreact-router-domis explicitly noted as temporary in the PR summary. Once all source files have been migrated to import directly fromreact-router-dom, this mapping should be removed to ensure no stale imports remain.💡 Recommended tracking
Consider adding a TODO comment or opening a follow-up issue to remove this mapping after the migration is complete:
'`@openshift-assisted/locales/`([a-z]{2,3}/translation.json)': '<rootDir>/node_modules/@openshift-assisted/locales/lib/$1/translation.json', +// TODO: Remove after react-router-dom v6 migration is complete (ACM-33544) '^react-router-dom-v5-compat$': '<rootDir>/node_modules/react-router-dom',🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/jest.config.ts` at line 23, Add a short TODO and tracking reference for the temporary moduleNameMapper entry that redirects '^react-router-dom-v5-compat$' to '<rootDir>/node_modules/react-router-dom' so we remember to remove it after migration; update the jest.config.ts near the moduleNameMapper block to include a TODO comment with a brief note and optionally open a follow-up issue/PR number in the comment so the mapping can be removed once all imports no longer use react-router-dom-v5-compat.frontend/packages/multicluster-sdk/package.json (1)
41-41: Clarify peerDependency range>=4.22.0-0in@openshift-console/dynamic-plugin-sdk
>=4.22.0-0is valid semver (prerelease identifier0) and it matches4.22.0-prerelease.3and4.22.0(while rejecting4.21.0), effectively allowing any4.22.0prerelease plus the final4.22.0. If the intent is narrower than “any 4.22.0 prerelease/final”, tighten the range; otherwise add a brief comment explaining why-0is used.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/packages/multicluster-sdk/package.json` at line 41, The peerDependency entry for "`@openshift-console/dynamic-plugin-sdk`" currently uses the semver range ">=4.22.0-0" which permits all 4.22.0 prereleases plus the final 4.22.0; either tighten that range or document the intent: update the peerDependency on "`@openshift-console/dynamic-plugin-sdk`" in package.json to a more specific range (for example a caret/pinned or bounded range that restricts prereleases/future majors) if you meant to exclude prerelease versions, or add a brief inline comment next to the "`@openshift-console/dynamic-plugin-sdk`" peerDependency explaining why "-0" prerelease allowance is required so readers understand the choice.frontend/src/routes/Credentials/CreateCredentialsCatalog.tsx (1)
10-10: ⚡ Quick winUse a type-only import for
To.Line 10 imports
Toas a runtime symbol, but it’s only used as a type (Line 12). Switch toimport type { To } from 'react-router-dom'.As per coding guidelines, “Use
import typesyntax to avoid runtime imports.”Suggested diff
-import { To } from 'react-router-dom' +import type { To } from 'react-router-dom'🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/routes/Credentials/CreateCredentialsCatalog.tsx` at line 10, The import for To is currently a runtime import but it's only used as a type in CreateCredentialsCatalog; change the import to a type-only import by using the TypeScript `import type { To } from 'react-router-dom'` form so To is erased at runtime and no extra module import is emitted—update the import statement that currently reads `import { To } from 'react-router-dom'` to the type-only form and keep all usages of To (e.g., the prop/type on CreateCredentialsCatalog) unchanged.Source: Coding guidelines
frontend/src/routes/Applications/CreateArgoApplication/createArgoResources.ts (1)
3-3: ⚡ Quick winUse a type-only import for
NavigateFunction.At Line 3,
NavigateFunctionis type-only and should useimport typeper frontend TS conventions.Proposed fix
-import { generatePath, NavigateFunction } from 'react-router-dom' +import { generatePath, type NavigateFunction } from 'react-router-dom'As per coding guidelines, “Use
import typesyntax to avoid runtime imports.”🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/routes/Applications/CreateArgoApplication/createArgoResources.ts` at line 3, The import currently brings in NavigateFunction as a runtime import; change it to a type-only import to follow TS conventions by using "import type" for NavigateFunction (the symbol to change) while keeping generatePath as a normal import; update the import statement that references generatePath and NavigateFunction so NavigateFunction is imported with "import type" to prevent emitting a runtime import for the type.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@frontend/packages/multicluster-sdk/src/extensions/resource.ts`:
- Line 2: The file imports CodeRef and Extension from the SDK but only uses them
as types; change the import to type-only to avoid runtime imports by replacing
the current import with an import type for CodeRef and Extension (update the
import statement that references CodeRef and Extension in resource.ts). Ensure
any existing type aliases or usages such as the CodeRef and Extension references
remain unchanged, just convert the import to use "import type" so the
transpiler/tree-shaker treats them as type-only.
In `@frontend/packages/react-form-wizard/wizards/Argo/ArgoExamples.tsx`:
- Around line 12-14: The onCancel helper uses navigate(`./${RouteE.ArgoCD}`)
which adds an unnecessary "./" prefix; update the onCancel function (the
navigate call inside it) to use the same relative path style as other
navigations by removing the "./" prefix (e.g., navigate(RouteE.ArgoCD) or
navigate(`${RouteE.ArgoCD}`)) so it matches the other calls in this file and
React Router v6 expectations.
In `@frontend/src/lib/SharedContext.ts`:
- Line 6: Change the SharedContext generic default from any to unknown by
updating the type declaration for SharedContext (currently declared as
SharedContext<T = any>) to SharedContext<T = unknown>; update any call sites or
tests that relied on implicit any to explicitly type the generic or narrow with
type assertions so consumers handle the unknown safely (look for usages of
SharedContext and any places that omit the generic parameter).
- Around line 2-3: Change the runtime imports to type-only imports and remove
the `any` default on the SharedContext generic: update the imports to use
"import type { Context } from 'react'" and "import type { CodeRef, Extension }
from '`@openshift-console/dynamic-plugin-sdk`'" (so types are erased at runtime),
and change the SharedContext generic default from `any` to a safer type such as
`unknown` (or `Record<string, unknown>`) to avoid using `any`; apply these edits
where `Context`, `CodeRef`, `Extension`, and the `SharedContext` generic are
declared.
In `@frontend/src/plugin-extensions/extensions/actionExtension.ts`:
- Line 2: The import of Extension in actionExtension.ts is used only in type
positions, so change the import to a type-only import: replace the current plain
import of Extension with an "import type { Extension } ..." from
'`@openshift-console/dynamic-plugin-sdk/lib/types`' so the compiler/tree-shaker
knows it's a type-only dependency; update any usages in type aliases or the
isExtension type-guard signatures accordingly (no runtime change required).
In `@frontend/src/plugin-extensions/extensions/listColumnExtension.ts`:
- Line 2: Change the runtime import of Extension to a type-only import: replace
the current import of Extension from
'`@openshift-console/dynamic-plugin-sdk/lib/types`' with an "import type" so the
symbol Extension is erased at runtime; make sure there are no runtime references
to Extension in this file (only type aliases/type guards) before switching, and
keep all existing type usages (e.g., any type aliases or type-guard functions
that reference Extension) unchanged except for the import form.
In `@frontend/src/plugin-extensions/extensions/OverviewTab.ts`:
- Line 2: The import of Extension is only used for types; change the import to a
type-only import by replacing the runtime import of Extension from
'`@openshift-console/dynamic-plugin-sdk/lib/types`' with an "import type {
Extension }" form so TypeScript will erase the import at runtime; update the
top-level import statement that currently names Extension to use the type-only
form to avoid pulling the module into runtime.
---
Outside diff comments:
In `@frontend/src/components/LostChanges.test.tsx`:
- Around line 66-75: Update LostChanges.test.tsx to use React Router v6
semantics: replace the v5-style nested <Route path=...> under MemoryRouter with
a <Routes> wrapper and v6 Route elements using the element prop (e.g.,
<Routes><Route path="/form" element={<OuterForm/>}/><Route path="/discarded"
element={'Form Discarded'}/><Route path="/submitted" element={'Form
Submitted'}/></Routes>) while keeping MemoryRouter and LostChangesProvider. Also
stop mocking useNavigate (or adjust the mock to delegate to the real navigate)
so calls like navigate('/discarded') and navigate('/submitted') actually change
the MemoryRouter location and cause the expected route text to render. Ensure
references to MemoryRouter, LostChangesProvider, OuterForm, Route, Routes, and
useNavigate are corrected accordingly.
In `@frontend/src/routes/Applications/components/DeleteResourceModal.tsx`:
- Around line 254-259: The modal is using dangerouslySetInnerHTML to render
plain translated text in DeleteResourceModal; remove dangerouslySetInnerHTML and
render the string directly (e.g., replace the element using
dangerouslySetInnerHTML with a normal JSX child using props.t('The following
Argo application(s) deployed by the application set will also be deleted:')),
ensuring no HTML injection is used and translation is passed as a plain text
child; keep the same props.t key and component structure.
In `@frontend/src/routes/Infrastructure/Automations/AnsibleAutomations.test.tsx`:
- Around line 49-55: The mocked react-router-dom useLocation currently returns
mockedUsedNavigate (a function) causing components like AcmTableToolbar that
destructure { pathname, search } from useLocation() to receive undefined; update
the jest.mock for useLocation to return a location-like object (e.g., {
pathname: NavigationPath.ansibleAutomations, search: '' }) or remove the
useLocation mock so MemoryRouter provides correct values, keeping
useNavigate/mock behavior (mockedUsedNavigate) intact.
In
`@frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/HypershiftAWSCLI.test.tsx`:
- Around line 24-37: The test "should show all the steps" renders <Component />
and exercises UI but lacks the required accessibility assertion; after the
existing render(...) and waitForText/waitForTestId checks, import and invoke
jest-axe's axe on the rendered container and add the assertion expect(await
axe(container)).toHaveNoViolations() (ensure jest-axe is imported and any async
await is used), placing the assertion at the end of the test so the component
DOM is fully loaded before the accessibility check.
In
`@frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/NetworkForm.test.tsx`:
- Around line 96-100: Add a jest-axe accessibility assertion to the existing
render test: import { axe, toHaveNoViolations } from 'jest-axe' at the top of
the test file and call expect.extend(toHaveNoViolations) once (top-level), then
in the 'it renders' test (the async test that renders <Component /> and calls
normalizeGeneratedOuiaIds(container)) add expect(await
axe(container)).toHaveNoViolations() after normalizeGeneratedOuiaIds(container)
so the test both snapshots and asserts no accessibility violations.
---
Nitpick comments:
In `@frontend/jest.config.ts`:
- Line 23: Add a short TODO and tracking reference for the temporary
moduleNameMapper entry that redirects '^react-router-dom-v5-compat$' to
'<rootDir>/node_modules/react-router-dom' so we remember to remove it after
migration; update the jest.config.ts near the moduleNameMapper block to include
a TODO comment with a brief note and optionally open a follow-up issue/PR number
in the comment so the mapping can be removed once all imports no longer use
react-router-dom-v5-compat.
In `@frontend/packages/multicluster-sdk/package.json`:
- Line 41: The peerDependency entry for "`@openshift-console/dynamic-plugin-sdk`"
currently uses the semver range ">=4.22.0-0" which permits all 4.22.0
prereleases plus the final 4.22.0; either tighten that range or document the
intent: update the peerDependency on "`@openshift-console/dynamic-plugin-sdk`" in
package.json to a more specific range (for example a caret/pinned or bounded
range that restricts prereleases/future majors) if you meant to exclude
prerelease versions, or add a brief inline comment next to the
"`@openshift-console/dynamic-plugin-sdk`" peerDependency explaining why "-0"
prerelease allowance is required so readers understand the choice.
In
`@frontend/src/routes/Applications/CreateArgoApplication/createArgoResources.ts`:
- Line 3: The import currently brings in NavigateFunction as a runtime import;
change it to a type-only import to follow TS conventions by using "import type"
for NavigateFunction (the symbol to change) while keeping generatePath as a
normal import; update the import statement that references generatePath and
NavigateFunction so NavigateFunction is imported with "import type" to prevent
emitting a runtime import for the type.
In `@frontend/src/routes/Credentials/CreateCredentialsCatalog.tsx`:
- Line 10: The import for To is currently a runtime import but it's only used as
a type in CreateCredentialsCatalog; change the import to a type-only import by
using the TypeScript `import type { To } from 'react-router-dom'` form so To is
erased at runtime and no extra module import is emitted—update the import
statement that currently reads `import { To } from 'react-router-dom'` to the
type-only form and keep all usages of To (e.g., the prop/type on
CreateCredentialsCatalog) unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository: stolostron/coderabbit/.coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: a0b4c3b6-b9c6-476f-8fb2-e06228bd128b
⛔ Files ignored due to path filters (1)
frontend/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (299)
frontend/.storybook/preview.jsfrontend/jest.config.tsfrontend/package.jsonfrontend/packages/multicluster-sdk/README.mdfrontend/packages/multicluster-sdk/package.jsonfrontend/packages/multicluster-sdk/src/components/FleetResourceLink.test.tsxfrontend/packages/multicluster-sdk/src/components/FleetResourceLink.tsxfrontend/packages/multicluster-sdk/src/extensions/resource.tsfrontend/packages/multicluster-sdk/src/internal/FleetResourceEventStream/EventComponent.test.tsxfrontend/packages/multicluster-sdk/src/internal/FleetResourceEventStream/EventComponent.tsxfrontend/packages/react-form-wizard/package.jsonfrontend/packages/react-form-wizard/wizards/Ansible/AnsibleExample.tsxfrontend/packages/react-form-wizard/wizards/AppWizard/AppExample.tsxfrontend/packages/react-form-wizard/wizards/Application/ApplicationExample.tsxfrontend/packages/react-form-wizard/wizards/Argo/ArgoExamples.tsxfrontend/packages/react-form-wizard/wizards/Cluster/ClusterForm.tsxfrontend/packages/react-form-wizard/wizards/Cluster/Provider.tsxfrontend/packages/react-form-wizard/wizards/Credentials/CredentialsExample.tsxfrontend/packages/react-form-wizard/wizards/Demo.tsxfrontend/packages/react-form-wizard/wizards/Home/HomeWizard.tsxfrontend/packages/react-form-wizard/wizards/Hypershift/AmazonHypershiftWizard.tsxfrontend/packages/react-form-wizard/wizards/Inputs/InputsWizard.tsxfrontend/packages/react-form-wizard/wizards/Placement/PlacementExamples.tsxfrontend/packages/react-form-wizard/wizards/Policy/PolicyExamples.tsxfrontend/packages/react-form-wizard/wizards/PolicyAutomation/PolicyAutomationExamples.tsxfrontend/packages/react-form-wizard/wizards/PolicySet/PolicySetExamples.tsxfrontend/packages/react-form-wizard/wizards/ROSA/RosaExample.tsxfrontend/packages/react-form-wizard/wizards/common/utils.tsfrontend/plugins/acm/console-plugin-metadata.tsfrontend/plugins/mce/console-plugin-metadata.tsfrontend/src/App.tsxfrontend/src/NavigationPath.tsxfrontend/src/components/ACMNotReadyWarning.test.tsxfrontend/src/components/AutomationProviderHint.test.tsxfrontend/src/components/ClusterSets/ClusterSetsTable.test.tsxfrontend/src/components/ClusterSets/ClusterSetsTable.tsxfrontend/src/components/Clusters/ClustersTable.test.tsxfrontend/src/components/Clusters/ClustersTableHelper.test.tsxfrontend/src/components/Clusters/ClustersTableHelper.tsxfrontend/src/components/KubevirtProviderAlert.test.tsxfrontend/src/components/KubevirtProviderAlert.tsxfrontend/src/components/LoadPluginData.test.tsxfrontend/src/components/LoadPluginData.tsxfrontend/src/components/LostChanges.test.tsxfrontend/src/components/LostChanges.tsxfrontend/src/components/OperatorAlert.test.tsxfrontend/src/components/OperatorAlert.tsxfrontend/src/components/PluginDataContextProvider.test.tsxfrontend/src/components/ProjectsTable.test.tsxfrontend/src/components/ProjectsTable.tsxfrontend/src/components/RBACResourceYaml.test.tsxfrontend/src/components/StatusIcons.tsxfrontend/src/components/TemplateEditor/TemplateEditor.test.jsfrontend/src/components/TemplateSummaryModal.tsxfrontend/src/components/YamlEditor.test.tsxfrontend/src/components/rbac/IdentitiesList.test.tsxfrontend/src/lib/AcmTimestamp.test.tsxfrontend/src/lib/SharedContext.tsfrontend/src/lib/search.tsfrontend/src/plugin-extensions/acmResourceRoutes.test.tsfrontend/src/plugin-extensions/acmResourceRoutes.tsfrontend/src/plugin-extensions/extensions/OverviewTab.tsfrontend/src/plugin-extensions/extensions/actionExtension.tsfrontend/src/plugin-extensions/extensions/listColumnExtension.tsfrontend/src/routes/Applications/AdvancedConfiguration.test.tsxfrontend/src/routes/Applications/AdvancedConfiguration.tsxfrontend/src/routes/Applications/ApplicationDetails/ApplicationDetails.test.tsxfrontend/src/routes/Applications/ApplicationDetails/ApplicationDetails.tsxfrontend/src/routes/Applications/ApplicationDetails/ApplicationDetails/ApplicationDetails.test.tsxfrontend/src/routes/Applications/ApplicationDetails/ApplicationDetails/ApplicationDetails.tsxfrontend/src/routes/Applications/Applications.tsxfrontend/src/routes/Applications/ApplicationsPage.tsxfrontend/src/routes/Applications/CreateArgoApplication/CreatePullApplicationSet.test.tsxfrontend/src/routes/Applications/CreateArgoApplication/CreatePullApplicationSet.tsxfrontend/src/routes/Applications/CreateArgoApplication/CreatePushApplicationSet.test.tsxfrontend/src/routes/Applications/CreateArgoApplication/CreatePushApplicationSet.tsxfrontend/src/routes/Applications/CreateArgoApplication/EditArgoApplicationSet.tsxfrontend/src/routes/Applications/CreateArgoApplication/createArgoResources.tsfrontend/src/routes/Applications/CreateSubscriptionApplication/SubscriptionApplication.test.tsxfrontend/src/routes/Applications/CreateSubscriptionApplication/SubscriptionApplication.tsxfrontend/src/routes/Applications/Overview.test.tsxfrontend/src/routes/Applications/Overview.tsxfrontend/src/routes/Applications/components/DeleteResourceModal.test.tsxfrontend/src/routes/Applications/components/DeleteResourceModal.tsxfrontend/src/routes/Applications/components/TimeWindowLabels.test.tsxfrontend/src/routes/Applications/components/TimeWindowLabels.tsxfrontend/src/routes/Applications/components/ToggleSelector.tsxfrontend/src/routes/Applications/helpers/resource-helper.tsxfrontend/src/routes/Credentials/CreateCredentials.test.tsxfrontend/src/routes/Credentials/CreateCredentials.tsxfrontend/src/routes/Credentials/CreateCredentialsCatalog.tsxfrontend/src/routes/Credentials/CreateCredentialsType/CreateCredentialsAWS.test.tsxfrontend/src/routes/Credentials/Credentials.tsxfrontend/src/routes/Credentials/CredentialsForm.test.tsxfrontend/src/routes/Credentials/CredentialsForm.tsxfrontend/src/routes/Credentials/CredentialsPage.test.tsxfrontend/src/routes/Credentials/CredentialsPage.tsxfrontend/src/routes/Governance/Governance.tsxfrontend/src/routes/Governance/GovernancePage.tsxfrontend/src/routes/Governance/common/util.tsxfrontend/src/routes/Governance/components/AutomationDetailsSidebar.test.tsxfrontend/src/routes/Governance/components/AutomationDetailsSidebar.tsxfrontend/src/routes/Governance/components/GovernanceEmptyState.tsxfrontend/src/routes/Governance/components/PolicyActionDropdown.tsxfrontend/src/routes/Governance/components/ViewDiffApiCall.test.tsxfrontend/src/routes/Governance/discovered/DiscoveredPolicies.test.tsxfrontend/src/routes/Governance/discovered/DiscoveredPolicies.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredByCluster.test.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredByCluster.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredPolicyDetailsPage.test.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredPolicyDetailsPage.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredResources.test.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredResources.tsxfrontend/src/routes/Governance/discovered/details/common.test.tsxfrontend/src/routes/Governance/discovered/details/common.tsxfrontend/src/routes/Governance/overview/ClusterPolicySummarySidebar.test.tsxfrontend/src/routes/Governance/overview/ClusterPolicySummarySidebar.tsxfrontend/src/routes/Governance/overview/Overview.test.tsxfrontend/src/routes/Governance/overview/PolicyViolationSummary.tsxfrontend/src/routes/Governance/overview/SecurityGroupPolicySummarySidebar.tsxfrontend/src/routes/Governance/policies/CreatePolicy.test.tsxfrontend/src/routes/Governance/policies/CreatePolicy.tsxfrontend/src/routes/Governance/policies/CreatePolicyAutomation.test.tsxfrontend/src/routes/Governance/policies/CreatePolicyAutomation.tsxfrontend/src/routes/Governance/policies/CreatePolicySubmit.test.tsxfrontend/src/routes/Governance/policies/EditPolicy.test.tsxfrontend/src/routes/Governance/policies/EditPolicy.tsxfrontend/src/routes/Governance/policies/EditPolicyAutomation.test.tsxfrontend/src/routes/Governance/policies/EditPolicyAutomation.tsxfrontend/src/routes/Governance/policies/Policies.test.tsxfrontend/src/routes/Governance/policies/Policies.tsxfrontend/src/routes/Governance/policies/PolicyTableCell.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsOverview.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsOverview.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsPage.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsPage.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsResults.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsResults.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/KyvernoRelatedResources.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyDetailsHistory.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyDetailsHistory.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailHooks.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetails.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetails.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailsColumns.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailsPage.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailsPage.tsxfrontend/src/routes/Governance/policy-sets/CreatePolicySet.test.tsxfrontend/src/routes/Governance/policy-sets/CreatePolicySet.tsxfrontend/src/routes/Governance/policy-sets/EditPolicySet.test.tsxfrontend/src/routes/Governance/policy-sets/EditPolicySet.tsxfrontend/src/routes/Governance/policy-sets/PolicySets.test.tsxfrontend/src/routes/Governance/policy-sets/PolicySets.tsxfrontend/src/routes/Governance/policy-sets/components/PolicySetCard.test.tsxfrontend/src/routes/Governance/policy-sets/components/PolicySetCard.tsxfrontend/src/routes/Governance/policy-sets/components/PolicySetDetailSidebar.test.tsxfrontend/src/routes/Governance/policy-sets/components/PolicySetDetailSidebar.tsxfrontend/src/routes/Home/Overview/Overview.test.tsxfrontend/src/routes/Home/Overview/OverviewPage.test.tsxfrontend/src/routes/Home/Overview/components/SavedSearchesCard.test.tsxfrontend/src/routes/Home/Overview/components/SavedSearchesCard.tsxfrontend/src/routes/Home/Overview/components/SummaryCard.test.tsxfrontend/src/routes/Home/Overview/components/SummaryCard.tsxfrontend/src/routes/Home/Overview/components/SummaryClustersCard.test.tsxfrontend/src/routes/Home/Overview/components/SummaryClustersCard.tsxfrontend/src/routes/Home/Overview/components/SummaryStatusCard.test.tsxfrontend/src/routes/Home/Overview/components/SummaryStatusCard.tsxfrontend/src/routes/Home/Welcome/Welcome.tsxfrontend/src/routes/Infrastructure/Automations/AnsibleAutomations.test.tsxfrontend/src/routes/Infrastructure/Automations/AnsibleAutomations.tsxfrontend/src/routes/Infrastructure/Automations/AnsibleAutomationsForm.test.tsxfrontend/src/routes/Infrastructure/Automations/AnsibleAutomationsForm.tsxfrontend/src/routes/Infrastructure/Automations/Automations.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/ClusterPools.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/ClusterPools.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPool.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPool.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPoolCatalog.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPoolCatalog.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPoolPage.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/components/ClusterClaimModal.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterRoleAssignments.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterRoleAssignments.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetAccessManagement/ClusterSetAccessManagement.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusterPools/ClusterSetClusterPools.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusters/ClusterSetClusters.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusters/ClusterSetClusters.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetDetails.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetDetails.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetDetailsPage.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetInstallSubmariner/InstallSubmarinerForm.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetManageResources/ClusterSetManageResources.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetManageResources/ClusterSetManageResources.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetOverview/ClusterSetOverview.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetRoleAssignments/ClusterSetRoleAssignments.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetRoleAssignments/ClusterSetRoleAssignments.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetSubmariner/ClusterSetSubmariner.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetRoleAssignmentsPage.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetRoleAssignmentsPage.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSets.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetsPage.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/CreateClusterSet/CreateClusterSetModal.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/components/ClusterSetActionDropdown.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/components/ClusterSetActionDropdown.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/components/MultiClusterNetworkStatus.tsxfrontend/src/routes/Infrastructure/Clusters/Clusters.tsxfrontend/src/routes/Infrastructure/Clusters/ClustersPage.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClustersPage.tsxfrontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveredClusters.test.tsxfrontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveredClusters.tsxfrontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveryConfig/DiscoveryConfig.test.tsxfrontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveryConfig/DiscoveryConfig.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterDetails.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterDetails.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterMachinePools/ClusterMachinePools.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterNodes/ClusterNodes.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterNodes/ClusterNodes.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterOverview/ClusterOverview.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterOverview/ClusterOverview.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/CreateCluster.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/CreateCluster.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/Warning.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/DetailsForm.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/DetailsForm.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/HostForm.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/HypershiftAWSCLI.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/NetworkForm.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/utils.tsfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateAWSControlPlane.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateClusterCatalog.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateControlPlane.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateDiscoverHost.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateDiscoverHost.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateKubeVirtControlPlane.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterPage.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ImportCluster/ImportCluster.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ImportCluster/ImportCluster.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ManagedClusters.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ManagedClusters.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/AddCluster.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/BatchChannelSelectModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/BatchUpgradeModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterActionDropdown.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterActionDropdown.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterDestroy.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterDestroy.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterPolicySidebar.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/DistributionField.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/DistributionField.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/HiveNotification.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/HostedClusterProgress.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ImportCommand.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/LoginCredentials.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/NodePoolsProgress.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/NodePoolsTable.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/OnboardingModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/OnboardingModal.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ProgressStepBar.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/RemoveAutomationModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ScaleClusterAlert.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusField.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusField.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusSummaryCount.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusSummaryCount.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/UpdateAutomationModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/UpdateAutomationModal.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/cim/AIClusterDetails.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/cim/EditAICluster.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/cim/EditAICluster.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/CreatePlacement.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/CreatePlacement.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/EditPlacement.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/EditPlacement.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementDetails.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementDetails.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementOverview/PlacementOverview.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementOverview/PlacementOverview.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/Placements.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/Placements.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/utils.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/utils.tsxfrontend/src/routes/Infrastructure/Clusters/RoleAssignmentsPage.test.tsxfrontend/src/routes/Infrastructure/Clusters/RoleAssignmentsPage.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/CreateInfraEnv.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/Details/InfraEnvironmentDetailsPage.test.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/Details/InfraEnvironmentDetailsPage.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/InfraEnvForm.test.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/InfraEnvironments.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/InfraEnvironmentsPage.test.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/InfraEnvironmentsPage.tsxfrontend/src/routes/Infrastructure/VirtualMachines/utils.test.tsxfrontend/src/routes/Infrastructure/VirtualMachines/utils.tsxfrontend/src/routes/Search/Details/DetailsOverviewPage.test.tsxfrontend/src/routes/Search/Details/DetailsOverviewPage.tsxfrontend/src/routes/Search/Details/DetailsPage.test.tsxfrontend/src/routes/Search/Details/DetailsPage.tsxfrontend/src/routes/Search/Details/LogsPage.test.tsxfrontend/src/routes/Search/Details/LogsPage.tsxfrontend/src/routes/Search/Details/RelatedResourceDetailsTab.test.tsx
💤 Files with no reviewable changes (2)
- frontend/src/components/Clusters/ClustersTableHelper.test.tsx
- frontend/src/components/Clusters/ClustersTable.test.tsx
👮 Files not reviewed due to content moderation or server errors (1)
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusters/ClusterSetClusters.tsx
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Assisted-by: Cursor (Claude Opus 4.6 High) Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
…outer-dom@6 Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
a102c60 to
476452d
Compare
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (5)
frontend/src/routes/Infrastructure/Clusters/Placements/utils.test.tsx (1)
240-387:⚠️ Potential issue | 🟠 MajorAdd jest-axe accessibility assertions to PlacementLinkList/ClusterLinkList/ClusterSetLinkList tests
frontend/src/routes/Infrastructure/Clusters/Placements/utils.test.tsx(lines ~240-387) contains nojest-axe/axe(container)/toHaveNoViolations()assertions for these component test blocks; add accessibility checks perfrontend/**/*.test.tsxrequirement.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/routes/Infrastructure/Clusters/Placements/utils.test.tsx` around lines 240 - 387, Add jest-axe accessibility assertions to the PlacementLinkList, ClusterLinkList, and ClusterSetLinkList tests by running axe on the rendered container and asserting no violations; for each test block that calls render(…) for PlacementLinkList, ClusterLinkList, or ClusterSetLinkList (use the existing render calls that return a container), call await axe(container) and expect(results).toHaveNoViolations() (or expect(await axe(container)).toHaveNoViolations()) after rendering and user interactions (e.g., after clicking show more/show less) so each test verifies accessibility using the jest-axe matcher.Source: Coding guidelines
frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ScaleClusterAlert.test.tsx (1)
29-80:⚠️ Potential issue | 🟡 MinorAdd a
jest-axeaccessibility assertion toScaleClusterAlerttests.
frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ScaleClusterAlert.test.tsxmounts the component but the test cases shown have noexpect(await axe(container)).toHaveNoViolations()check.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ScaleClusterAlert.test.tsx` around lines 29 - 80, Add an accessibility assertion to each test by running jest-axe against the rendered DOM container and asserting no violations; import axe from 'jest-axe' and use expect(await axe(container)).toHaveNoViolations() after each render in the tests that call render(<Component />) (the tests inside describe('ScaleClusterAlert') that use RecoilRoot and render Component, including the cases with machinePoolsState). Ensure the container returned by render(...) is captured (e.g., const { container } = render(...)) and await the axe result before completing each test.frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateControlPlane.test.tsx (1)
24-123: 🛠️ Refactor suggestion | 🟠 MajorAdd a
jest-axeaccessibility assertion to this test suite.
frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateControlPlane.test.tsxcontains component tests but noaxe(container)/toHaveNoViolations()check; add one to matchfrontend/**/*.test.tsxrequirements.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateControlPlane.test.tsx` around lines 24 - 123, Add an accessibility assertion using jest-axe to the CreateControlPlane test suite: import axe (and ensure toHaveNoViolations is registered) and after each render + waitForNocks call use the rendered container (from render(...)) to run `await axe(container)` and `expect(results).toHaveNoViolations()`; update tests that call render (e.g., the tests using render(<Component ... />) and symbols like CreateControlPlane, render, waitForNocks, getByTestId) to include this check right after waiting for nocks so the accessibility scan runs on the final DOM.Source: Coding guidelines
frontend/src/lib/AcmTimestamp.test.tsx (1)
45-147:⚠️ Potential issue | 🟡 MinorAdd jest-axe accessibility assertion to AcmTimestamp test suite
frontend/src/lib/AcmTimestamp.test.tsxcontains nojest-axe/axe(container)check, so it doesn’t meet the accessibility test requirement for component tests.Suggested patch
+import { axe } from 'jest-axe' import { UseK8sWatchResource } from '`@openshift-console/dynamic-plugin-sdk`' import { useFleetK8sWatchResource } from '`@stolostron/multicluster-sdk`' import { render, screen } from '`@testing-library/react`' import React from 'react' import AcmTimestamp from './AcmTimestamp' import { PluginContext } from './PluginContext' import { PluginDataContext } from './PluginDataContext' describe('AcmTimestamp', () => { const timestamp = 'Jan 3, 2025, 6:53 PM' + test('has no accessibility violations', async () => { + const { container } = render( + <PluginContext.Provider value={mockPluginContextValue}> + <AcmTimestamp timestamp={timestamp} /> + </PluginContext.Provider> + ) + expect(await axe(container)).toHaveNoViolations() + }) + test('renders dash when timestamp is undefined', () => { render( <PluginContext.Provider value={mockPluginContextValue}> <AcmTimestamp timestamp={undefined} /> </PluginContext.Provider> ) expect(screen.getByText('-')).toBeInTheDocument() })🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/src/lib/AcmTimestamp.test.tsx` around lines 45 - 147, The test suite for AcmTimestamp is missing a jest-axe accessibility assertion; update the tests that call render(...) (e.g., in the describe('AcmTimestamp') block and tests using PluginContext and mockPluginContextValue) to import and use axe from 'jest-axe', capture the render result's container, make the test async, run const results = await axe(container) and assert expect(results).toHaveNoViolations(); you can add a single new async test (or append to existing renders) that covers the default render and the edge-case renders (empty/undefined/null) to satisfy the accessibility check for AcmTimestamp and SimpleTimestamp fallbacks.Source: Coding guidelines
frontend/packages/multicluster-sdk/src/internal/FleetResourceEventStream/EventComponent.test.tsx (1)
57-113:⚠️ Potential issue | 🟡 MinorAdd
jest-axeaccessibility coverage toEventComponenttest
frontend/packages/multicluster-sdk/src/internal/FleetResourceEventStream/EventComponent.test.tsxhas noexpect(await axe(container)).toHaveNoViolations()assertion. Importaxefromjest-axe, capturecontainerfromrender(...), and add the accessibility assertion to this component test suite.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/packages/multicluster-sdk/src/internal/FleetResourceEventStream/EventComponent.test.tsx` around lines 57 - 113, Update the EventComponent test to include jest-axe accessibility assertion: import { axe } from 'jest-axe', make the test async, capture the container returned by render(<EventComponent ... />), then add await expect(await axe(container)).toHaveNoViolations() (or expect(await axe(container)).toHaveNoViolations() inside an async test) after the existing DOM assertions; ensure you reference the EventComponent test block and the render call so the container variable is used.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In
`@frontend/packages/multicluster-sdk/src/internal/FleetResourceEventStream/EventComponent.test.tsx`:
- Around line 57-113: Update the EventComponent test to include jest-axe
accessibility assertion: import { axe } from 'jest-axe', make the test async,
capture the container returned by render(<EventComponent ... />), then add await
expect(await axe(container)).toHaveNoViolations() (or expect(await
axe(container)).toHaveNoViolations() inside an async test) after the existing
DOM assertions; ensure you reference the EventComponent test block and the
render call so the container variable is used.
In `@frontend/src/lib/AcmTimestamp.test.tsx`:
- Around line 45-147: The test suite for AcmTimestamp is missing a jest-axe
accessibility assertion; update the tests that call render(...) (e.g., in the
describe('AcmTimestamp') block and tests using PluginContext and
mockPluginContextValue) to import and use axe from 'jest-axe', capture the
render result's container, make the test async, run const results = await
axe(container) and assert expect(results).toHaveNoViolations(); you can add a
single new async test (or append to existing renders) that covers the default
render and the edge-case renders (empty/undefined/null) to satisfy the
accessibility check for AcmTimestamp and SimpleTimestamp fallbacks.
In
`@frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ScaleClusterAlert.test.tsx`:
- Around line 29-80: Add an accessibility assertion to each test by running
jest-axe against the rendered DOM container and asserting no violations; import
axe from 'jest-axe' and use expect(await axe(container)).toHaveNoViolations()
after each render in the tests that call render(<Component />) (the tests inside
describe('ScaleClusterAlert') that use RecoilRoot and render Component,
including the cases with machinePoolsState). Ensure the container returned by
render(...) is captured (e.g., const { container } = render(...)) and await the
axe result before completing each test.
In
`@frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateControlPlane.test.tsx`:
- Around line 24-123: Add an accessibility assertion using jest-axe to the
CreateControlPlane test suite: import axe (and ensure toHaveNoViolations is
registered) and after each render + waitForNocks call use the rendered container
(from render(...)) to run `await axe(container)` and
`expect(results).toHaveNoViolations()`; update tests that call render (e.g., the
tests using render(<Component ... />) and symbols like CreateControlPlane,
render, waitForNocks, getByTestId) to include this check right after waiting for
nocks so the accessibility scan runs on the final DOM.
In `@frontend/src/routes/Infrastructure/Clusters/Placements/utils.test.tsx`:
- Around line 240-387: Add jest-axe accessibility assertions to the
PlacementLinkList, ClusterLinkList, and ClusterSetLinkList tests by running axe
on the rendered container and asserting no violations; for each test block that
calls render(…) for PlacementLinkList, ClusterLinkList, or ClusterSetLinkList
(use the existing render calls that return a container), call await
axe(container) and expect(results).toHaveNoViolations() (or expect(await
axe(container)).toHaveNoViolations()) after rendering and user interactions
(e.g., after clicking show more/show less) so each test verifies accessibility
using the jest-axe matcher.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 36bb83af-79da-478b-913a-e41efe7163dd
⛔ Files ignored due to path filters (1)
frontend/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (291)
frontend/.storybook/preview.jsfrontend/jest.config.tsfrontend/package.jsonfrontend/packages/multicluster-sdk/README.mdfrontend/packages/multicluster-sdk/package.jsonfrontend/packages/multicluster-sdk/src/components/FleetResourceLink.test.tsxfrontend/packages/multicluster-sdk/src/components/FleetResourceLink.tsxfrontend/packages/multicluster-sdk/src/extensions/resource.tsfrontend/packages/multicluster-sdk/src/internal/FleetResourceEventStream/EventComponent.test.tsxfrontend/packages/multicluster-sdk/src/internal/FleetResourceEventStream/EventComponent.tsxfrontend/packages/multicluster-sdk/src/internal/resourceRouteUtils.tsfrontend/packages/react-form-wizard/package.jsonfrontend/packages/react-form-wizard/wizards/Ansible/AnsibleExample.tsxfrontend/packages/react-form-wizard/wizards/AppWizard/AppExample.tsxfrontend/packages/react-form-wizard/wizards/Application/ApplicationExample.tsxfrontend/packages/react-form-wizard/wizards/Argo/ArgoExamples.tsxfrontend/packages/react-form-wizard/wizards/Cluster/ClusterForm.tsxfrontend/packages/react-form-wizard/wizards/Cluster/Provider.tsxfrontend/packages/react-form-wizard/wizards/Credentials/CredentialsExample.tsxfrontend/packages/react-form-wizard/wizards/Demo.tsxfrontend/packages/react-form-wizard/wizards/Home/HomeWizard.tsxfrontend/packages/react-form-wizard/wizards/Hypershift/AmazonHypershiftWizard.tsxfrontend/packages/react-form-wizard/wizards/Inputs/InputsWizard.tsxfrontend/packages/react-form-wizard/wizards/Placement/PlacementExamples.tsxfrontend/packages/react-form-wizard/wizards/Policy/PolicyExamples.tsxfrontend/packages/react-form-wizard/wizards/PolicyAutomation/PolicyAutomationExamples.tsxfrontend/packages/react-form-wizard/wizards/PolicySet/PolicySetExamples.tsxfrontend/packages/react-form-wizard/wizards/ROSA/RosaExample.tsxfrontend/packages/react-form-wizard/wizards/common/utils.tsfrontend/plugins/acm/console-plugin-metadata.tsfrontend/plugins/mce/console-plugin-metadata.tsfrontend/src/App.tsxfrontend/src/NavigationPath.tsxfrontend/src/components/ACMNotReadyWarning.test.tsxfrontend/src/components/AutomationProviderHint.test.tsxfrontend/src/components/ClusterSets/ClusterSetsTable.test.tsxfrontend/src/components/ClusterSets/ClusterSetsTable.tsxfrontend/src/components/Clusters/ClustersTable.test.tsxfrontend/src/components/Clusters/ClustersTableHelper.test.tsxfrontend/src/components/Clusters/ClustersTableHelper.tsxfrontend/src/components/KubevirtProviderAlert.test.tsxfrontend/src/components/KubevirtProviderAlert.tsxfrontend/src/components/LoadPluginData.test.tsxfrontend/src/components/LoadPluginData.tsxfrontend/src/components/LostChanges.test.tsxfrontend/src/components/LostChanges.tsxfrontend/src/components/OperatorAlert.test.tsxfrontend/src/components/OperatorAlert.tsxfrontend/src/components/PluginContextProvider.tsxfrontend/src/components/PluginDataContextProvider.test.tsxfrontend/src/components/ProjectsTable.test.tsxfrontend/src/components/ProjectsTable.tsxfrontend/src/components/RBACResourceYaml.test.tsxfrontend/src/components/StatusIcons.tsxfrontend/src/components/TemplateEditor/TemplateEditor.test.jsfrontend/src/components/TemplateSummaryModal.tsxfrontend/src/components/YamlEditor.test.tsxfrontend/src/components/rbac/IdentitiesList.test.tsxfrontend/src/lib/AcmTimestamp.test.tsxfrontend/src/lib/SharedContext.tsfrontend/src/lib/search.tsfrontend/src/plugin-extensions/acmResourceRoutes.test.tsfrontend/src/plugin-extensions/acmResourceRoutes.tsfrontend/src/plugin-extensions/extensions/OverviewTab.tsfrontend/src/plugin-extensions/extensions/actionExtension.tsfrontend/src/plugin-extensions/extensions/listColumnExtension.tsfrontend/src/plugin-extensions/properties/overviewTabProps.tsfrontend/src/routes/Applications/AdvancedConfiguration.test.tsxfrontend/src/routes/Applications/AdvancedConfiguration.tsxfrontend/src/routes/Applications/ApplicationDetails/ApplicationDetails.test.tsxfrontend/src/routes/Applications/ApplicationDetails/ApplicationDetails.tsxfrontend/src/routes/Applications/ApplicationDetails/ApplicationDetails/ApplicationDetails.test.tsxfrontend/src/routes/Applications/ApplicationDetails/ApplicationDetails/ApplicationDetails.tsxfrontend/src/routes/Applications/Applications.tsxfrontend/src/routes/Applications/ApplicationsPage.tsxfrontend/src/routes/Applications/CreateArgoApplication/CreatePullApplicationSet.test.tsxfrontend/src/routes/Applications/CreateArgoApplication/CreatePullApplicationSet.tsxfrontend/src/routes/Applications/CreateArgoApplication/CreatePushApplicationSet.test.tsxfrontend/src/routes/Applications/CreateArgoApplication/CreatePushApplicationSet.tsxfrontend/src/routes/Applications/CreateArgoApplication/EditArgoApplicationSet.tsxfrontend/src/routes/Applications/CreateArgoApplication/createArgoResources.tsfrontend/src/routes/Applications/CreateSubscriptionApplication/SubscriptionApplication.test.tsxfrontend/src/routes/Applications/CreateSubscriptionApplication/SubscriptionApplication.tsxfrontend/src/routes/Applications/Overview.test.tsxfrontend/src/routes/Applications/Overview.tsxfrontend/src/routes/Applications/components/DeleteResourceModal.test.tsxfrontend/src/routes/Applications/components/DeleteResourceModal.tsxfrontend/src/routes/Applications/components/TimeWindowLabels.test.tsxfrontend/src/routes/Applications/components/TimeWindowLabels.tsxfrontend/src/routes/Applications/components/ToggleSelector.tsxfrontend/src/routes/Applications/helpers/resource-helper.tsxfrontend/src/routes/Credentials/CreateCredentials.test.tsxfrontend/src/routes/Credentials/CreateCredentials.tsxfrontend/src/routes/Credentials/CreateCredentialsCatalog.tsxfrontend/src/routes/Credentials/CreateCredentialsType/CreateCredentialsAWS.test.tsxfrontend/src/routes/Credentials/Credentials.tsxfrontend/src/routes/Credentials/CredentialsForm.test.tsxfrontend/src/routes/Credentials/CredentialsForm.tsxfrontend/src/routes/Credentials/CredentialsPage.test.tsxfrontend/src/routes/Credentials/CredentialsPage.tsxfrontend/src/routes/Governance/Governance.tsxfrontend/src/routes/Governance/GovernancePage.tsxfrontend/src/routes/Governance/common/util.tsxfrontend/src/routes/Governance/components/AutomationDetailsSidebar.test.tsxfrontend/src/routes/Governance/components/AutomationDetailsSidebar.tsxfrontend/src/routes/Governance/components/GovernanceEmptyState.tsxfrontend/src/routes/Governance/components/PolicyActionDropdown.tsxfrontend/src/routes/Governance/components/ViewDiffApiCall.test.tsxfrontend/src/routes/Governance/discovered/DiscoveredPolicies.test.tsxfrontend/src/routes/Governance/discovered/DiscoveredPolicies.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredByCluster.test.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredByCluster.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredPolicyDetailsPage.test.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredPolicyDetailsPage.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredResources.test.tsxfrontend/src/routes/Governance/discovered/details/DiscoveredResources.tsxfrontend/src/routes/Governance/discovered/details/common.test.tsxfrontend/src/routes/Governance/discovered/details/common.tsxfrontend/src/routes/Governance/overview/ClusterPolicySummarySidebar.test.tsxfrontend/src/routes/Governance/overview/ClusterPolicySummarySidebar.tsxfrontend/src/routes/Governance/overview/Overview.test.tsxfrontend/src/routes/Governance/overview/PolicyViolationSummary.tsxfrontend/src/routes/Governance/overview/SecurityGroupPolicySummarySidebar.tsxfrontend/src/routes/Governance/policies/CreatePolicy.test.tsxfrontend/src/routes/Governance/policies/CreatePolicy.tsxfrontend/src/routes/Governance/policies/CreatePolicyAutomation.test.tsxfrontend/src/routes/Governance/policies/CreatePolicyAutomation.tsxfrontend/src/routes/Governance/policies/CreatePolicySubmit.test.tsxfrontend/src/routes/Governance/policies/EditPolicy.test.tsxfrontend/src/routes/Governance/policies/EditPolicy.tsxfrontend/src/routes/Governance/policies/EditPolicyAutomation.test.tsxfrontend/src/routes/Governance/policies/EditPolicyAutomation.tsxfrontend/src/routes/Governance/policies/Policies.test.tsxfrontend/src/routes/Governance/policies/Policies.tsxfrontend/src/routes/Governance/policies/PolicyTableCell.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsOverview.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsOverview.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsPage.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsPage.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsResults.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyDetailsResults.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/KyvernoRelatedResources.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyDetailsHistory.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyDetailsHistory.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailHooks.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetails.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetails.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailsColumns.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailsPage.test.tsxfrontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailsPage.tsxfrontend/src/routes/Governance/policy-sets/CreatePolicySet.test.tsxfrontend/src/routes/Governance/policy-sets/CreatePolicySet.tsxfrontend/src/routes/Governance/policy-sets/EditPolicySet.test.tsxfrontend/src/routes/Governance/policy-sets/EditPolicySet.tsxfrontend/src/routes/Governance/policy-sets/PolicySets.test.tsxfrontend/src/routes/Governance/policy-sets/PolicySets.tsxfrontend/src/routes/Governance/policy-sets/components/PolicySetCard.test.tsxfrontend/src/routes/Governance/policy-sets/components/PolicySetCard.tsxfrontend/src/routes/Governance/policy-sets/components/PolicySetDetailSidebar.test.tsxfrontend/src/routes/Governance/policy-sets/components/PolicySetDetailSidebar.tsxfrontend/src/routes/Home/Overview/Overview.test.tsxfrontend/src/routes/Home/Overview/OverviewPage.test.tsxfrontend/src/routes/Home/Overview/components/SavedSearchesCard.test.tsxfrontend/src/routes/Home/Overview/components/SavedSearchesCard.tsxfrontend/src/routes/Home/Overview/components/SummaryCard.test.tsxfrontend/src/routes/Home/Overview/components/SummaryCard.tsxfrontend/src/routes/Home/Overview/components/SummaryClustersCard.test.tsxfrontend/src/routes/Home/Overview/components/SummaryClustersCard.tsxfrontend/src/routes/Home/Overview/components/SummaryStatusCard.test.tsxfrontend/src/routes/Home/Overview/components/SummaryStatusCard.tsxfrontend/src/routes/Home/Welcome/Welcome.tsxfrontend/src/routes/Infrastructure/Automations/AnsibleAutomations.test.tsxfrontend/src/routes/Infrastructure/Automations/AnsibleAutomations.tsxfrontend/src/routes/Infrastructure/Automations/AnsibleAutomationsForm.test.tsxfrontend/src/routes/Infrastructure/Automations/AnsibleAutomationsForm.tsxfrontend/src/routes/Infrastructure/Automations/Automations.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/ClusterPools.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/ClusterPools.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPool.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPool.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPoolCatalog.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPoolCatalog.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPoolPage.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterPools/components/ClusterClaimModal.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterRoleAssignments.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterRoleAssignments.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetAccessManagement/ClusterSetAccessManagement.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusterPools/ClusterSetClusterPools.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusters/ClusterSetClusters.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusters/ClusterSetClusters.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetDetails.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetDetails.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetDetailsPage.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetInstallSubmariner/InstallSubmarinerForm.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetManageResources/ClusterSetManageResources.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetManageResources/ClusterSetManageResources.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetOverview/ClusterSetOverview.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetRoleAssignments/ClusterSetRoleAssignments.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetRoleAssignments/ClusterSetRoleAssignments.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetSubmariner/ClusterSetSubmariner.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetRoleAssignmentsPage.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetRoleAssignmentsPage.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSets.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetsPage.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/CreateClusterSet/CreateClusterSetModal.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/components/ClusterSetActionDropdown.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/components/ClusterSetActionDropdown.tsxfrontend/src/routes/Infrastructure/Clusters/ClusterSets/components/MultiClusterNetworkStatus.tsxfrontend/src/routes/Infrastructure/Clusters/Clusters.tsxfrontend/src/routes/Infrastructure/Clusters/ClustersPage.test.tsxfrontend/src/routes/Infrastructure/Clusters/ClustersPage.tsxfrontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveredClusters.test.tsxfrontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveredClusters.tsxfrontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveryConfig/DiscoveryConfig.test.tsxfrontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveryConfig/DiscoveryConfig.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterDetails.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterDetails.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterMachinePools/ClusterMachinePools.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterNodes/ClusterNodes.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterNodes/ClusterNodes.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterOverview/ClusterOverview.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterOverview/ClusterOverview.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/CreateCluster.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/CreateCluster.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/Warning.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/DetailsForm.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/DetailsForm.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/HostForm.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/HypershiftAWSCLI.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/NetworkForm.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/utils.tsfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateAWSControlPlane.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateClusterCatalog.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateControlPlane.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateDiscoverHost.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateDiscoverHost.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateKubeVirtControlPlane.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterPage.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ImportCluster/ImportCluster.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ImportCluster/ImportCluster.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ManagedClusters.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/ManagedClusters.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/AddCluster.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/BatchChannelSelectModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/BatchUpgradeModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterActionDropdown.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterActionDropdown.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterDestroy.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterDestroy.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterPolicySidebar.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/DistributionField.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/DistributionField.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/HiveNotification.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/HostedClusterProgress.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ImportCommand.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/LoginCredentials.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/NodePoolsProgress.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/NodePoolsTable.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/OnboardingModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/OnboardingModal.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ProgressStepBar.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/RemoveAutomationModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ScaleClusterAlert.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusField.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusField.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusSummaryCount.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusSummaryCount.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/UpdateAutomationModal.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/UpdateAutomationModal.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/cim/AIClusterDetails.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/cim/EditAICluster.test.tsxfrontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/cim/EditAICluster.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/CreatePlacement.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/CreatePlacement.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/EditPlacement.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/EditPlacement.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementDetails.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementDetails.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementOverview/PlacementOverview.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementOverview/PlacementOverview.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/Placements.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/Placements.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/utils.test.tsxfrontend/src/routes/Infrastructure/Clusters/Placements/utils.tsxfrontend/src/routes/Infrastructure/Clusters/RoleAssignmentsPage.test.tsxfrontend/src/routes/Infrastructure/Clusters/RoleAssignmentsPage.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/CreateInfraEnv.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/Details/InfraEnvironmentDetailsPage.test.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/Details/InfraEnvironmentDetailsPage.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/InfraEnvForm.test.tsxfrontend/src/routes/Infrastructure/InfraEnvironments/InfraEnvironments.tsx
💤 Files with no reviewable changes (2)
- frontend/src/components/Clusters/ClustersTableHelper.test.tsx
- frontend/src/components/Clusters/ClustersTable.test.tsx
✅ Files skipped from review due to trivial changes (108)
- frontend/src/routes/Governance/policies/Policies.test.tsx
- frontend/src/components/LostChanges.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterRoleAssignments.tsx
- frontend/src/components/OperatorAlert.tsx
- frontend/src/routes/Home/Overview/components/SummaryStatusCard.tsx
- frontend/src/routes/Applications/components/DeleteResourceModal.tsx
- frontend/src/routes/Governance/discovered/details/common.test.tsx
- frontend/src/routes/Applications/CreateArgoApplication/CreatePullApplicationSet.tsx
- frontend/src/routes/Applications/helpers/resource-helper.tsx
- frontend/src/App.tsx
- frontend/src/routes/Home/Overview/components/SummaryStatusCard.test.tsx
- frontend/src/routes/Governance/components/GovernanceEmptyState.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetRoleAssignmentsPage.tsx
- frontend/src/routes/Governance/overview/ClusterPolicySummarySidebar.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/NetworkForm.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/components/ClusterSetActionDropdown.tsx
- frontend/src/lib/search.ts
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/HiveNotification.test.tsx
- frontend/src/routes/Governance/policy-sets/CreatePolicySet.tsx
- frontend/src/routes/Governance/GovernancePage.tsx
- frontend/src/routes/Governance/policies/CreatePolicyAutomation.tsx
- frontend/src/routes/Infrastructure/Automations/Automations.tsx
- frontend/src/routes/Governance/policies/EditPolicyAutomation.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/components/ClusterSetActionDropdown.test.tsx
- frontend/src/routes/Infrastructure/InfraEnvironments/Details/InfraEnvironmentDetailsPage.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetOverview/ClusterSetOverview.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/NodePoolsTable.test.tsx
- frontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveryConfig/DiscoveryConfig.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyDetailsHistory.test.tsx
- frontend/src/routes/Governance/overview/SecurityGroupPolicySummarySidebar.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSets.test.tsx
- frontend/src/components/StatusIcons.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/HostForm.test.tsx
- frontend/src/routes/Governance/policies/PolicyTableCell.tsx
- frontend/src/routes/Infrastructure/InfraEnvironments/InfraEnvironments.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/OnboardingModal.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusField.test.tsx
- frontend/src/components/LoadPluginData.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterNodes/ClusterNodes.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/Placements.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetManageResources/ClusterSetManageResources.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterDetails.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ImportCommand.test.tsx
- frontend/src/routes/Applications/CreateArgoApplication/createArgoResources.ts
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/OnboardingModal.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusField.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/NodePoolsProgress.test.tsx
- frontend/packages/multicluster-sdk/src/internal/FleetResourceEventStream/EventComponent.tsx
- frontend/src/components/TemplateEditor/TemplateEditor.test.js
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/CreateCluster.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ProgressStepBar.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusterPools/ClusterSetClusterPools.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterPolicySidebar.test.tsx
- frontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveryConfig/DiscoveryConfig.test.tsx
- frontend/src/routes/Governance/discovered/details/DiscoveredPolicyDetailsPage.test.tsx
- frontend/src/components/ACMNotReadyWarning.test.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementDetails.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusters/ClusterSetClusters.test.tsx
- frontend/src/routes/Home/Overview/components/SavedSearchesCard.test.tsx
- frontend/src/routes/Governance/discovered/DiscoveredPolicies.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/DetailsForm.tsx
- frontend/src/components/LoadPluginData.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterOverview/ClusterOverview.test.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetails.tsx
- frontend/src/components/PluginDataContextProvider.test.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailsPage.tsx
- frontend/src/routes/Governance/policy-sets/CreatePolicySet.test.tsx
- frontend/src/plugin-extensions/extensions/actionExtension.ts
- frontend/src/routes/Applications/AdvancedConfiguration.tsx
- frontend/src/routes/Credentials/CreateCredentials.tsx
- frontend/src/routes/Credentials/Credentials.tsx
- frontend/src/routes/Infrastructure/Automations/AnsibleAutomationsForm.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/EditPlacement.test.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/EditPlacement.tsx
- frontend/packages/multicluster-sdk/README.md
- frontend/src/routes/Governance/policies/EditPolicy.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetDetails.tsx
- frontend/packages/multicluster-sdk/src/internal/resourceRouteUtils.ts
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetDetails.test.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/CreatePlacement.test.tsx
- frontend/src/routes/Home/Overview/components/SummaryClustersCard.test.tsx
- frontend/src/routes/Applications/ApplicationsPage.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetSubmariner/ClusterSetSubmariner.tsx
- frontend/src/routes/Credentials/CreateCredentialsType/CreateCredentialsAWS.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateAWSControlPlane.test.tsx
- frontend/src/routes/Infrastructure/InfraEnvironments/CreateInfraEnv.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyDetailsPage.test.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/KyvernoRelatedResources.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterRoleAssignments.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterDetails.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/DistributionField.test.tsx
- frontend/src/routes/Credentials/CreateCredentials.test.tsx
- frontend/src/routes/Applications/ApplicationDetails/ApplicationDetails.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateKubeVirtControlPlane.test.tsx
- frontend/src/routes/Home/Overview/components/SummaryCard.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementDetails.test.tsx
- frontend/src/routes/Credentials/CredentialsPage.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/utils.ts
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetInstallSubmariner/InstallSubmarinerForm.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterPools/components/ClusterClaimModal.tsx
- frontend/src/routes/Governance/common/util.tsx
- frontend/src/routes/Applications/CreateSubscriptionApplication/SubscriptionApplication.test.tsx
- frontend/src/routes/Applications/ApplicationDetails/ApplicationDetails.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/HostedClusterProgress.test.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementOverview/PlacementOverview.test.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyDetailsResults.test.tsx
- frontend/src/components/rbac/IdentitiesList.test.tsx
- frontend/src/plugin-extensions/properties/overviewTabProps.ts
🚧 Files skipped from review as they are similar to previous changes (153)
- frontend/src/routes/Governance/policy-sets/EditPolicySet.tsx
- frontend/src/routes/Credentials/CreateCredentialsCatalog.tsx
- frontend/src/routes/Governance/policy-sets/components/PolicySetDetailSidebar.test.tsx
- frontend/src/components/ClusterSets/ClusterSetsTable.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/CreateClusterSet/CreateClusterSetModal.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyDetailsOverview.test.tsx
- frontend/src/routes/Applications/components/TimeWindowLabels.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetsPage.test.tsx
- frontend/src/routes/Applications/Applications.tsx
- frontend/src/components/KubevirtProviderAlert.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterActionDropdown.test.tsx
- frontend/src/routes/Governance/discovered/details/DiscoveredResources.tsx
- frontend/.storybook/preview.js
- frontend/src/components/ProjectsTable.test.tsx
- frontend/src/routes/Governance/policies/EditPolicy.tsx
- frontend/src/routes/Infrastructure/Automations/AnsibleAutomationsForm.test.tsx
- frontend/src/routes/Governance/overview/PolicyViolationSummary.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPool.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterPools/ClusterPools.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/DetailsForm.test.tsx
- frontend/src/routes/Governance/policies/CreatePolicy.test.tsx
- frontend/src/routes/Home/Overview/OverviewPage.test.tsx
- frontend/src/plugin-extensions/extensions/OverviewTab.ts
- frontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveredClusters.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/UpdateAutomationModal.test.tsx
- frontend/src/routes/Governance/overview/Overview.test.tsx
- frontend/src/routes/Governance/components/AutomationDetailsSidebar.test.tsx
- frontend/src/routes/Applications/Overview.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetails.test.tsx
- frontend/src/routes/Governance/policies/EditPolicyAutomation.test.tsx
- frontend/src/components/ClusterSets/ClusterSetsTable.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ImportCluster/ImportCluster.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/RemoveAutomationModal.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/AddCluster.tsx
- frontend/src/routes/Governance/policy-sets/PolicySets.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetRoleAssignmentsPage.test.tsx
- frontend/packages/react-form-wizard/wizards/Inputs/InputsWizard.tsx
- frontend/src/routes/Applications/Overview.test.tsx
- frontend/src/routes/Infrastructure/Automations/AnsibleAutomations.tsx
- frontend/src/routes/Governance/overview/ClusterPolicySummarySidebar.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateClusterCatalog.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/cim/AIClusterDetails.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/UpdateAutomationModal.tsx
- frontend/src/components/ProjectsTable.tsx
- frontend/packages/react-form-wizard/wizards/common/utils.ts
- frontend/src/routes/Applications/components/ToggleSelector.tsx
- frontend/src/routes/Infrastructure/InfraEnvironments/InfraEnvForm.test.tsx
- frontend/plugins/acm/console-plugin-metadata.ts
- frontend/src/routes/Infrastructure/Clusters/RoleAssignmentsPage.tsx
- frontend/src/routes/Governance/policy-sets/PolicySets.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClustersPage.tsx
- frontend/src/routes/Governance/Governance.tsx
- frontend/src/routes/Credentials/CredentialsPage.test.tsx
- frontend/src/routes/Governance/discovered/details/DiscoveredByCluster.test.tsx
- frontend/src/routes/Home/Overview/components/SavedSearchesCard.tsx
- frontend/src/components/TemplateSummaryModal.tsx
- frontend/src/routes/Governance/discovered/DiscoveredPolicies.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPoolPage.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/utils.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateDiscoverHost.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/Placements.tsx
- frontend/src/routes/Applications/AdvancedConfiguration.test.tsx
- frontend/src/routes/Home/Welcome/Welcome.tsx
- frontend/src/routes/Applications/CreateArgoApplication/CreatePullApplicationSet.test.tsx
- frontend/src/routes/Governance/policy-sets/components/PolicySetCard.test.tsx
- frontend/src/routes/Applications/CreateArgoApplication/EditArgoApplicationSet.tsx
- frontend/packages/react-form-wizard/wizards/AppWizard/AppExample.tsx
- frontend/src/routes/Governance/policy-sets/components/PolicySetCard.tsx
- frontend/src/components/AutomationProviderHint.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterDestroy.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/Warning.tsx
- frontend/src/routes/Applications/CreateArgoApplication/CreatePushApplicationSet.tsx
- frontend/src/routes/Infrastructure/InfraEnvironments/Details/InfraEnvironmentDetailsPage.test.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyDetailsPage.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ManagedClusters.tsx
- frontend/src/routes/Infrastructure/Clusters/RoleAssignmentsPage.test.tsx
- frontend/src/components/RBACResourceYaml.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetClusters/ClusterSetClusters.tsx
- frontend/src/routes/Governance/policies/CreatePolicyAutomation.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/BatchUpgradeModal.test.tsx
- frontend/plugins/mce/console-plugin-metadata.ts
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetRoleAssignments/ClusterSetRoleAssignments.tsx
- frontend/packages/react-form-wizard/wizards/Cluster/ClusterForm.tsx
- frontend/src/NavigationPath.tsx
- frontend/src/routes/Governance/policies/CreatePolicySubmit.test.tsx
- frontend/packages/react-form-wizard/wizards/ROSA/RosaExample.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterPage.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusSummaryCount.test.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/PlacementDetails/PlacementOverview/PlacementOverview.tsx
- frontend/src/routes/Applications/CreateSubscriptionApplication/SubscriptionApplication.tsx
- frontend/packages/react-form-wizard/wizards/Application/ApplicationExample.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetDetailsPage.tsx
- frontend/src/routes/Governance/discovered/details/common.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterNodes/ClusterNodes.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/cim/EditAICluster.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterActionDropdown.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetManageResources/ClusterSetManageResources.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/CreateCluster.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateCluster/components/assisted-installer/hypershift/HypershiftAWSCLI.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/DistributionField.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPoolCatalog.test.tsx
- frontend/packages/react-form-wizard/wizards/Demo.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/ClusterDestroy.test.tsx
- frontend/src/routes/Applications/components/TimeWindowLabels.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterPools/ClusterPools.tsx
- frontend/src/routes/Governance/components/PolicyActionDropdown.tsx
- frontend/packages/react-form-wizard/wizards/Home/HomeWizard.tsx
- frontend/src/routes/Home/Overview/Overview.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterOverview/ClusterOverview.tsx
- frontend/src/routes/Applications/ApplicationDetails/ApplicationDetails/ApplicationDetails.test.tsx
- frontend/src/routes/Infrastructure/Clusters/Placements/CreatePlacement/CreatePlacement.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ClusterDetails/ClusterMachinePools/ClusterMachinePools.test.tsx
- frontend/src/plugin-extensions/acmResourceRoutes.test.ts
- frontend/src/routes/Governance/policies/Policies.tsx
- frontend/src/routes/Governance/components/ViewDiffApiCall.test.tsx
- frontend/packages/react-form-wizard/wizards/Credentials/CredentialsExample.tsx
- frontend/src/routes/Infrastructure/Automations/AnsibleAutomations.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterPools/CreateClusterPool/CreateClusterPool.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/CreateClusterCatalog/CreateDiscoverHost.test.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyDetailsResults.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/cim/EditAICluster.test.tsx
- frontend/src/routes/Infrastructure/Clusters/ClustersPage.test.tsx
- frontend/packages/react-form-wizard/wizards/PolicyAutomation/PolicyAutomationExamples.tsx
- frontend/packages/react-form-wizard/wizards/Hypershift/AmazonHypershiftWizard.tsx
- frontend/src/routes/Governance/discovered/details/DiscoveredResources.test.tsx
- frontend/src/routes/Applications/ApplicationDetails/ApplicationDetails/ApplicationDetails.tsx
- frontend/src/plugin-extensions/extensions/listColumnExtension.ts
- frontend/src/routes/Governance/policy-sets/EditPolicySet.test.tsx
- frontend/packages/react-form-wizard/wizards/Ansible/AnsibleExample.tsx
- frontend/src/routes/Applications/components/DeleteResourceModal.test.tsx
- frontend/packages/multicluster-sdk/src/components/FleetResourceLink.test.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyTemplateDetail/PolicyTemplateDetailsPage.test.tsx
- frontend/src/components/LostChanges.test.tsx
- frontend/src/routes/Infrastructure/Clusters/Clusters.tsx
- frontend/src/lib/SharedContext.ts
- frontend/packages/react-form-wizard/wizards/Argo/ArgoExamples.tsx
- frontend/src/components/OperatorAlert.test.tsx
- frontend/src/routes/Governance/components/AutomationDetailsSidebar.tsx
- frontend/packages/multicluster-sdk/src/extensions/resource.ts
- frontend/src/components/PluginContextProvider.tsx
- frontend/packages/react-form-wizard/wizards/Placement/PlacementExamples.tsx
- frontend/src/components/KubevirtProviderAlert.test.tsx
- frontend/package.json
- frontend/packages/react-form-wizard/package.json
- frontend/packages/react-form-wizard/wizards/PolicySet/PolicySetExamples.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/components/StatusSummaryCount.tsx
- frontend/src/routes/Infrastructure/Clusters/ClusterSets/ClusterSetDetails/ClusterSetRoleAssignments/ClusterSetRoleAssignments.test.tsx
- frontend/src/routes/Credentials/CredentialsForm.tsx
- frontend/src/routes/Infrastructure/Clusters/DiscoveredClusters/DiscoveredClusters.tsx
- frontend/src/routes/Infrastructure/Clusters/ManagedClusters/ImportCluster/ImportCluster.tsx
- frontend/packages/react-form-wizard/wizards/Policy/PolicyExamples.tsx
- frontend/packages/react-form-wizard/wizards/Cluster/Provider.tsx
- frontend/src/routes/Governance/policies/policy-details/PolicyDetailsOverview.tsx
|
|
Obsolete |



📝 Summary
Ticket Summary (Title):
Install dynamic plugin SDK 4.22 and set minimum OCP version
Ticket Link:
https://redhat.atlassian.net/browse/ACM-33544
Type of Change:
✅ Checklist
General
ACM-12340 Fix bug with...)🗒️ Notes for Reviewers
Summary by CodeRabbit
New Features
Bug Fixes
Refactor