Skip to content

CreateAKSProject: Fix a11y issues, separate presentation, and add tests + stories + docs#357

Merged
illume merged 1 commit into
Azure:mainfrom
illume:create-project
Mar 11, 2026
Merged

CreateAKSProject: Fix a11y issues, separate presentation, and add tests + stories + docs#357
illume merged 1 commit into
Azure:mainfrom
illume:create-project

Conversation

@illume
Copy link
Copy Markdown
Collaborator

@illume illume commented Mar 3, 2026

Description

Fixes accessibility violations in the Create AKS Project wizard (CreateAKSProjectPure), separates logic into to hooks and adds new Pure presentation components, also adds tests + stories + docs.

Fixes #300

Fixes #305

Fixes #94

Fixes #310

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Performance improvement
  • Code refactoring
  • CI/CD changes
  • Other: ____

Related Issues

Changes Made

  • CreateAKSProjectPure a11y fixes:
    • inert on CardContent while loading — blocks keyboard focus from reaching controls hidden under the overlay (fixes axe aria-hidden-focus; aria-hidden alone does not block focus)
    • aria-busy + aria-describedby on Card; CircularProgress with aria-label; status text with aria-live="polite"
    • Error dialog: role="alertdialog" on PaperProps (fixes axe aria-dialog-name — setting it on the Dialog root goes to the wrong element); autoFocus on Cancel; tabIndex={0} on scrollable DialogContent (fixes axe scrollable-region-focusable)
    • Success dialog: autoFocus on Application name input; valid heading hierarchy; decorative icons marked aria-hidden="true"
    • Breadcrumb: role="navigation" + aria-label; role="button" + tabIndex={0} + keyboard handler on step items; aria-current="step" on active step
    • Next button: aria-busy while Azure resources load; spinner inside button has aria-hidden="true"
  • Storybook stories: for all states: basics, loading overlay, error (short/long/scrollable), validation, success (empty/filled), next-loading
  • BasicsStep: Replace bare with Tooltip > IconButton > Icon(aria-hidden) + inputRef for focus transfer. Add Tooltip to MUI imports; add projectNameInputRef ref. Add interactive tests.

A11y Fixes (each with MDN/MUI/Deque documentation link in code comment):

  • Breadcrumb.tsx: Added '&:focus-visible' outline using theme.palette.primary.main (not the sx shorthand 'primary.main', which MUI does not palette-transform for outlineColor), borderRadius: 1, and aria-hidden="true" on each step <Icon>
  • CreateAKSProjectPure.tsx: Added role="alert" on error Typography; role="status" on success description Typography
  • ResourceCard.tsx: Added aria-hidden="true" on decorative title Icon
  • ComputeStep.tsx: Added aria-hidden="true" on all startAdornment Icons (arrow-up/down)
  • ReviewStep.tsx: Added aria-hidden="true" on all 6 decorative section Icons; tabIndex={0} + role="region" + aria-label on scrollable assignees Box
  • FormField.tsx: Added FormHelperTextProps with aria-disabled when disabled

Test Fixes:

  • CreateAKSProjectPure.test.tsx: Fixed @iconify/react mock to pass through all props via {...props} (matching the BasicsStep.test.tsx pattern) instead of hard-coding aria-hidden="true", so icon a11y assertions are not false-positives. Renamed misleading test from "visible :focus-visible outline" to "keyboard-reachable (tabIndex is not -1)" to match what it actually asserts. Scoped breadcrumb icon aria-hidden assertion to the navigation landmark element.
  • CreateAKSProjectPure.guidepup.test.tsx: Same @iconify/react mock fix — passes through all props instead of defaulting aria-hidden to 'true'.

Stories Added (37+ stories total across 9 files):

  • CreateAKSProjectPure.stories.tsx — 9 stories: BasicsStepDefault, NextButtonLoading, ValidationError, LoadingOverlay, ErrorOverlay, ErrorOverlayScrollable, LongErrorMessage, SuccessDialog, SuccessDialogWithAppName
  • NetworkingStep.stories.tsx — 4 stories: Default, DenyAll, AllowAll, Loading
  • ComputeStep.stories.tsx — 4 stories: Default, WithFieldErrors, CpuRequestError, Loading
  • ReviewStep.stories.tsx — 5 stories: FullConfiguration, NoAssignees, NoDescription, UnresolvedResources, SingleAssignee
  • AccessStep.stories.tsx — 5 stories: Default, MultipleAssignees, NoAssignees, InvalidEmail, Loading
  • Breadcrumb.stories.tsx — 3 stories: FirstStep, MiddleStep, LastStep
  • FormField.stories.tsx — 5 stories: Default, WithError, NumberField, Disabled, Multiline
  • SearchableSelect.stories.tsx — 5 stories: Default, WithSelection, Loading, WithError, Disabled
  • ValidationAlert.stories.tsx — 6 stories: Error, Warning, Success, Info, WithAction, Hidden

Guidepup Virtual Screen Reader Tests (~150 tests):

  • CreateAKSProjectPure: breadcrumb nav, step buttons, aria-current, hidden icons, Cancel/Next, validation disabled, loading busy, overlay progressbar, alertdialog + role=alert, success dialog + role=status, step navigation
  • NetworkingStep: heading, intro text, Ingress/Egress comboboxes, current values, disabled state
  • ComputeStep: CPU/Memory headings, spinbutton values + helper text, invalid/not-invalid state, error isolation, disabled loading
  • ReviewStep: h3 sections, resolved names, description fallback, assignee count, N/A degradation
  • AccessStep: empty state, invalid email, valid email, loading state
  • Breadcrumb: nav landmark, aria-current across step positions
  • FormField: textbox/spinbutton roles, invalid state, disabled state, error helper text
  • SearchableSelect: combobox role, selected value announcement
  • ValidationAlert: alert role with message content, hidden renders nothing

Note: there is a code comment for each a11y aria fix.

Testing

  • Unit tests pass
  • Integration tests pass
  • Manual testing completed
  • Performance tested (if applicable)
  • Accessibility tested (if applicable)

Manual A11y Testing Steps

1. Keyboard — wizard navigation

  1. In the app, open New Project.
  2. Press Tab through the page. Confirm focus visits:
    Cancel → (step form fields) → Next — in that order, with nothing skipped or trapped.
  3. Navigate to step 2 or later. Confirm Back appears before the step content and Next appears after.
  4. On the last step, confirm the Create Project button is reachable and activatable by pressing Enter.

2. Keyboard — breadcrumb navigation

  1. On any wizard step, press Tab onto the breadcrumb items ("Basics", "Networking Policies", etc.).
  2. Press Enter or Space on a breadcrumb item — confirm it jumps directly to that step.
  3. Confirm each breadcrumb item shows a visible focus ring (not just a cursor change).

3. Loading overlay (inert + aria-busy)

  1. Start project creation (last step → Create Project).
  2. While the loading overlay is visible:
    • Press Tab — confirm focus cannot reach any button behind the overlay (inert blocks it).
    • Confirm the page announces "Creating Project" to a screen reader (or inspect: aria-live="polite" on the status text).
    • Inspect the Card element — confirm aria-busy="true" is set.

4. Error alertdialog (role="alertdialog" + autoFocus + scrollable region)

  1. Trigger a project creation failure (or use the Error Overlay Storybook story).
  2. Confirm:
    • Focus jumps immediately to the Cancel button when the dialog opens (no extra Tab needed).
    • Tab stays inside the dialog only (focus trap).
    • If the error is long: pressing Tab once moves focus to the scrollable error region; ↑ / ↓ arrow keys scroll it.
    • Escape or clicking Cancel DOES NOT close the dialog.
    • Inspect the dialog Paper element: confirm role="alertdialog", aria-labelledby, and aria-describedby are all set.

5. Success dialog (autoFocus + focus trap)

  1. Complete a project successfully (or use the Success Dialog Storybook story).
  2. Confirm:
    • Focus jumps immediately to the "Application name" text field when the dialog opens.
    • Tab cycles: Application name input → Cancel → Create Application → (back to input).
    • Escape DOES NOT close the dialog.
    • Inspect: aria-labelledby and aria-describedby point to the title and description elements.

6. Decorative icons (aria-hidden)

  1. Open DevTools → Accessibility tree.
  2. Confirm the check-circle (success) and alert-circle (error) icons do not appear in the accessibility tree — they have aria-hidden="true".

7. Repro Steps from "Unable to scroll failure / error message using keyboard"

To reproduce:

  • Launch the AKS desktop application and login with your v-id.
  • TAB to "Home" page.
  • Tab to "Projects" tab and press ENTER. Verify all the elements of "Projects" tab.
  • TAB to "Create Project" button and press ENTER. "Create a Project" dialog will open. Verify the dialog.
  • TAB to "AKS Managed Project" button and press ENTER.
  • "New Project" page will open.
  • Fill All the required information and TAB to "Create Project" button then press ENTER.
  • Tab to Failure message
  • Observe that Unable to scroll failure / error message using keyboard

8. Repro Steps from "Narrator/NVDA does not announce the failure message after submitting the Create Project request, when the operation fails"

To reproduce:

  • Start Narrator/NVDA.
  • Launch the AKS desktop application and login with your v-id.
  • TAB to "Home" page.
  • Tab to "Projects" tab and press ENTER. Verify all the elements of "Projects" tab.
  • TAB to "Create Project" button and press ENTER. "Create a Project" dialog will open. Verify the dialog.
  • TAB to "AKS Managed Project" button and press ENTER.
  • "New Project" page will open. Fill all required fields in the form.
  • TAB to "review" tab and TAB to "Create Project" button then press ENTER.
  • Observe that Narrator/NVDA does not announce the failure message after submitting the Create Project request, when the operation fails.

9. Repro Steps from "Edit Button is not functioning on the Create New page".

Note: edit button was removed. The edit icon is aria-hidden now.


10. Breadcrumb focus ring (keyboard navigation)

  1. Open the Create AKS Project wizard
  2. Press Tab to move focus to the breadcrumb step buttons (Basics, Compute, Networking, Access, Review)
  3. Expected: Each step shows a visible blue outline ring when focused via keyboard
  4. Press Enter or Space on a step — it should navigate to that step

11. Error dialog screen reader announcement

  1. Trigger an error in the wizard (e.g., submit with invalid configuration that causes a server error)
  2. Expected with screen reader (NVDA/VoiceOver): The error message is announced immediately because it has role="alert" (assertive live region)
  3. Expected in accessibility tree: The error text element has role="alert"

12. Success dialog screen reader announcement

  1. Complete the wizard successfully to trigger the success dialog
  2. Expected with screen reader: The success message is announced politely because it has role="status" (polite live region)
  3. Expected in accessibility tree: The success description has role="status"

13. Decorative icons hidden from screen readers

  1. Open any step of the wizard with a screen reader active
  2. Navigate through the breadcrumb, ResourceCard, ComputeStep number fields, and ReviewStep sections
  3. Expected: Decorative icons (step numbers, section header icons, input adornment arrows) are NOT announced — they have aria-hidden="true"
  4. Verify in DevTools: Inspect any decorative <svg> or icon <span> and confirm aria-hidden="true" is present

14. ReviewStep scrollable assignees region

  1. Navigate to the Review step with multiple assignees (enough to trigger scrolling)
  2. Press Tab to focus the assignees list area
  3. Expected: The scrollable area receives focus and is announced as "Assignees, region" by screen readers
  4. Use Arrow Down/Up to scroll within the focused region

15. Disabled field helper text (no false contrast failure)**

  1. Open ComputeStep in the Loading state (fields are disabled)
  2. Run axe DevTools or the browser accessibility audit
  3. Expected: No color-contrast violation on the disabled helper text — the aria-disabled attribute tells axe to skip the contrast check per WCAG 1.4.3 inactive UI exemption

Screenshots/Videos

Story Screenshot
Docs page docs
Basics Step Default basics
Loading Overlay loading
Error Overlay error
Long Error Message long-error
Error Overlay Scrollable scrollable
Validation Error validation
Success Dialog success
Success Dialog with App Name success-app
Next Button Loading next-loading

CreateAKSProjectPure (main wizard)

Basics Step (Default) Loading Overlay
Basics Step Loading Overlay
Error Overlay (role="alert") Success Dialog (role="status")
Error Overlay Success Dialog

Step Components

NetworkingStep ComputeStep
NetworkingStep ComputeStep
ReviewStep (Full Configuration) AccessStep (Default)
ReviewStep AccessStep Default
AccessStep (Multiple Assignees) Breadcrumb (First Step)
AccessStep Multiple Breadcrumb

Shared Components

FormField SearchableSelect ValidationAlert (Error)
FormField SearchableSelect ValidationAlert

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published

Breaking Changes

None.

Performance Impact

  • No performance impact

Documentation Updates

  • README.md updated
  • API documentation updated
  • Code comments updated
  • User guide updated
  • No documentation updates needed

@illume illume force-pushed the create-project branch 2 times, most recently from fb26003 to 9ef93be Compare March 4, 2026 10:38
@illume illume added bug Something isn't working p0 Highest priority p1 priority a11y a11y related issues labels Mar 4, 2026
@illume illume changed the title WIP: CreateAKSProject CreateAKSProject: Fix accessibility violations in Create AKS Project wizard, separate presentation, and add tests + stories Mar 4, 2026
@illume illume changed the title CreateAKSProject: Fix accessibility violations in Create AKS Project wizard, separate presentation, and add tests + stories CreateAKSProject: Fix a11y issues, separate presentation, and add tests + stories Mar 4, 2026
@illume illume changed the title CreateAKSProject: Fix a11y issues, separate presentation, and add tests + stories CreateAKSProject: Fix a11y issues, separate presentation, and add tests + stories + docs Mar 4, 2026
@illume illume added the quality label Mar 4, 2026
@illume illume marked this pull request as ready for review March 4, 2026 12:05
Copilot AI review requested due to automatic review settings March 4, 2026 12:05
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Refactors the Create AKS Project wizard into a pure presentational component + stateful hook, while addressing multiple accessibility violations and adding Storybook stories and unit tests.

Changes:

  • Introduces useCreateAKSProjectWizard to centralize wizard state, side-effects, and submission flow.
  • Adds CreateAKSProjectPure (and stories/tests) to separate presentation from logic and improve a11y.
  • Updates existing components/tests to match new ARIA patterns (e.g., role="status", aria-hidden on spinners).

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
plugins/aks-desktop/src/components/CreateAKSProject/hooks/useNamespaceCheck.ts Adds gated debug logging for namespace checks.
plugins/aks-desktop/src/components/CreateAKSProject/hooks/useCreateAKSProjectWizard.ts New hook encapsulating navigation, async creation flow, focus behavior, and CLI checks.
plugins/aks-desktop/src/components/CreateAKSProject/hooks/useCreateAKSProjectWizard.test.ts Adds unit tests for wizard hook basics and submit success/error paths.
plugins/aks-desktop/src/components/CreateAKSProject/components/tests/ClusterConfigurePanel.test.tsx Updates test expectations for new a11y loading announcement behavior.
plugins/aks-desktop/src/components/CreateAKSProject/components/SearchableSelect.tsx Marks loading spinner as decorative for screen readers.
plugins/aks-desktop/src/components/CreateAKSProject/components/ClusterConfigurePanel.tsx Adds role="status" live region + hides decorative spinner; adds aria-busy to button.
plugins/aks-desktop/src/components/CreateAKSProject/components/BasicsStep.tsx Adds aria-busy and hides decorative spinners; gates debug logging.
plugins/aks-desktop/src/components/CreateAKSProject/tests/CreateAKSProjectPure.test.tsx Adds interaction tests driven from Storybook story args.
plugins/aks-desktop/src/components/CreateAKSProject/CreateAKSProjectPure.tsx New pure UI component with loading/error/success overlays and a11y attributes.
plugins/aks-desktop/src/components/CreateAKSProject/CreateAKSProjectPure.stories.tsx Adds stories for default/loading/error/success/validation/loading-next scenarios.
plugins/aks-desktop/src/components/CreateAKSProject/CreateAKSProject.tsx Converts to a thin connector composing the hook + pure component and mapping step content.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copilot AI review requested due to automatic review settings March 4, 2026 12:25
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread plugins/aks-desktop/src/components/CreateAKSProject/components/BasicsStep.tsx Outdated
Copilot AI review requested due to automatic review settings March 4, 2026 12:36
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

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


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copilot AI review requested due to automatic review settings March 4, 2026 12:48
@illume illume requested review from Copilot and removed request for Copilot March 4, 2026 12:51
Comment thread plugins/aks-desktop/src/components/CreateAKSProject/components/BasicsStep.tsx Outdated
@illume illume marked this pull request as draft March 9, 2026 12:47
@illume
Copy link
Copy Markdown
Collaborator Author

illume commented Mar 9, 2026

Thanks. I have some fixes coming.

@illume
Copy link
Copy Markdown
Collaborator Author

illume commented Mar 9, 2026

Fixed some more a11y issues. Some more stories and also guidepup tests were added to help test. Updated PR description.

Tested #300

Keyboard access to error message works
Keyboard access to access section doesn't work

"Keyboard access to access section doesn't work" is fixed

Tested #305

Error message when creating managed namespace works
Error message when deploying application is not read out

"Error message when deploying application is not read out" is fixed.

#310 Edit button

I don't understand why we need a button there? No other text input has a button there. Can we just remove it?

Yeah, I'm open to just removing it and the decoration.
(But to answer your question... my understanding was that it was there like the other decorations... Like for the select/dropdown if you click carrot it starts editing it. The other fix PR just removed it, this just adds the edit button back and makes it a bit more accessible.)

Did you mean remove the button and the decoration? Or you mean remove just the button?


The A11y issues fixed in this round...

  • Breadcrumb role="button" steps had no visible focus ring — keyboard users navigating to any step via Tab+Enter couldn't see which item was focused. Added :focus-visible outline using theme.palette.primary.main and aria-hidden="true" on the decorative step-number icons.
  • Error message silently dropped by screen readersautoFocus on the Cancel button fires before some AT reads aria-describedby content. Added role="alert" to the error Typography so it's asserted as an ARIA live region independent of focus position.
  • Success message not announced — Added role="status" to the success description Typography for polite live-region announcement.
  • Decorative icons announced by screen readers — Added aria-hidden="true" to decorative Icon elements in ResourceCard, ComputeStep adornments, and ReviewStep section headers.
  • Scrollable region not keyboard-accessible — Added tabIndex={0}, role="region", and aria-label to the ReviewStep assignees scrollable Box so it is keyboard-reachable and announced as a named landmark.

@illume
Copy link
Copy Markdown
Collaborator Author

illume commented Mar 9, 2026

Going to fix the CI errors.

Copy link
Copy Markdown
Collaborator Author

@illume illume left a comment

Choose a reason for hiding this comment

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

Cleaned up some warnings/console spam in new tests.

  1. Rebased against main, fixed breadcrumb conflict
  2. Fix Alertdialog so cannot be dismissed by backdrop/Escape
  3. Fix error dialog showed redacted message, only redact in logs
  4. Remove dead !r.skipped condition
  5. Fix inert attribute to not trigger a React 18 runtime warning

Comment thread plugins/aks-desktop/src/components/CreateAKSProject/components/BasicsStep.tsx Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 46 out of 47 changed files in this pull request and generated 1 comment.

Files not reviewed (1)
  • plugins/aks-desktop/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Collaborator

@vyncent-t vyncent-t left a comment

Choose a reason for hiding this comment

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

something I noticed:
3. Loading overlay (inert + aria-busy)

  • narration is announced but very quickly (is cut off before new page loads)

Copy link
Copy Markdown
Collaborator

@vyncent-t vyncent-t left a comment

Choose a reason for hiding this comment

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

fixes are looking good, some more things I noticed

ReviewStep scrollable assignees region

  • cannot get the section phrase to be announced, only the assignee inputs are announced

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 46 out of 47 changed files in this pull request and generated 1 comment.

Files not reviewed (1)
  • plugins/aks-desktop/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@vyncent-t
Copy link
Copy Markdown
Collaborator

fixes are looking good, some more things I noticed

ReviewStep scrollable assignees region

  • cannot get the section phrase to be announced, only the assignee inputs are announced

fixes are looking good, some more things I noticed

ReviewStep scrollable assignees region

  • cannot get the section phrase to be announced, only the assignee inputs are announced

it looks like the whole section is now highlighted while being linked to the assignee input, but it should be fine if it is picked up by NVDA

@illume
Copy link
Copy Markdown
Collaborator Author

illume commented Mar 10, 2026

Thanks @vyncent-t for the testing and for answering my silly questions. haha

@illume
Copy link
Copy Markdown
Collaborator Author

illume commented Mar 10, 2026

I pushed another story state "ReviewStep -> Many assignees" to make it easier to test the scrollable assignee region with keyboard when there's multiple assignees.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

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

Files not reviewed (1)
  • plugins/aks-desktop/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@illume
Copy link
Copy Markdown
Collaborator Author

illume commented Mar 10, 2026

The persistent creation-progress live region uses role="status" even when isCreating is false, and the success dialog description also uses role="status". When the success dialog is open this results in multiple status regions in the accessibility tree, which can confuse screen readers and makes role-based queries ambiguous. Consider keeping the element mounted but only setting role/aria-live while isCreating is true (or drop role="status" and rely on aria-live), so there's never more than one status region at a time.

Pushed a fix for this ^

@illume
Copy link
Copy Markdown
Collaborator Author

illume commented Mar 10, 2026

Rebased against main, fixed conflicts.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 46 out of 47 changed files in this pull request and generated 1 comment.

Files not reviewed (1)
  • plugins/aks-desktop/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@illume
Copy link
Copy Markdown
Collaborator Author

illume commented Mar 10, 2026

Added a test for code-merged-into-main for a bug with the onProgress not being aware it could be aborted.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 46 out of 47 changed files in this pull request and generated 3 comments.

Files not reviewed (1)
  • plugins/aks-desktop/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 46 out of 47 changed files in this pull request and generated 1 comment.

Files not reviewed (1)
  • plugins/aks-desktop/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

…s and stories

- CreateAKSProjectPure a11y fixes:
  - `inert` on `CardContent` while loading — blocks keyboard focus from reaching controls hidden under the overlay (fixes axe `aria-hidden-focus`; `aria-hidden` alone does not block focus)
  - `aria-busy` + `aria-describedby` on Card; `CircularProgress` with `aria-label`; status text with `aria-live="polite"`
  - Error dialog: `role="alertdialog"` on `PaperProps` (fixes axe `aria-dialog-name` — setting it on the Dialog root goes to the wrong element); `autoFocus` on Cancel; `tabIndex={0}` on scrollable `DialogContent` (fixes axe `scrollable-region-focusable`)
  - Success dialog: `autoFocus` on Application name input; valid heading hierarchy; decorative icons marked `aria-hidden="true"`
  - Breadcrumb: `role="navigation"` + `aria-label`; `role="button"` + `tabIndex={0}` + keyboard handler on step items; `aria-current="step"` on active step
  - Next button: `aria-busy` while Azure resources load; spinner inside button has `aria-hidden="true"`
  - BaseStep: fixes for project edit button
- Storybook stories for all states: basics, loading overlay, error (short/long/scrollable), validation, success (empty/filled), next-loading
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

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

Files not reviewed (1)
  • plugins/aks-desktop/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Collaborator

@skoeva skoeva left a comment

Choose a reason for hiding this comment

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

some thoughts at first glance:

Image
  • title should be capitalized
  • no subtitle like on the other pages
  • no back button at the top (page needs backLink prop)
Image
  • why is "create new project" a window and "create new project from yaml" a separate page? maybe these should be aligned better or consolidated somehow

@illume
Copy link
Copy Markdown
Collaborator Author

illume commented Mar 11, 2026

Thanks @skoeva

These ones are in main branch as well... I think probably they should be in a later PR.

@skoeva
Copy link
Copy Markdown
Collaborator

skoeva commented Mar 11, 2026

right, these bugs are not necessarily in scope for this PR - they aren't blocking

@vyncent-t
Copy link
Copy Markdown
Collaborator

vyncent-t commented Mar 11, 2026

Nab nav testing done for each of the options under "Create project" modal

  • "New project" (works)
  • New Project from YAML (works)
  • Use Existing Namespaces (works, but there are some missing translations keys)
  • Create New Namespace (works, but also has some missing translation keys)
  • Create New AKS Managed Namespace (works)

While not functionally broken, the namespace options do have some issues with missing translation keys

Posted screenshot images within the group chat (see those)

Copy link
Copy Markdown
Collaborator

@vyncent-t vyncent-t left a comment

Choose a reason for hiding this comment

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

LGTM

@illume illume mentioned this pull request Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a11y a11y related issues bug Something isn't working p0 Highest priority p1 priority quality

Projects

None yet

5 participants