From da8b8b471b7a587fe09e2f16dbad25a02610774e Mon Sep 17 00:00:00 2001 From: Illya Klymov <xanf@xanf.me> Date: Tue, 25 Oct 2022 23:20:17 +0300 Subject: [PATCH] Integrate bootstrap-vue/bootstrap upgrade With GitLab UI upgrading bootstrap-vue and bootstrap, we need to make a few changes to GitLab's codebase to integrate those upgrades smoothly. --- .../vue_shared/gl_feature_flags_plugin.js | 16 +++++++++------- .../merge_request_table_spec.js.snap | 3 +-- .../board_content_sidebar_spec.js.snap | 2 +- .../filters/policy_source_filter_spec.js | 2 +- .../policies/filters/policy_type_filter_spec.js | 2 +- .../components/__snapshots__/modal_spec.js.snap | 4 ++-- .../__snapshots__/index_spec.js.snap | 4 ++-- .../new_vulnerability/section_details_spec.js | 4 ++-- .../section_identifiers_spec.js | 6 ++++-- .../new_vulnerability/section_name_spec.js | 2 +- .../features/groups/members/sort_members_spec.rb | 2 +- spec/features/projects/members/sorting_spec.rb | 2 +- .../__snapshots__/new_cluster_spec.js.snap | 2 +- .../__snapshots__/toolbar_button_spec.js.snap | 2 +- .../components/group_select_spec.js | 2 +- .../__snapshots__/jira_import_form_spec.js.snap | 6 +++--- .../components/filter_sort/sort_dropdown_spec.js | 2 +- .../components/table/role_dropdown_spec.js | 2 +- .../__snapshots__/packages_list_app_spec.js.snap | 2 -- .../__snapshots__/pypi_installation_spec.js.snap | 10 ++-------- .../pages/__snapshots__/list_spec.js.snap | 2 -- .../mr_widget_auto_merge_enabled_spec.js.snap | 4 ++-- .../__snapshots__/awards_list_spec.js.snap | 2 +- 23 files changed, 39 insertions(+), 46 deletions(-) diff --git a/app/assets/javascripts/vue_shared/gl_feature_flags_plugin.js b/app/assets/javascripts/vue_shared/gl_feature_flags_plugin.js index c12ffaac40ae..79946ebaecd1 100644 --- a/app/assets/javascripts/vue_shared/gl_feature_flags_plugin.js +++ b/app/assets/javascripts/vue_shared/gl_feature_flags_plugin.js @@ -1,12 +1,14 @@ export default (Vue) => { Vue.mixin({ - provide: { - glFeatures: - { - ...window.gon?.features, - // TODO: extract into glLicensedFeatures https://gitlab.com/gitlab-org/gitlab/-/issues/322460 - ...window.gon?.licensed_features, - } || {}, + provide() { + return { + glFeatures: + { + ...window.gon?.features, + // TODO: extract into glLicensedFeatures https://gitlab.com/gitlab-org/gitlab/-/issues/322460 + ...window.gon?.licensed_features, + } || {}, + }; }, }); }; diff --git a/ee/spec/frontend/analytics/code_review_analytics/components/__snapshots__/merge_request_table_spec.js.snap b/ee/spec/frontend/analytics/code_review_analytics/components/__snapshots__/merge_request_table_spec.js.snap index 1fc2529a4159..8379f37ca113 100644 --- a/ee/spec/frontend/analytics/code_review_analytics/components/__snapshots__/merge_request_table_spec.js.snap +++ b/ee/spec/frontend/analytics/code_review_analytics/components/__snapshots__/merge_request_table_spec.js.snap @@ -2,9 +2,8 @@ exports[`MergeRequestTable component template matches the snapshot 1`] = ` <table - aria-busy="false" + aria-busy="" aria-colcount="7" - aria-describedby="__BVID__36__caption_" class="table b-table gl-table my-3 b-table-stacked-sm" id="__BVID__36" role="table" diff --git a/ee/spec/frontend/boards/components/__snapshots__/board_content_sidebar_spec.js.snap b/ee/spec/frontend/boards/components/__snapshots__/board_content_sidebar_spec.js.snap index fca7fc3085ff..467441a7acbe 100644 --- a/ee/spec/frontend/boards/components/__snapshots__/board_content_sidebar_spec.js.snap +++ b/ee/spec/frontend/boards/components/__snapshots__/board_content_sidebar_spec.js.snap @@ -143,7 +143,7 @@ exports[`ee/BoardContentSidebar incident sidebar matches the snapshot 1`] = ` <!----> <button aria-expanded="false" - aria-haspopup="true" + aria-haspopup="menu" class="btn dropdown-toggle btn-default btn-md btn-block dropdown-menu-toggle gl-mb-2 gl-button gl-dropdown-toggle" id="__BVID__40__BV_toggle_" type="button" diff --git a/ee/spec/frontend/security_orchestration/components/policies/filters/policy_source_filter_spec.js b/ee/spec/frontend/security_orchestration/components/policies/filters/policy_source_filter_spec.js index 0d6f8524d240..85fd81172138 100644 --- a/ee/spec/frontend/security_orchestration/components/policies/filters/policy_source_filter_spec.js +++ b/ee/spec/frontend/security_orchestration/components/policies/filters/policy_source_filter_spec.js @@ -14,7 +14,7 @@ describe('PolicySourceFilter component', () => { }); }; - const findToggle = () => wrapper.find('button[aria-haspopup="true"]'); + const findToggle = () => wrapper.find('button[aria-haspopup="menu"]'); afterEach(() => { wrapper.destroy(); diff --git a/ee/spec/frontend/security_orchestration/components/policies/filters/policy_type_filter_spec.js b/ee/spec/frontend/security_orchestration/components/policies/filters/policy_type_filter_spec.js index 24b11372dbcf..e921226ef27d 100644 --- a/ee/spec/frontend/security_orchestration/components/policies/filters/policy_type_filter_spec.js +++ b/ee/spec/frontend/security_orchestration/components/policies/filters/policy_type_filter_spec.js @@ -14,7 +14,7 @@ describe('PolicyTypeFilter component', () => { }); }; - const findToggle = () => wrapper.find('button[aria-haspopup="true"]'); + const findToggle = () => wrapper.find('button[aria-haspopup="menu"]'); afterEach(() => { wrapper.destroy(); diff --git a/ee/spec/frontend/subscriptions/new/components/__snapshots__/modal_spec.js.snap b/ee/spec/frontend/subscriptions/new/components/__snapshots__/modal_spec.js.snap index 36fb747dc405..c24dcdb3af1e 100644 --- a/ee/spec/frontend/subscriptions/new/components/__snapshots__/modal_spec.js.snap +++ b/ee/spec/frontend/subscriptions/new/components/__snapshots__/modal_spec.js.snap @@ -4,16 +4,16 @@ exports[`Modal component matches the snapshot 1`] = ` <b-modal-stub canceltitle="Cancel" cancelvariant="secondary" + footertag="footer" headerclosecontent="×" headercloselabel="Close" + headertag="header" id="subscription-modal" - ignoreenforcefocusselector="" lazy="true" modalclass="gl-modal," oktitle="OK" okvariant="primary" size="sm" - title="" titletag="h4" > diff --git a/ee/spec/frontend/vue_merge_request_widget/extensions/license_compliance/__snapshots__/index_spec.js.snap b/ee/spec/frontend/vue_merge_request_widget/extensions/license_compliance/__snapshots__/index_spec.js.snap index bef2e6a2e526..206d5588751b 100644 --- a/ee/spec/frontend/vue_merge_request_widget/extensions/license_compliance/__snapshots__/index_spec.js.snap +++ b/ee/spec/frontend/vue_merge_request_widget/extensions/license_compliance/__snapshots__/index_spec.js.snap @@ -159,7 +159,7 @@ exports[`License Compliance extension expanded data with new licenses displays a <!----> <button aria-expanded="false" - aria-haspopup="true" + aria-haspopup="menu" class="btn dropdown-toggle btn-default btn-sm gl-p-2! gl-button gl-dropdown-toggle btn-default-tertiary dropdown-icon-only dropdown-toggle-no-caret" id="__BVID__619__BV_toggle_" type="button" @@ -572,7 +572,7 @@ exports[`License Compliance extension expanded data with new licenses displays u <!----> <button aria-expanded="false" - aria-haspopup="true" + aria-haspopup="menu" class="btn dropdown-toggle btn-default btn-sm gl-p-2! gl-button gl-dropdown-toggle btn-default-tertiary dropdown-icon-only dropdown-toggle-no-caret" id="__BVID__527__BV_toggle_" type="button" diff --git a/ee/spec/frontend/vulnerabilities/new_vulnerability/section_details_spec.js b/ee/spec/frontend/vulnerabilities/new_vulnerability/section_details_spec.js index 3c70d88d6c3c..d1f6467e26a7 100644 --- a/ee/spec/frontend/vulnerabilities/new_vulnerability/section_details_spec.js +++ b/ee/spec/frontend/vulnerabilities/new_vulnerability/section_details_spec.js @@ -96,11 +96,11 @@ describe('New vulnerability - Section Details', () => { await nextTick(); // severity input - expect(wrapper.findAllByRole('alert').at(0).text()).toBe('Select a severity level'); expect(findFormGroup(1).attributes('aria-invalid')).toBe('true'); + expect(findFormGroup(1).find('.invalid-feedback').text()).toBe('Select a severity level'); // status input - expect(wrapper.findAllByRole('alert').at(1).text()).toBe('Select a status'); expect(findFormGroup(2).attributes('aria-invalid')).toBe('true'); + expect(findFormGroup(2).find('.invalid-feedback').text()).toBe('Select a status'); }); }); diff --git a/ee/spec/frontend/vulnerabilities/new_vulnerability/section_identifiers_spec.js b/ee/spec/frontend/vulnerabilities/new_vulnerability/section_identifiers_spec.js index 692ec14f3c20..b7e496c3eea7 100644 --- a/ee/spec/frontend/vulnerabilities/new_vulnerability/section_identifiers_spec.js +++ b/ee/spec/frontend/vulnerabilities/new_vulnerability/section_identifiers_spec.js @@ -50,10 +50,12 @@ describe('New vulnerability - Section Identifiers', () => { await nextTick(); expect(findFormGroup(0).attributes('aria-invalid')).toBe('true'); - expect(wrapper.findAllByRole('alert').at(0).text()).toBe('Enter the CVE or CWE code'); + expect(findFormGroup(0).find('.invalid-feedback').text()).toBe('Enter the CVE or CWE code'); expect(findFormGroup(1).attributes('aria-invalid')).toBe('true'); - expect(wrapper.findAllByRole('alert').at(1).text()).toBe('Enter the CVE or CWE identifier URL'); + expect(findFormGroup(1).find('.invalid-feedback').text()).toBe( + 'Enter the CVE or CWE identifier URL', + ); }); it('emits change event when input changes', () => { diff --git a/ee/spec/frontend/vulnerabilities/new_vulnerability/section_name_spec.js b/ee/spec/frontend/vulnerabilities/new_vulnerability/section_name_spec.js index 19fafb246128..0b26d32e1689 100644 --- a/ee/spec/frontend/vulnerabilities/new_vulnerability/section_name_spec.js +++ b/ee/spec/frontend/vulnerabilities/new_vulnerability/section_name_spec.js @@ -80,7 +80,7 @@ describe('New vulnerability - Section Name', () => { await nextTick(); - expect(wrapper.findByRole('alert').text()).toBe('Enter a name'); + expect(wrapper.find('.invalid-feedback').text()).toBe('Enter a name'); expect(findFormGroup(0).attributes('aria-invalid')).toBe('true'); }); }); diff --git a/spec/features/groups/members/sort_members_spec.rb b/spec/features/groups/members/sort_members_spec.rb index bf8e64fa1e29..9892d6fec1ee 100644 --- a/spec/features/groups/members/sort_members_spec.rb +++ b/spec/features/groups/members/sort_members_spec.rb @@ -18,7 +18,7 @@ def expect_sort_by(text, sort_direction) within('[data-testid="members-sort-dropdown"]') do - expect(page).to have_css('button[aria-haspopup="true"]', text: text) + expect(page).to have_css('button[aria-haspopup="menu"]', text: text) expect(page).to have_button("Sorting Direction: #{sort_direction == :asc ? 'Ascending' : 'Descending'}") end end diff --git a/spec/features/projects/members/sorting_spec.rb b/spec/features/projects/members/sorting_spec.rb index 8aadd6302d0b..3fc5a1258e4f 100644 --- a/spec/features/projects/members/sorting_spec.rb +++ b/spec/features/projects/members/sorting_spec.rb @@ -148,7 +148,7 @@ def second_member def expect_sort_by(text, sort_direction) within('[data-testid="members-sort-dropdown"]') do - expect(page).to have_css('button[aria-haspopup="true"]', text: text) + expect(page).to have_css('button[aria-haspopup="menu"]', text: text) expect(page).to have_button("Sorting Direction: #{sort_direction == :asc ? 'Ascending' : 'Descending'}") end end diff --git a/spec/frontend/clusters/components/__snapshots__/new_cluster_spec.js.snap b/spec/frontend/clusters/components/__snapshots__/new_cluster_spec.js.snap index 656e72baf778..21ffda8578a6 100644 --- a/spec/frontend/clusters/components/__snapshots__/new_cluster_spec.js.snap +++ b/spec/frontend/clusters/components/__snapshots__/new_cluster_spec.js.snap @@ -3,7 +3,7 @@ exports[`NewCluster renders the cluster component correctly 1`] = ` "<div class=\\"gl-pt-4\\"> <h4>Enter your Kubernetes cluster certificate details</h4> - <p>Enter details about your cluster. <b-link-stub href=\\"/help/user/project/clusters/add_existing_cluster\\" event=\\"click\\" routertag=\\"a\\" class=\\"gl-link\\">How do I use a certificate to connect to my cluster?</b-link-stub> + <p>Enter details about your cluster. <b-link-stub href=\\"/help/user/project/clusters/add_existing_cluster\\" class=\\"gl-link\\">How do I use a certificate to connect to my cluster?</b-link-stub> </p> </div>" `; diff --git a/spec/frontend/content_editor/components/__snapshots__/toolbar_button_spec.js.snap b/spec/frontend/content_editor/components/__snapshots__/toolbar_button_spec.js.snap index a63cca006dad..b8e6bcbc3c4f 100644 --- a/spec/frontend/content_editor/components/__snapshots__/toolbar_button_spec.js.snap +++ b/spec/frontend/content_editor/components/__snapshots__/toolbar_button_spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`content_editor/components/toolbar_button displays tertiary, medium button with a provided label and icon 1`] = ` -"<b-button-stub size=\\"md\\" variant=\\"default\\" type=\\"button\\" tag=\\"button\\" aria-label=\\"Bold\\" title=\\"Bold\\" class=\\"gl-button btn-default-tertiary btn-icon\\"> +"<b-button-stub size=\\"md\\" tag=\\"button\\" type=\\"button\\" variant=\\"default\\" aria-label=\\"Bold\\" title=\\"Bold\\" class=\\"gl-button btn-default-tertiary btn-icon\\"> <!----> <gl-icon-stub name=\\"bold\\" size=\\"16\\" class=\\"gl-button-icon\\"></gl-icon-stub> <!----> diff --git a/spec/frontend/invite_members/components/group_select_spec.js b/spec/frontend/invite_members/components/group_select_spec.js index e1563a7bb3ad..e540e8856bae 100644 --- a/spec/frontend/invite_members/components/group_select_spec.js +++ b/spec/frontend/invite_members/components/group_select_spec.js @@ -33,7 +33,7 @@ describe('GroupSelect', () => { const findSearchBoxByType = () => wrapper.findComponent(GlSearchBoxByType); const findDropdown = () => wrapper.findComponent(GlDropdown); - const findDropdownToggle = () => findDropdown().find('button[aria-haspopup="true"]'); + const findDropdownToggle = () => findDropdown().find('button[aria-haspopup="menu"]'); const findAvatarByLabel = (text) => wrapper .findAllComponents(GlAvatarLabeled) diff --git a/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap b/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap index a72528ae36b3..b2b3a93a11da 100644 --- a/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap +++ b/spec/frontend/jira_import/components/__snapshots__/jira_import_form_spec.js.snap @@ -2,7 +2,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = ` <table - aria-busy="false" + aria-busy="" aria-colcount="3" class="table b-table gl-table b-table-fixed" role="table" @@ -92,7 +92,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = <!----> <button aria-expanded="false" - aria-haspopup="true" + aria-haspopup="menu" class="btn dropdown-toggle btn-default btn-md gl-button gl-dropdown-toggle" type="button" > @@ -223,7 +223,7 @@ exports[`JiraImportForm table body shows correct information in each cell 1`] = <!----> <button aria-expanded="false" - aria-haspopup="true" + aria-haspopup="menu" class="btn dropdown-toggle btn-default btn-md gl-button gl-dropdown-toggle" type="button" > diff --git a/spec/frontend/members/components/filter_sort/sort_dropdown_spec.js b/spec/frontend/members/components/filter_sort/sort_dropdown_spec.js index ef3c8bde3cf9..526f839ece87 100644 --- a/spec/frontend/members/components/filter_sort/sort_dropdown_spec.js +++ b/spec/frontend/members/components/filter_sort/sort_dropdown_spec.js @@ -46,7 +46,7 @@ describe('SortDropdown', () => { const findSortingComponent = () => wrapper.findComponent(GlSorting); const findSortDirectionToggle = () => findSortingComponent().find('button[title^="Sort direction"]'); - const findDropdownToggle = () => wrapper.find('button[aria-haspopup="true"]'); + const findDropdownToggle = () => wrapper.find('button[aria-haspopup="menu"]'); const findDropdownItemByText = (text) => wrapper .findAllComponents(GlSortingItem) diff --git a/spec/frontend/members/components/table/role_dropdown_spec.js b/spec/frontend/members/components/table/role_dropdown_spec.js index b254cce4d721..3835d3fd33dc 100644 --- a/spec/frontend/members/components/table/role_dropdown_spec.js +++ b/spec/frontend/members/components/table/role_dropdown_spec.js @@ -60,7 +60,7 @@ describe('RoleDropdown', () => { .findAllComponents(GlDropdownItem) .wrappers.find((dropdownItemWrapper) => dropdownItemWrapper.props('isChecked')); - const findDropdownToggle = () => wrapper.find('button[aria-haspopup="true"]'); + const findDropdownToggle = () => wrapper.find('button[aria-haspopup="menu"]'); const findDropdown = () => wrapper.findComponent(GlDropdown); afterEach(() => { diff --git a/spec/frontend/packages_and_registries/infrastructure_registry/components/list/components/__snapshots__/packages_list_app_spec.js.snap b/spec/frontend/packages_and_registries/infrastructure_registry/components/list/components/__snapshots__/packages_list_app_spec.js.snap index a33528d2d918..9bd435badc47 100644 --- a/spec/frontend/packages_and_registries/infrastructure_registry/components/list/components/__snapshots__/packages_list_app_spec.js.snap +++ b/spec/frontend/packages_and_registries/infrastructure_registry/components/list/components/__snapshots__/packages_list_app_spec.js.snap @@ -48,9 +48,7 @@ exports[`packages_list_app renders 1`] = ` Learn how to <b-link-stub class="gl-link" - event="click" href="helpUrl" - routertag="a" target="_blank" > publish and share your packages diff --git a/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/pypi_installation_spec.js.snap b/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/pypi_installation_spec.js.snap index 92c2cd905689..84b37824390b 100644 --- a/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/pypi_installation_spec.js.snap +++ b/spec/frontend/packages_and_registries/package_registry/components/details/__snapshots__/pypi_installation_spec.js.snap @@ -20,7 +20,7 @@ exports[`PypiInstallation renders all the messages 1`] = ` <!----> <button aria-expanded="false" - aria-haspopup="true" + aria-haspopup="menu" class="btn dropdown-toggle btn-default btn-md gl-button gl-dropdown-toggle" id="__BVID__27__BV_toggle_" type="button" @@ -59,7 +59,6 @@ exports[`PypiInstallation renders all the messages 1`] = ` </div> <fieldset - aria-describedby="installation-pip-command-group__BV_description_" class="form-group gl-form-group" id="installation-pip-command-group" > @@ -75,12 +74,7 @@ exports[`PypiInstallation renders all the messages 1`] = ` <!----> </legend> - <div - aria-labelledby="installation-pip-command-group__BV_label_" - class="bv-no-focus-ring" - role="group" - tabindex="-1" - > + <div> <div data-testid="pip-command" id="installation-pip-command" diff --git a/spec/frontend/packages_and_registries/package_registry/pages/__snapshots__/list_spec.js.snap b/spec/frontend/packages_and_registries/package_registry/pages/__snapshots__/list_spec.js.snap index 7759c3667965..b279a7d0936c 100644 --- a/spec/frontend/packages_and_registries/package_registry/pages/__snapshots__/list_spec.js.snap +++ b/spec/frontend/packages_and_registries/package_registry/pages/__snapshots__/list_spec.js.snap @@ -94,9 +94,7 @@ exports[`PackagesListApp renders 1`] = ` Learn how to <b-link-stub class="gl-link" - event="click" href="/help/user/packages/package_registry/index" - routertag="a" target="_blank" > publish and share your packages diff --git a/spec/frontend/vue_merge_request_widget/components/states/__snapshots__/mr_widget_auto_merge_enabled_spec.js.snap b/spec/frontend/vue_merge_request_widget/components/states/__snapshots__/mr_widget_auto_merge_enabled_spec.js.snap index 8c3a4978bb82..0ba327df297e 100644 --- a/spec/frontend/vue_merge_request_widget/components/states/__snapshots__/mr_widget_auto_merge_enabled_spec.js.snap +++ b/spec/frontend/vue_merge_request_widget/components/states/__snapshots__/mr_widget_auto_merge_enabled_spec.js.snap @@ -84,7 +84,7 @@ exports[`MRWidgetAutoMergeEnabled when graphql is disabled template should have <!----> <button aria-expanded="false" - aria-haspopup="true" + aria-haspopup="menu" class="btn dropdown-toggle btn-default btn-sm gl-p-2! gl-button gl-dropdown-toggle btn-default-tertiary dropdown-icon-only dropdown-toggle-no-caret" type="button" > @@ -261,7 +261,7 @@ exports[`MRWidgetAutoMergeEnabled when graphql is enabled template should have c <!----> <button aria-expanded="false" - aria-haspopup="true" + aria-haspopup="menu" class="btn dropdown-toggle btn-default btn-sm gl-p-2! gl-button gl-dropdown-toggle btn-default-tertiary dropdown-icon-only dropdown-toggle-no-caret" type="button" > diff --git a/spec/frontend/vue_shared/components/__snapshots__/awards_list_spec.js.snap b/spec/frontend/vue_shared/components/__snapshots__/awards_list_spec.js.snap index bdf5ea23812a..aaf0466f0ac4 100644 --- a/spec/frontend/vue_shared/components/__snapshots__/awards_list_spec.js.snap +++ b/spec/frontend/vue_shared/components/__snapshots__/awards_list_spec.js.snap @@ -234,7 +234,7 @@ exports[`vue_shared/components/awards_list default matches snapshot 1`] = ` <!----> <button aria-expanded="false" - aria-haspopup="true" + aria-haspopup="menu" class="btn dropdown-toggle btn-default btn-md add-reaction-button btn-icon gl-relative! gl-button gl-dropdown-toggle btn-default-secondary" id="__BVID__13__BV_toggle_" type="button" -- GitLab