Auto-QA [Accessibility]: Missing ARIA Labels
Detected: 2026-06-27T02:10:07.298Z | Focus: Accessibility | Commit: f1740da | Run: View
Findings
### Buttons possibly missing ARIA labels
src/lib/modals/UtilitySections.tsx:245: <button
src/lib/modals/ModalRuntime.tsx:374: <button
src/lib/modals/KeyValueSection.tsx:134: <button
src/lib/modals/BaseModal.tsx:238: <button
src/lib/modals/BaseModal.tsx:282: <button
src/lib/modals/BaseModal.tsx:395: <button
src/lib/modals/tests/ModalSections-coverage.test.tsx:40: <button onClick={onClick as () => void} title={title as string} {...props}>
src/lib/modals/tests/ModalSections.test.tsx:27: <button onClick={onClick as () => void} {...props}>
src/lib/modals/tests/ModalRuntime-coverage.test.tsx:39: {showBack && onBack && Back}
src/lib/modals/tests/ModalRuntime-coverage.test.tsx:40: {onClose && Close}
src/lib/modals/tests/ModalRuntime-coverage.test.tsx:61: <button
src/lib/modals/tests/ConfirmDialog.test.tsx:23: <button onClick={onClick as () => void} disabled={disabled as boolean} {...props}>
src/lib/unified/dashboard/UnifiedDashboard.tsx:490: <button
src/lib/unified/dashboard/UnifiedDashboard.tsx:526: <button
src/lib/unified/dashboard/DashboardGrid.tsx:277: <button
src/lib/unified/dashboard/tests/UnifiedDashboard.test.tsx:28: cancel-confirm
src/lib/unified/dashboard/tests/UnifiedDashboard.test.tsx:29: {confirmLabel || 'confirm'}
src/lib/unified/demo/tests/UnifiedDemo.test.tsx:63: Toggle
src/lib/unified/demo/tests/UnifiedDemo.test.tsx:64: RegenAll
src/lib/unified/demo/tests/UnifiedDemo.test.tsx:65: <button data-testid="regen" onClick={() => ctx.regenerate('test-id')}>Regen
### Icon-only buttons without ARIA labels
src/lib/dashboards/tests/DashboardComponents.test.tsx:99: render(<DashboardHeader title="T" icon="Server" extra={{TEST_STRINGS.dashboard.custom}} />)
src/components/feedback/FeedbackModal.tsx:357: // Use closest() so child elements (e.g. / inside a )
src/components/drilldown/views/PodDrillDown.tsx:242:
{TABS.map(tab => { const Icon = tab.icon; return <button type="button" key={tab.id} id={tab-${tab.id}} role="tab" aria-controls={panel-${tab.id}} aria-selected={activeTab === tab.id} tabIndex={activeTab === tab.id ? 0 : -1} onClick={() => setActiveTab(tab.id)} onKeyDown={handleKeyDown} className={cn('flex items-center gap-2 border-b-2 px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background', TOUCH_TARGET_SIZE_CLASS, activeTab === tab.id ? 'border-primary text-primary' : 'border-transparent text-muted-foreground hover:border-border hover:text-foreground')}>{tab.label}
})}
### Images without alt text
src/components/mission-control/svg/ProjectNode.tsx:269: <img
src/components/mission-control/PayloadCard.tsx:102: <img
src/components/marketplace/Marketplace.tsx:200: <img
src/components/marketplace/Marketplace.tsx:415: <img
src/components/marketplace/MarketplaceThumbnail.tsx:122: <img
src/components/layout/UserProfileDropdown.tsx:175: <img
src/components/layout/UserProfileDropdown.tsx:213: <img
src/components/layout/navbar/LearnDropdown.tsx:212: <img
src/components/ui/CloudProviderIcon.tsx:216: <img
src/components/ui/LogoWithStar.tsx:26: <img
Suggested Improvements
- Add
aria-label to icon-only buttons
- Add
alt text to all images
- Use semantic HTML elements where possible
- Test with a screen reader to verify
PR Guidance: Keep PRs small and focused. Smaller PRs have higher acceptance rates.
This issue was automatically created by the Auto-QA workflow during Accessibility focus day.
Auto-QA [Accessibility]: Missing ARIA Labels
Detected: 2026-06-27T02:10:07.298Z | Focus: Accessibility | Commit:
f1740da| Run: ViewFindings
src/lib/modals/UtilitySections.tsx:245: <button
src/lib/modals/ModalRuntime.tsx:374: <button
src/lib/modals/KeyValueSection.tsx:134: <button
src/lib/modals/BaseModal.tsx:238: <button
src/lib/modals/BaseModal.tsx:282: <button
src/lib/modals/BaseModal.tsx:395: <button
src/lib/modals/tests/ModalSections-coverage.test.tsx:40: <button onClick={onClick as () => void} title={title as string} {...props}>
src/lib/modals/tests/ModalSections.test.tsx:27: <button onClick={onClick as () => void} {...props}>
src/lib/modals/tests/ModalRuntime-coverage.test.tsx:39: {showBack && onBack && Back}
src/lib/modals/tests/ModalRuntime-coverage.test.tsx:40: {onClose && Close}
src/lib/modals/tests/ModalRuntime-coverage.test.tsx:61: <button
src/lib/modals/tests/ConfirmDialog.test.tsx:23: <button onClick={onClick as () => void} disabled={disabled as boolean} {...props}>
src/lib/unified/dashboard/UnifiedDashboard.tsx:490: <button
src/lib/unified/dashboard/UnifiedDashboard.tsx:526: <button
src/lib/unified/dashboard/DashboardGrid.tsx:277: <button
src/lib/unified/dashboard/tests/UnifiedDashboard.test.tsx:28: cancel-confirm
src/lib/unified/dashboard/tests/UnifiedDashboard.test.tsx:29: {confirmLabel || 'confirm'}
src/lib/unified/demo/tests/UnifiedDemo.test.tsx:63: Toggle
src/lib/unified/demo/tests/UnifiedDemo.test.tsx:64: RegenAll
src/lib/unified/demo/tests/UnifiedDemo.test.tsx:65: <button data-testid="regen" onClick={() => ctx.regenerate('test-id')}>Regen
src/lib/dashboards/tests/DashboardComponents.test.tsx:99: render(<DashboardHeader title="T" icon="Server" extra={{TEST_STRINGS.dashboard.custom}} />)
src/components/feedback/FeedbackModal.tsx:357: // Use closest() so child elements (e.g. / inside a )
src/components/drilldown/views/PodDrillDown.tsx:242:
tab-${tab.id}} role="tab" aria-controls={panel-${tab.id}} aria-selected={activeTab === tab.id} tabIndex={activeTab === tab.id ? 0 : -1} onClick={() => setActiveTab(tab.id)} onKeyDown={handleKeyDown} className={cn('flex items-center gap-2 border-b-2 px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background', TOUCH_TARGET_SIZE_CLASS, activeTab === tab.id ? 'border-primary text-primary' : 'border-transparent text-muted-foreground hover:border-border hover:text-foreground')}>{tab.label}src/components/mission-control/svg/ProjectNode.tsx:269: <img
src/components/mission-control/PayloadCard.tsx:102: <img
src/components/marketplace/Marketplace.tsx:200: <img
src/components/marketplace/Marketplace.tsx:415: <img
src/components/marketplace/MarketplaceThumbnail.tsx:122: <img
src/components/layout/UserProfileDropdown.tsx:175: <img
src/components/layout/UserProfileDropdown.tsx:213: <img
src/components/layout/navbar/LearnDropdown.tsx:212: <img
src/components/ui/CloudProviderIcon.tsx:216: <img
src/components/ui/LogoWithStar.tsx:26: <img
Suggested Improvements
aria-labelto icon-only buttonsalttext to all imagesThis issue was automatically created by the Auto-QA workflow during Accessibility focus day.