diff --git a/ee/spec/frontend/environments_dashboard/components/__snapshots__/dashboard_spec.js.snap b/ee/spec/frontend/environments_dashboard/components/__snapshots__/dashboard_spec.js.snap
index 71804261bb3a71587ebbfda3632b6d573eec9f3b..8562f40111d1e201255b4abc8718c2bd19466e5a 100644
--- a/ee/spec/frontend/environments_dashboard/components/__snapshots__/dashboard_spec.js.snap
+++ b/ee/spec/frontend/environments_dashboard/components/__snapshots__/dashboard_spec.js.snap
@@ -5,6 +5,7 @@ exports[`dashboard should match the snapshot 1`] = `
   class="environments-dashboard"
 >
   <gl-modal-stub
+    dismisslabel="Close"
     modalclass=""
     modalid="add-projects-modal"
     ok-disabled="true"
diff --git a/ee/spec/frontend/geo_replicable/components/geo_replicable_empty_state_spec.js b/ee/spec/frontend/geo_replicable/components/geo_replicable_empty_state_spec.js
index f372d05b915d15b338f3582f2715f14823043169..72b6942e0dee70a997087b9458bb35d9794d8237 100644
--- a/ee/spec/frontend/geo_replicable/components/geo_replicable_empty_state_spec.js
+++ b/ee/spec/frontend/geo_replicable/components/geo_replicable_empty_state_spec.js
@@ -1,5 +1,5 @@
 import { createLocalVue, mount } from '@vue/test-utils';
-import { getByRole, getByAltText } from '@testing-library/dom';
+import { getByRole } from '@testing-library/dom';
 import Vuex from 'vuex';
 import GeoReplicableEmptyState from 'ee/geo_replicable/components/geo_replicable_empty_state.vue';
 import createStore from 'ee/geo_replicable/store';
@@ -45,11 +45,9 @@ describe('GeoReplicableEmptyState', () => {
     });
 
     it('sets correct svg', () => {
-      expect(
-        getByAltText(wrapper.element, `There are no ${MOCK_REPLICABLE_TYPE} to show`).getAttribute(
-          'src',
-        ),
-      ).toBe(MOCK_GEO_REPLICATION_SVG_PATH);
+      expect(getByRole(wrapper.element, 'img').getAttribute('src')).toBe(
+        MOCK_GEO_REPLICATION_SVG_PATH,
+      );
     });
   });
 });
diff --git a/ee/spec/frontend/oncall_schedule/__snapshots__/delete_schedule_modal_spec.js.snap b/ee/spec/frontend/oncall_schedule/__snapshots__/delete_schedule_modal_spec.js.snap
index d413290f6eab81c9f7bfb7f2666c5412705f2225..e9eb3e3e4cb1065c9801995c07d39eae6f64136d 100644
--- a/ee/spec/frontend/oncall_schedule/__snapshots__/delete_schedule_modal_spec.js.snap
+++ b/ee/spec/frontend/oncall_schedule/__snapshots__/delete_schedule_modal_spec.js.snap
@@ -5,6 +5,7 @@ exports[`DeleteScheduleModal renders delete schedule modal layout 1`] = `
   actioncancel="[object Object]"
   actionprimary="[object Object]"
   data-testid="delete-schedule-modal-37"
+  dismisslabel="Close"
   modalclass=""
   modalid="deleteScheduleModal"
   size="sm"
diff --git a/ee/spec/frontend/oncall_schedule/rotations/components/__snapshots__/add_edit_rotation_modal_spec.js.snap b/ee/spec/frontend/oncall_schedule/rotations/components/__snapshots__/add_edit_rotation_modal_spec.js.snap
index 4b68bbf30931e04a43404cf5b8df77aec35e579d..fbccae6f0b4728b3f39ac3c3e7d70225b74bd397 100644
--- a/ee/spec/frontend/oncall_schedule/rotations/components/__snapshots__/add_edit_rotation_modal_spec.js.snap
+++ b/ee/spec/frontend/oncall_schedule/rotations/components/__snapshots__/add_edit_rotation_modal_spec.js.snap
@@ -4,6 +4,7 @@ exports[`AddEditRotationModal renders rotation modal layout 1`] = `
 <gl-modal-stub
   actioncancel="[object Object]"
   actionprimary="[object Object]"
+  dismisslabel="Close"
   modalclass=""
   modalid="addRotationModal"
   size="sm"
diff --git a/ee/spec/frontend/oncall_schedule/rotations/components/__snapshots__/delete_rotation_modal_spec.js.snap b/ee/spec/frontend/oncall_schedule/rotations/components/__snapshots__/delete_rotation_modal_spec.js.snap
index c7b077d454f0a4924ebab57418ef546fd28bc673..b6b48a84bf40c322692cc4d57cdea495a369eee4 100644
--- a/ee/spec/frontend/oncall_schedule/rotations/components/__snapshots__/delete_rotation_modal_spec.js.snap
+++ b/ee/spec/frontend/oncall_schedule/rotations/components/__snapshots__/delete_rotation_modal_spec.js.snap
@@ -5,6 +5,7 @@ exports[`DeleteRotationModal renders delete rotation modal layout 1`] = `
   actioncancel="[object Object]"
   actionprimary="[object Object]"
   data-testid="delete-rotation-modal-gid://gitlab/IncidentManagement::OncallRotation/2"
+  dismisslabel="Close"
   modalclass=""
   modalid="deleteRotationModal"
   size="sm"
diff --git a/ee/spec/frontend/projects/components/__snapshots__/project_adjourned_delete_button_spec.js.snap b/ee/spec/frontend/projects/components/__snapshots__/project_adjourned_delete_button_spec.js.snap
index 14914632a3ffa8a79dbe5362174fb4e46f5bea89..f269c6ed2cacd29605671b8a21562eae76f81704 100644
--- a/ee/spec/frontend/projects/components/__snapshots__/project_adjourned_delete_button_spec.js.snap
+++ b/ee/spec/frontend/projects/components/__snapshots__/project_adjourned_delete_button_spec.js.snap
@@ -31,6 +31,7 @@ exports[`Project remove modal initialized matches the snapshot 1`] = `
   <gl-modal-stub
     actioncancel="[object Object]"
     actionprimary="[object Object]"
+    dismisslabel="Close"
     footer-class="gl-bg-gray-10 gl-p-5"
     modalclass=""
     modalid="fakeUniqueId"
diff --git a/ee/spec/frontend/requirements/components/requirements_empty_state_spec.js b/ee/spec/frontend/requirements/components/requirements_empty_state_spec.js
index 6c3c6beaa2b0192f69e2d953cd4bd88bc9c8c866..57ca0c3de92b30a5aac82092791432e750de40b1 100644
--- a/ee/spec/frontend/requirements/components/requirements_empty_state_spec.js
+++ b/ee/spec/frontend/requirements/components/requirements_empty_state_spec.js
@@ -97,9 +97,6 @@ describe('RequirementsEmptyState', () => {
       const emptyStateEl = wrapper.find('.empty-state .svg-content img');
 
       expect(emptyStateEl.exists()).toBe(true);
-      expect(emptyStateEl.attributes('alt')).toBe(
-        'With requirements, you can set criteria to check your products against.',
-      );
       expect(emptyStateEl.attributes('src')).toBe(
         '/assets/illustrations/empty-state/requirements.svg',
       );
diff --git a/ee/spec/frontend/threat_monitoring/components/policy_editor/__snapshots__/policy_editor_spec.js.snap b/ee/spec/frontend/threat_monitoring/components/policy_editor/__snapshots__/policy_editor_spec.js.snap
index 7e317790c7c8d8fc5bbb2b471031cdbc8bb45c3c..4a58a9f699c381a842b97e88761aae005050837d 100644
--- a/ee/spec/frontend/threat_monitoring/components/policy_editor/__snapshots__/policy_editor_spec.js.snap
+++ b/ee/spec/frontend/threat_monitoring/components/policy_editor/__snapshots__/policy_editor_spec.js.snap
@@ -247,6 +247,7 @@ spec:
   <gl-modal-stub
     actioncancel="[object Object]"
     actionsecondary="[object Object]"
+    dismisslabel="Close"
     modalclass=""
     modalid="delete-modal"
     size="md"
diff --git a/ee/spec/frontend/vue_shared/security_reports/components/dast_modal_spec.js b/ee/spec/frontend/vue_shared/security_reports/components/dast_modal_spec.js
index ab1af1e7f644b3fff401b39768c43fc8d2ba65ef..fa3fad020dc2a4ea8266912c7713afa2ed8c2fc5 100644
--- a/ee/spec/frontend/vue_shared/security_reports/components/dast_modal_spec.js
+++ b/ee/spec/frontend/vue_shared/security_reports/components/dast_modal_spec.js
@@ -45,7 +45,7 @@ describe('DAST Modal', () => {
 
   it('should contain the dynamic title', () => {
     createWrapper({ scannedResourcesCount: 20 });
-    expect(wrapper.attributes('title')).toBe('20 Scanned URLs');
+    expect(wrapper.find(GlModal).props('title')).toBe('20 Scanned URLs');
   });
 
   it('should not show download button when link is not present', () => {
diff --git a/ee/spec/frontend_integration/security_dashboard/__snapshots__/first_class_init_integration_spec.js.snap b/ee/spec/frontend_integration/security_dashboard/__snapshots__/first_class_init_integration_spec.js.snap
index 8c6401bfed5541799af8fafd225ef2dc81f1df40..ecb1077be0896f76bde901378d7950d5e5ed6e5d 100644
--- a/ee/spec/frontend_integration/security_dashboard/__snapshots__/first_class_init_integration_spec.js.snap
+++ b/ee/spec/frontend_integration/security_dashboard/__snapshots__/first_class_init_integration_spec.js.snap
@@ -12,7 +12,7 @@ exports[`Vulnerability Report error states has unavailable pages 1`] = `
         class="svg-250 svg-content"
       >
         <img
-          alt="Oops, something doesn't seem right."
+          alt=""
           class="gl-max-w-full"
           src="/test/empty_state.svg"
         />
diff --git a/ee/spec/frontend_integration/security_dashboard/__snapshots__/security_charts_init_integration_spec.js.snap b/ee/spec/frontend_integration/security_dashboard/__snapshots__/security_charts_init_integration_spec.js.snap
index 3f0eafe755d7c4fc601d5744de3f2a1fc87585b4..f1e9dd742e5bc60f8036fcca9527cec8d19c6091 100644
--- a/ee/spec/frontend_integration/security_dashboard/__snapshots__/security_charts_init_integration_spec.js.snap
+++ b/ee/spec/frontend_integration/security_dashboard/__snapshots__/security_charts_init_integration_spec.js.snap
@@ -58,7 +58,7 @@ exports[`Security Charts error states has unavailable pages 1`] = `
         class="svg-250 svg-content"
       >
         <img
-          alt="Oops, something doesn't seem right."
+          alt=""
           class="gl-max-w-full"
           src="/test/empty_state.svg"
         />
diff --git a/package.json b/package.json
index e9385625b37f0ae0d729f1ab9c3c72505ab5987b..388e15bb8cad91277764223d9aeb78d838dc29a1 100644
--- a/package.json
+++ b/package.json
@@ -45,7 +45,7 @@
     "@gitlab/favicon-overlay": "2.0.0",
     "@gitlab/svgs": "1.178.0",
     "@gitlab/tributejs": "1.0.0",
-    "@gitlab/ui": "25.4.0",
+    "@gitlab/ui": "25.7.2",
     "@gitlab/visual-review-tools": "1.6.1",
     "@rails/actioncable": "^6.0.3-4",
     "@rails/ujs": "^6.0.3-4",
diff --git a/spec/frontend/add_context_commits_modal/components/__snapshots__/add_context_commits_modal_spec.js.snap b/spec/frontend/add_context_commits_modal/components/__snapshots__/add_context_commits_modal_spec.js.snap
index 8948a9926bbb75cf84e001d81f15f11d826ae53b..1eb9ccc9c6cee7be37302fa1f27f7fc2955720df 100644
--- a/spec/frontend/add_context_commits_modal/components/__snapshots__/add_context_commits_modal_spec.js.snap
+++ b/spec/frontend/add_context_commits_modal/components/__snapshots__/add_context_commits_modal_spec.js.snap
@@ -4,6 +4,7 @@ exports[`AddContextCommitsModal renders modal with 2 tabs 1`] = `
 <gl-modal-stub
   body-class="add-review-item pt-0"
   cancel-variant="light"
+  dismisslabel="Close"
   modalclass=""
   modalid="add-review-item"
   ok-disabled="true"
diff --git a/spec/frontend/blob/pipeline_tour_success_modal_spec.js b/spec/frontend/blob/pipeline_tour_success_modal_spec.js
index 75a8994be4d25dab485bbfb5b7cbe067c6dad771..d4562019302487bbb046c528003bab5269d3d33e 100644
--- a/spec/frontend/blob/pipeline_tour_success_modal_spec.js
+++ b/spec/frontend/blob/pipeline_tour_success_modal_spec.js
@@ -2,6 +2,7 @@ import { shallowMount } from '@vue/test-utils';
 import Cookies from 'js-cookie';
 import { GlSprintf, GlModal, GlLink } from '@gitlab/ui';
 import { mockTracking, triggerEvent, unmockTracking } from 'helpers/tracking_helper';
+import { stubComponent } from 'helpers/stub_component';
 import pipelineTourSuccess from '~/blob/pipeline_tour_success_modal.vue';
 import modalProps from './pipeline_tour_success_mock_data';
 
@@ -15,7 +16,14 @@ describe('PipelineTourSuccessModal', () => {
     wrapper = shallowMount(pipelineTourSuccess, {
       propsData: modalProps,
       stubs: {
-        GlModal,
+        GlModal: stubComponent(GlModal, {
+          template: `
+            <div>
+              <slot name="modal-title"></slot>
+              <slot></slot>
+              <slot name="modal-footer"></slot>
+            </div>`,
+        }),
         GlSprintf,
         GlEmoji,
       },
diff --git a/spec/frontend/incidents_settings/components/__snapshots__/pagerduty_form_spec.js.snap b/spec/frontend/incidents_settings/components/__snapshots__/pagerduty_form_spec.js.snap
index f0eb54c1b3a0ca0e037e94e7905b2cc3aff2a35d..79ad5ad1bb99f430860db69708c5d59a0d2a3bf7 100644
--- a/spec/frontend/incidents_settings/components/__snapshots__/pagerduty_form_spec.js.snap
+++ b/spec/frontend/incidents_settings/components/__snapshots__/pagerduty_form_spec.js.snap
@@ -52,6 +52,7 @@ exports[`Alert integration settings form should match the default snapshot 1`] =
       </gl-button-stub>
        
       <gl-modal-stub
+        dismisslabel="Close"
         modalclass=""
         modalid="resetWebhookModal"
         ok-title="Reset webhook URL"
diff --git a/spec/frontend/invite_members/components/invite_members_modal_spec.js b/spec/frontend/invite_members/components/invite_members_modal_spec.js
index 4eb1db70b11a1e362b4f3c7b9518a201b9b2daa9..fc039bdf6da75b585f06e8743bc0fa62a9e1dadd 100644
--- a/spec/frontend/invite_members/components/invite_members_modal_spec.js
+++ b/spec/frontend/invite_members/components/invite_members_modal_spec.js
@@ -68,7 +68,7 @@ describe('InviteMembersModal', () => {
     });
 
     it('renders the modal with the correct title', () => {
-      expect(wrapper.attributes('title')).toBe('Invite team members');
+      expect(wrapper.find(GlModal).props('title')).toBe('Invite team members');
     });
 
     it('renders the Cancel button text correctly', () => {
diff --git a/spec/frontend/packages/list/components/__snapshots__/packages_list_app_spec.js.snap b/spec/frontend/packages/list/components/__snapshots__/packages_list_app_spec.js.snap
index c51130dae009517a6da1d4268cbe658fcb19fa25..b2df1ac5ab62f116c82dc7da8811955653a4035f 100644
--- a/spec/frontend/packages/list/components/__snapshots__/packages_list_app_spec.js.snap
+++ b/spec/frontend/packages/list/components/__snapshots__/packages_list_app_spec.js.snap
@@ -34,7 +34,7 @@ exports[`packages_list_app renders 1`] = `
                   class="svg-250 svg-content"
                 >
                   <img
-                    alt="There are no packages yet"
+                    alt=""
                     class="gl-max-w-full"
                     src="helpSvg"
                   />
@@ -95,7 +95,7 @@ exports[`packages_list_app renders 1`] = `
                   class="svg-250 svg-content"
                 >
                   <img
-                    alt="There are no Composer packages yet"
+                    alt=""
                     class="gl-max-w-full"
                     src="helpSvg"
                   />
@@ -156,7 +156,7 @@ exports[`packages_list_app renders 1`] = `
                   class="svg-250 svg-content"
                 >
                   <img
-                    alt="There are no Conan packages yet"
+                    alt=""
                     class="gl-max-w-full"
                     src="helpSvg"
                   />
@@ -217,7 +217,7 @@ exports[`packages_list_app renders 1`] = `
                   class="svg-250 svg-content"
                 >
                   <img
-                    alt="There are no Generic packages yet"
+                    alt=""
                     class="gl-max-w-full"
                     src="helpSvg"
                   />
@@ -278,7 +278,7 @@ exports[`packages_list_app renders 1`] = `
                   class="svg-250 svg-content"
                 >
                   <img
-                    alt="There are no Maven packages yet"
+                    alt=""
                     class="gl-max-w-full"
                     src="helpSvg"
                   />
@@ -339,7 +339,7 @@ exports[`packages_list_app renders 1`] = `
                   class="svg-250 svg-content"
                 >
                   <img
-                    alt="There are no NPM packages yet"
+                    alt=""
                     class="gl-max-w-full"
                     src="helpSvg"
                   />
@@ -400,7 +400,7 @@ exports[`packages_list_app renders 1`] = `
                   class="svg-250 svg-content"
                 >
                   <img
-                    alt="There are no NuGet packages yet"
+                    alt=""
                     class="gl-max-w-full"
                     src="helpSvg"
                   />
@@ -461,7 +461,7 @@ exports[`packages_list_app renders 1`] = `
                   class="svg-250 svg-content"
                 >
                   <img
-                    alt="There are no PyPI packages yet"
+                    alt=""
                     class="gl-max-w-full"
                     src="helpSvg"
                   />
diff --git a/spec/frontend/pipelines/test_reports/test_case_details_spec.js b/spec/frontend/pipelines/test_reports/test_case_details_spec.js
index 9e66012818ea91a3e7f5ca4c1e5e642ebf81512b..bfb8b43778d66da3845bdced624254dbf52ce80d 100644
--- a/spec/frontend/pipelines/test_reports/test_case_details_spec.js
+++ b/spec/frontend/pipelines/test_reports/test_case_details_spec.js
@@ -44,7 +44,7 @@ describe('Test case details', () => {
     });
 
     it('renders the test case classname as modal title', () => {
-      expect(findModal().attributes('title')).toBe(defaultTestCase.classname);
+      expect(findModal().props('title')).toBe(defaultTestCase.classname);
     });
 
     it('renders the test case name', () => {
diff --git a/spec/frontend/profile/account/components/update_username_spec.js b/spec/frontend/profile/account/components/update_username_spec.js
index 45e5e0f885f15e2776a67c8747f5fb940c750f5e..91c3c81ab30e007fc784c24a9380c75670c3d5d2 100644
--- a/spec/frontend/profile/account/components/update_username_spec.js
+++ b/spec/frontend/profile/account/components/update_username_spec.js
@@ -84,7 +84,7 @@ describe('UpdateUsername component', () => {
     it('confirmation modal contains proper header and body', async () => {
       const { modal } = findElements();
 
-      expect(modal.attributes('title')).toBe('Change username?');
+      expect(modal.props('title')).toBe('Change username?');
       expect(modal.text()).toContain(
         `You are going to change the username ${defaultProps.initialUsername} to ${newUsername}`,
       );
diff --git a/spec/frontend/projects/components/__snapshots__/project_delete_button_spec.js.snap b/spec/frontend/projects/components/__snapshots__/project_delete_button_spec.js.snap
index 4eb5060cb0af1d075217731758674cea9de62b53..0b9f095a7003cdc9eced55ea82dc8bd0791b997b 100644
--- a/spec/frontend/projects/components/__snapshots__/project_delete_button_spec.js.snap
+++ b/spec/frontend/projects/components/__snapshots__/project_delete_button_spec.js.snap
@@ -31,6 +31,7 @@ exports[`Project remove modal initialized matches the snapshot 1`] = `
   <gl-modal-stub
     actioncancel="[object Object]"
     actionprimary="[object Object]"
+    dismisslabel="Close"
     footer-class="gl-bg-gray-10 gl-p-5"
     modalclass=""
     modalid="fakeUniqueId"
diff --git a/spec/frontend/projects/components/shared/__snapshots__/delete_button_spec.js.snap b/spec/frontend/projects/components/shared/__snapshots__/delete_button_spec.js.snap
index 4630415f61c91fb0c9172aa688444744f7ff3a2d..dd54db7dc0a4d11d3c98b8e5d00c242b1239cdb6 100644
--- a/spec/frontend/projects/components/shared/__snapshots__/delete_button_spec.js.snap
+++ b/spec/frontend/projects/components/shared/__snapshots__/delete_button_spec.js.snap
@@ -29,24 +29,12 @@ exports[`Project remove modal intialized matches the snapshot 1`] = `
     Delete project
   </gl-button-stub>
    
-  <b-modal-stub
-    canceltitle="Cancel"
-    cancelvariant="secondary"
-    footerclass="gl-bg-gray-10 gl-p-5"
-    headerclosecontent="&times;"
-    headercloselabel="Close"
-    id="delete-project-modal-2"
-    ignoreenforcefocusselector=""
-    lazy="true"
-    modalclass="gl-modal,"
-    oktitle="OK"
-    okvariant="danger"
-    size="sm"
-    title=""
-    titleclass="gl-text-red-500"
-    titletag="h4"
+  <div
+    footer-class="gl-bg-gray-10 gl-p-5"
+    ok-variant="danger"
+    title-class="gl-text-red-500"
   >
-     
+    Delete project. Are you ABSOLUTELY SURE?  
     <div>
        
       <p
@@ -70,49 +58,6 @@ exports[`Project remove modal intialized matches the snapshot 1`] = `
       />
        
     </div>
-     
-    <template />
-     
-    <template>
-      Delete project. Are you ABSOLUTELY SURE?
-    </template>
-     
-    <template />
-     
-    <template />
-     
-    <template />
-     
-    <template>
-      <gl-button-stub
-        buttontextclasses=""
-        category="primary"
-        class="js-modal-action-cancel"
-        icon=""
-        size="medium"
-        variant="default"
-      >
-        
-      Cancel, keep project
-    
-      </gl-button-stub>
-       
-      <!---->
-       
-      <gl-button-stub
-        buttontextclasses=""
-        category="primary"
-        class="js-modal-action-primary"
-        disabled="true"
-        icon=""
-        size="medium"
-        variant="danger"
-      >
-        
-      Yes, delete project
-    
-      </gl-button-stub>
-    </template>
-  </b-modal-stub>
+  </div>
 </form>
 `;
diff --git a/spec/frontend/projects/components/shared/delete_button_spec.js b/spec/frontend/projects/components/shared/delete_button_spec.js
index a6394a50011a86202fdd44b3b77cd170f669543d..cf7e41a2df2d8aa83cbc750763998c98e78d0a81 100644
--- a/spec/frontend/projects/components/shared/delete_button_spec.js
+++ b/spec/frontend/projects/components/shared/delete_button_spec.js
@@ -1,5 +1,6 @@
 import { shallowMount } from '@vue/test-utils';
 import { GlModal } from '@gitlab/ui';
+import { stubComponent } from 'helpers/stub_component';
 import SharedDeleteButton from '~/projects/components/shared/delete_button.vue';
 
 jest.mock('~/lib/utils/csrf', () => ({ token: 'test-csrf-token' }));
@@ -17,12 +18,19 @@ describe('Project remove modal', () => {
     formPath: 'some/path',
   };
 
-  const createComponent = (data = {}) => {
+  const createComponent = (data = {}, stubs = {}) => {
     wrapper = shallowMount(SharedDeleteButton, {
       propsData: defaultProps,
       data: () => data,
       stubs: {
-        GlModal,
+        GlModal: stubComponent(GlModal, {
+          template: `
+            <div>
+              <slot name="modal-title"></slot>
+              <slot></slot>
+            </div>`,
+        }),
+        ...stubs,
       },
     });
   };
@@ -52,7 +60,7 @@ describe('Project remove modal', () => {
 
   describe('when the user input does not match the confirmPhrase', () => {
     beforeEach(() => {
-      createComponent({ userInput: 'bar' });
+      createComponent({ userInput: 'bar' }, { GlModal });
     });
 
     it('the confirm button is disabled', () => {
@@ -62,7 +70,7 @@ describe('Project remove modal', () => {
 
   describe('when the user input matches the confirmPhrase', () => {
     beforeEach(() => {
-      createComponent({ userInput: defaultProps.confirmPhrase });
+      createComponent({ userInput: defaultProps.confirmPhrase }, { GlModal });
     });
 
     it('the confirm button is not disabled', () => {
diff --git a/spec/frontend/self_monitor/components/__snapshots__/self_monitor_form_spec.js.snap b/spec/frontend/self_monitor/components/__snapshots__/self_monitor_form_spec.js.snap
index 02d5ca6bdb3da27974b9b6acec9acddc355ecbf6..bd05eb690800800f39fe4ad14d1a0fdf2a367c10 100644
--- a/spec/frontend/self_monitor/components/__snapshots__/self_monitor_form_spec.js.snap
+++ b/spec/frontend/self_monitor/components/__snapshots__/self_monitor_form_spec.js.snap
@@ -60,6 +60,7 @@ exports[`self monitor component When the self monitor project has not been creat
   <gl-modal-stub
     cancel-title="Cancel"
     category="primary"
+    dismisslabel="Close"
     modalclass=""
     modalid="delete-self-monitor-modal"
     ok-title="Delete project"
diff --git a/spec/frontend/serverless/components/__snapshots__/empty_state_spec.js.snap b/spec/frontend/serverless/components/__snapshots__/empty_state_spec.js.snap
index 6b3d65ff037f1ba832e4c10a6bedc96f06bbb470..4b827301943c5ef444b0471c83b7e804065cd4f1 100644
--- a/spec/frontend/serverless/components/__snapshots__/empty_state_spec.js.snap
+++ b/spec/frontend/serverless/components/__snapshots__/empty_state_spec.js.snap
@@ -3,7 +3,7 @@
 exports[`EmptyStateComponent should render content 1`] = `
 "<section class=\\"row empty-state text-center\\">
   <div class=\\"col-12\\">
-    <div class=\\"svg-250 svg-content\\"><img src=\\"/image.svg\\" alt=\\"Getting started with serverless\\" class=\\"gl-max-w-full\\"></div>
+    <div class=\\"svg-250 svg-content\\"><img src=\\"/image.svg\\" alt=\\"\\" class=\\"gl-max-w-full\\"></div>
   </div>
   <div class=\\"col-12\\">
     <div class=\\"text-content gl-mx-auto gl-my-0 gl-p-5\\">
diff --git a/yarn.lock b/yarn.lock
index 4b981c4280e4bafc47a951c675ec027e9eb282cf..19fd781f3f3aff077d4ce36d76435eb26aa02126 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -876,10 +876,10 @@
   resolved "https://registry.yarnpkg.com/@gitlab/tributejs/-/tributejs-1.0.0.tgz#672befa222aeffc83e7d799b0500a7a4418e59b8"
   integrity sha512-nmKw1+hB6MHvlmPz63yPwVs1qQkycHwsKgxpEbzmky16Y6mL4EJMk3w1b8QlOAF/AIAzjCERPhe/R4MJiohbZw==
 
-"@gitlab/ui@25.4.0":
-  version "25.4.0"
-  resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-25.4.0.tgz#67bfd2a905097fc4cec0272665c36c722b3475c9"
-  integrity sha512-/dffpdyDcX102wWTbzDQOmOGfAEyDitRWCBOk2U+WRKPJIsWYtZuw40putwNA/gUUE1U08TPHf3sGSLzwIKZPA==
+"@gitlab/ui@25.7.2":
+  version "25.7.2"
+  resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-25.7.2.tgz#50271f99818645f9bc7ef675c08f9bf1bae54293"
+  integrity sha512-hgM9JHesIqnDujjJ16BHFQWYwzWd9php8xElhkGUdKWGV+PVw9TVdYcKfkIAb3TXtb9551uXN0Jv6wH5DRJyXw==
   dependencies:
     "@babel/standalone" "^7.0.0"
     "@gitlab/vue-toasted" "^1.3.0"