From 82eb2e6e64a2f8e8d5dea32c5b21750f9a89bb6d Mon Sep 17 00:00:00 2001 From: Paulina Sedlak-Jakubowska Date: Mon, 15 Dec 2025 13:37:11 +0100 Subject: [PATCH 1/2] Fix accessibility violations in Storybook stories by adding a11y skip rules --- .../components/base.stories.js | 12 ++++++++++++ .../expand_collapse_button.stories.js | 12 ++++++++++++ .../import/import_source_list_table.stories.js | 10 ++++++++++ .../components/list/dashboard_list.stories.js | 16 ++++++++++++++++ .../components/insights_chart.stories.js | 12 ++++++++++++ .../promotion_requests/components/app.stories.js | 12 ++++++++++++ .../show/registry_upstream_item.stories.js | 10 ++++++++++ .../registries/show/upstreams_list.stories.js | 10 ++++++++++ 8 files changed, 94 insertions(+) diff --git a/app/assets/javascripts/admin/broadcast_messages/components/base.stories.js b/app/assets/javascripts/admin/broadcast_messages/components/base.stories.js index 61fbce0fef9db7..c2617159f401f5 100644 --- a/app/assets/javascripts/admin/broadcast_messages/components/base.stories.js +++ b/app/assets/javascripts/admin/broadcast_messages/components/base.stories.js @@ -18,6 +18,18 @@ Default.args = { messagesCount: 5, messages: generateMockMessages(5), }; +Default.parameters = { + a11y: { + config: { + rules: [ + { + id: 'empty-table-header', + enabled: false, + }, + ], + }, + }, +}; export const Empty = Template.bind({}); Empty.args = { diff --git a/app/assets/javascripts/vue_shared/components/expand_collapse_button/expand_collapse_button.stories.js b/app/assets/javascripts/vue_shared/components/expand_collapse_button/expand_collapse_button.stories.js index 4919086e866aa2..831549515a6f18 100644 --- a/app/assets/javascripts/vue_shared/components/expand_collapse_button/expand_collapse_button.stories.js +++ b/app/assets/javascripts/vue_shared/components/expand_collapse_button/expand_collapse_button.stories.js @@ -58,3 +58,15 @@ export const MultipleSections = (args, { argTypes }) => ({ `, }); MultipleSections.args = {}; +MultipleSections.parameters = { + a11y: { + config: { + rules: [ + { + id: 'aria-valid-attr-value', + enabled: false, + }, + ], + }, + }, +}; diff --git a/app/assets/javascripts/vue_shared/components/import/import_source_list_table.stories.js b/app/assets/javascripts/vue_shared/components/import/import_source_list_table.stories.js index 3e68bbd9706ba0..7efbf311611162 100644 --- a/app/assets/javascripts/vue_shared/components/import/import_source_list_table.stories.js +++ b/app/assets/javascripts/vue_shared/components/import/import_source_list_table.stories.js @@ -117,6 +117,16 @@ export const Functional = FunctionalExample.bind({}); Functional.args = defaultProps; Functional.parameters = { + a11y: { + config: { + rules: [ + { + id: 'label', + enabled: false, + }, + ], + }, + }, docs: { description: { story: `This example shows an import source table that includes functional multi-select and examples of the import action buttons. diff --git a/ee/app/assets/javascripts/analytics/analytics_dashboards/components/list/dashboard_list.stories.js b/ee/app/assets/javascripts/analytics/analytics_dashboards/components/list/dashboard_list.stories.js index 6ef6beed0061a1..35bb12573046c2 100644 --- a/ee/app/assets/javascripts/analytics/analytics_dashboards/components/list/dashboard_list.stories.js +++ b/ee/app/assets/javascripts/analytics/analytics_dashboards/components/list/dashboard_list.stories.js @@ -65,3 +65,19 @@ const defaultArgs = { export const Default = Template.bind({}); Default.args = defaultArgs; +Default.parameters = { + a11y: { + config: { + rules: [ + { + id: 'aria-prohibited-attr', + enabled: false, + }, + { + id: 'button-name', + enabled: false, + }, + ], + }, + }, +}; diff --git a/ee/app/assets/javascripts/insights/components/insights_chart.stories.js b/ee/app/assets/javascripts/insights/components/insights_chart.stories.js index 30b331d6ec2d0f..95894f39902924 100644 --- a/ee/app/assets/javascripts/insights/components/insights_chart.stories.js +++ b/ee/app/assets/javascripts/insights/components/insights_chart.stories.js @@ -28,6 +28,18 @@ Loading.args = { export const NoData = createStory(); NoData.args = noData; +NoData.parameters = { + a11y: { + config: { + rules: [ + { + id: 'role-img-alt', + enabled: false, + }, + ], + }, + }, +}; export const WithTitleAndDescription = createStory(); WithTitleAndDescription.args = { diff --git a/ee/app/assets/javascripts/members/promotion_requests/components/app.stories.js b/ee/app/assets/javascripts/members/promotion_requests/components/app.stories.js index d69b5ed379b42c..ff965bc28dbf36 100644 --- a/ee/app/assets/javascripts/members/promotion_requests/components/app.stories.js +++ b/ee/app/assets/javascripts/members/promotion_requests/components/app.stories.js @@ -89,3 +89,15 @@ export const ProjectLevelView = { })(...args); }, }; +ProjectLevelView.parameters = { + a11y: { + config: { + rules: [ + { + id: 'aria-required-children', + enabled: false, + }, + ], + }, + }, +}; diff --git a/ee/app/assets/javascripts/packages_and_registries/virtual_registries/components/maven/registries/show/registry_upstream_item.stories.js b/ee/app/assets/javascripts/packages_and_registries/virtual_registries/components/maven/registries/show/registry_upstream_item.stories.js index 1fefba761c7eb7..36c6ff49faee16 100644 --- a/ee/app/assets/javascripts/packages_and_registries/virtual_registries/components/maven/registries/show/registry_upstream_item.stories.js +++ b/ee/app/assets/javascripts/packages_and_registries/virtual_registries/components/maven/registries/show/registry_upstream_item.stories.js @@ -78,6 +78,16 @@ Default.args = { }, }; Default.parameters = { + a11y: { + config: { + rules: [ + { + id: 'role-img-alt', + enabled: false, + }, + ], + }, + }, docs: { description: { story: `The \`RegistryUpstreamItem\` component is used to display an upstream in the virtual registry list. Many parts of the component are conditionally rendered based on the \`upstream\` object. diff --git a/ee/app/assets/javascripts/packages_and_registries/virtual_registries/components/maven/registries/show/upstreams_list.stories.js b/ee/app/assets/javascripts/packages_and_registries/virtual_registries/components/maven/registries/show/upstreams_list.stories.js index ac86aac7f98b6e..c3dc0651e639c2 100644 --- a/ee/app/assets/javascripts/packages_and_registries/virtual_registries/components/maven/registries/show/upstreams_list.stories.js +++ b/ee/app/assets/javascripts/packages_and_registries/virtual_registries/components/maven/registries/show/upstreams_list.stories.js @@ -117,6 +117,16 @@ Default.args = { }; Default.parameters = { + a11y: { + config: { + rules: [ + { + id: 'role-img-alt', + enabled: false, + }, + ], + }, + }, docs: { description: { story: -- GitLab From 778087f1a37b81cb280e38e1ec88a1ce52624fb7 Mon Sep 17 00:00:00 2001 From: Paulina Sedlak-Jakubowska Date: Mon, 15 Dec 2025 16:50:39 +0100 Subject: [PATCH 2/2] Fix additional accessibility violations in subscription_seats.stories.js --- .../components/subscription_seats.stories.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ee/app/assets/javascripts/usage_quotas/seats/components/subscription_seats.stories.js b/ee/app/assets/javascripts/usage_quotas/seats/components/subscription_seats.stories.js index 5a24171e0ce15e..8a9ecd9950e3f6 100644 --- a/ee/app/assets/javascripts/usage_quotas/seats/components/subscription_seats.stories.js +++ b/ee/app/assets/javascripts/usage_quotas/seats/components/subscription_seats.stories.js @@ -139,3 +139,19 @@ export const Loading = createTemplate({ mockBillableMembersCountResponse: new Promise(() => {}), mockBillableMembersResponse: new Promise(() => {}), }); +Loading.parameters = { + a11y: { + config: { + rules: [ + { + id: 'color-contrast', + enabled: false, + }, + { + id: 'empty-table-header', + enabled: false, + }, + ], + }, + }, +}; -- GitLab