From 615cd99f4d3299662048ba70ee58a6cab8b0a0a1 Mon Sep 17 00:00:00 2001 From: Buck OLeary Date: Fri, 5 Dec 2025 16:46:22 -0500 Subject: [PATCH 1/2] Remove DAP welcome modal and related components Remove the deprecated Data Analysis Platform (DAP) welcome modal feature and all associated illustration components. This cleanup removes unused Vue components that are no longer needed in the codebase. Changes include: - Remove dap_welcome_modal.vue and explainer components - Remove illustration SVG components (AI, feedback, panels, UI, search) - Clean up ESLint todo entries for removed files - Removes unused code Changelog: changed --- .eslint_todo/vue-require-explicit-emits.mjs | 1 - .eslint_todo/vue-require-name-property.mjs | 6 +- .../dap_welcome_modal/dap_welcome_modal.vue | 132 ---- .../dap_welcome_modal/explainer_ai.vue | 22 - .../dap_welcome_modal/explainer_feedback.vue | 36 - .../dap_welcome_modal/explainer_panels.vue | 22 - .../dap_welcome_modal/explainer_search.vue | 23 - .../dap_welcome_modal/explainer_ui.vue | 23 - .../explainer_ai_illustration.vue | 139 ---- .../explainer_feedback_illustration.vue | 125 ---- .../explainer_panels_illustration.vue | 213 ------ .../explainer_search_illustration.vue | 129 ---- .../explainer_ui_illustration.vue | 147 ---- .../javascripts/entrypoints/super_sidebar.js | 10 - .../super_sidebar/components/user_menu.vue | 8 - app/assets/stylesheets/framework.scss | 1 - .../framework/dap_welcome_modal.scss | 708 ------------------ ee/spec/features/ai_sidepanel_spec.rb | 5 - .../user_navigates_duo_chat_history_spec.rb | 1 - .../identity_verification_spec.rb | 2 - .../saas/standard_flow_with_2fa_spec.rb | 6 - ...rial_flow_company_creating_project_spec.rb | 5 - .../list/user_interacts_with_drawer_spec.rb | 3 - locale/gitlab.pot | 24 - qa/qa/flow/login.rb | 4 - qa/qa/page/main/login.rb | 7 - qa/qa/page/main/menu.rb | 11 - .../login/2fa_ssh_recovery_spec.rb | 1 - .../login/oauth_login_with_github_spec.rb | 1 - ...roup_saml_enforced_sso_new_account_spec.rb | 3 - .../merge_with_code_owner_in_subgroup_spec.rb | 1 - .../5_package/dependency_proxy_sso_spec.rb | 2 - spec/features/boards/sidebar_spec.rb | 2 - .../user_suggests_changes_on_diff_spec.rb | 3 - spec/features/users/login_spec.rb | 3 - .../list/user_interacts_with_drawer_spec.rb | 4 - .../components/user_menu_spec.js | 36 - spec/support/capybara_wait_for_requests.rb | 2 - spec/support/helpers/login_helpers.rb | 4 - .../support/helpers/project_studio_helpers.rb | 12 - 40 files changed, 1 insertion(+), 1886 deletions(-) delete mode 100644 app/assets/javascripts/dap_welcome_modal/dap_welcome_modal.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/explainer_ai.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/explainer_feedback.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/explainer_panels.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/explainer_search.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/explainer_ui.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/illustrations/explainer_ai_illustration.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/illustrations/explainer_feedback_illustration.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/illustrations/explainer_panels_illustration.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/illustrations/explainer_search_illustration.vue delete mode 100644 app/assets/javascripts/dap_welcome_modal/illustrations/explainer_ui_illustration.vue delete mode 100644 app/assets/stylesheets/framework/dap_welcome_modal.scss diff --git a/.eslint_todo/vue-require-explicit-emits.mjs b/.eslint_todo/vue-require-explicit-emits.mjs index 0caefe4d786dbc..a271ebd688d9a5 100644 --- a/.eslint_todo/vue-require-explicit-emits.mjs +++ b/.eslint_todo/vue-require-explicit-emits.mjs @@ -144,7 +144,6 @@ export default { 'app/assets/javascripts/contributors/components/contributor_area_chart.vue', 'app/assets/javascripts/custom_emoji/components/form.vue', 'app/assets/javascripts/custom_emoji/components/list.vue', - 'app/assets/javascripts/dap_welcome_modal/dap_welcome_modal.vue', 'app/assets/javascripts/deploy_keys/components/action_btn.vue', 'app/assets/javascripts/deploy_keys/components/confirm_modal.vue', 'app/assets/javascripts/design_management/components/delete_button.vue', diff --git a/.eslint_todo/vue-require-name-property.mjs b/.eslint_todo/vue-require-name-property.mjs index a2c42b444b14ba..ea735e87929d71 100644 --- a/.eslint_todo/vue-require-name-property.mjs +++ b/.eslint_todo/vue-require-name-property.mjs @@ -306,11 +306,7 @@ export default { 'app/assets/javascripts/custom_emoji/components/list.vue', 'app/assets/javascripts/custom_emoji/pages/index.vue', 'app/assets/javascripts/custom_emoji/pages/new.vue', - 'app/assets/javascripts/dap_welcome_modal/explainer_ai.vue', - 'app/assets/javascripts/dap_welcome_modal/explainer_feedback.vue', - 'app/assets/javascripts/dap_welcome_modal/explainer_panels.vue', - 'app/assets/javascripts/dap_welcome_modal/explainer_search.vue', - 'app/assets/javascripts/dap_welcome_modal/explainer_ui.vue', + 'app/assets/javascripts/deploy_freeze/components/deploy_freeze_modal.vue', 'app/assets/javascripts/deploy_freeze/components/deploy_freeze_settings.vue', 'app/assets/javascripts/deploy_freeze/components/deploy_freeze_table.vue', diff --git a/app/assets/javascripts/dap_welcome_modal/dap_welcome_modal.vue b/app/assets/javascripts/dap_welcome_modal/dap_welcome_modal.vue deleted file mode 100644 index f901d5b5a4b291..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/dap_welcome_modal.vue +++ /dev/null @@ -1,132 +0,0 @@ - - - diff --git a/app/assets/javascripts/dap_welcome_modal/explainer_ai.vue b/app/assets/javascripts/dap_welcome_modal/explainer_ai.vue deleted file mode 100644 index 6e9e6b2614c085..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/explainer_ai.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/app/assets/javascripts/dap_welcome_modal/explainer_feedback.vue b/app/assets/javascripts/dap_welcome_modal/explainer_feedback.vue deleted file mode 100644 index d7c18f66129aae..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/explainer_feedback.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/app/assets/javascripts/dap_welcome_modal/explainer_panels.vue b/app/assets/javascripts/dap_welcome_modal/explainer_panels.vue deleted file mode 100644 index 21160d7097f890..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/explainer_panels.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/app/assets/javascripts/dap_welcome_modal/explainer_search.vue b/app/assets/javascripts/dap_welcome_modal/explainer_search.vue deleted file mode 100644 index 4e00af7a725489..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/explainer_search.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/app/assets/javascripts/dap_welcome_modal/explainer_ui.vue b/app/assets/javascripts/dap_welcome_modal/explainer_ui.vue deleted file mode 100644 index 3bd4d98acf8b73..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/explainer_ui.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_ai_illustration.vue b/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_ai_illustration.vue deleted file mode 100644 index 07926250cb9c36..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_ai_illustration.vue +++ /dev/null @@ -1,139 +0,0 @@ - diff --git a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_feedback_illustration.vue b/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_feedback_illustration.vue deleted file mode 100644 index c5646caaebe0d0..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_feedback_illustration.vue +++ /dev/null @@ -1,125 +0,0 @@ - diff --git a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_panels_illustration.vue b/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_panels_illustration.vue deleted file mode 100644 index f591a7719c4df1..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_panels_illustration.vue +++ /dev/null @@ -1,213 +0,0 @@ - diff --git a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_search_illustration.vue b/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_search_illustration.vue deleted file mode 100644 index 0c526cd6e49ce5..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_search_illustration.vue +++ /dev/null @@ -1,129 +0,0 @@ - diff --git a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_ui_illustration.vue b/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_ui_illustration.vue deleted file mode 100644 index 8468cbf76cac63..00000000000000 --- a/app/assets/javascripts/dap_welcome_modal/illustrations/explainer_ui_illustration.vue +++ /dev/null @@ -1,147 +0,0 @@ - diff --git a/app/assets/javascripts/entrypoints/super_sidebar.js b/app/assets/javascripts/entrypoints/super_sidebar.js index 364fd283f746e8..6fbb77673cb824 100644 --- a/app/assets/javascripts/entrypoints/super_sidebar.js +++ b/app/assets/javascripts/entrypoints/super_sidebar.js @@ -1,6 +1,5 @@ import '~/webpack'; import '~/commons'; -import { parseBoolean } from '~/lib/utils/common_utils'; import { initSuperSidebar, initSuperSidebarToggle, @@ -10,15 +9,6 @@ import { } from '~/super_sidebar/super_sidebar_bundle'; const superSidebarData = getSuperSidebarData(); -const projectStudioEnabled = parseBoolean(document.body.dataset.projectStudioEnabled); - -// The `showDapWelcomeModal` determines whether to show DAP intro banner to new -// users or not. We only set it if project studio is both available and enabled -// for current user and banner was never shown to this user (i.e. missing key) -// Once user dismisses this modal, key is set to `false` and banner is not shown in future. -if (projectStudioEnabled && localStorage.getItem('showDapWelcomeModal') === null) { - localStorage.setItem('showDapWelcomeModal', 'true'); -} initSuperSidebar(superSidebarData); initSuperSidebarToggle(); diff --git a/app/assets/javascripts/super_sidebar/components/user_menu.vue b/app/assets/javascripts/super_sidebar/components/user_menu.vue index b53f29c831334a..60336fecd78067 100644 --- a/app/assets/javascripts/super_sidebar/components/user_menu.vue +++ b/app/assets/javascripts/super_sidebar/components/user_menu.vue @@ -12,7 +12,6 @@ import { import UserMenuUpgradeSubscription from 'ee_component/super_sidebar/components/user_menu_upgrade_subscription.vue'; import SafeHtml from '~/vue_shared/directives/safe_html'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; -import DapWelcomeModal from '~/dap_welcome_modal/dap_welcome_modal.vue'; import { s__, __, sprintf } from '~/locale'; import Tracking from '~/tracking'; import { SET_STATUS_MODAL_ID } from '~/set_status_modal/constants'; @@ -54,7 +53,6 @@ export default { UserCounts, UserMenuProfileItem, UserMenuUpgradeSubscription, - DapWelcomeModal, SetStatusModal: () => import( /* webpackChunkName: 'statusModalBundle' */ '~/set_status_modal/set_status_modal_wrapper.vue' @@ -76,7 +74,6 @@ export default { data() { return { setStatusModalReady: false, - showDapWelcomeModal: false, updatedAvatarUrl: null, }; }, @@ -241,7 +238,6 @@ export default { }, mounted() { document.addEventListener('userAvatar:update', this.updateAvatar); - this.showDapWelcomeModal = localStorage.getItem('showDapWelcomeModal') === 'true'; }, unmounted() { document.removeEventListener('userAvatar:update', this.updateAvatar); @@ -257,9 +253,6 @@ export default { this.setStatusModalReady = true; this.$refs.userDropdown.close(); }, - closeDapWelcomeModal() { - localStorage.setItem('showDapWelcomeModal', 'false'); - }, initBuyCIMinsCallout() { const el = this.$refs?.buyPipelineMinutesNotificationCallout?.$el; el?.addEventListener('click', this.onBuyCIMinutesItemClick); @@ -500,6 +493,5 @@ export default { default-emoji="speech_balloon" v-bind="statusModalData" /> - diff --git a/app/assets/stylesheets/framework.scss b/app/assets/stylesheets/framework.scss index 579105d08198a6..d22f75c4a9dd43 100644 --- a/app/assets/stylesheets/framework.scss +++ b/app/assets/stylesheets/framework.scss @@ -11,7 +11,6 @@ // Project Studio @import 'framework/application-chrome'; @import 'framework/ds_experiments'; -@import 'framework/dap_welcome_modal'; @import 'framework/animations'; @import 'framework/vue_transitions'; diff --git a/app/assets/stylesheets/framework/dap_welcome_modal.scss b/app/assets/stylesheets/framework/dap_welcome_modal.scss deleted file mode 100644 index 7d3a295f9ff147..00000000000000 --- a/app/assets/stylesheets/framework/dap_welcome_modal.scss +++ /dev/null @@ -1,708 +0,0 @@ -// these custom properties were created this way to make them animatable -@property --_flashlight-start { - syntax: ''; - inherits: false; - initial-value: 0deg; -} - -@property --_flashlight-step-1 { - syntax: ''; - inherits: false; - initial-value: 0deg; -} - -@property --_flashlight-step-2 { - syntax: ''; - inherits: false; - initial-value: 0deg; -} - -@property --_flashlight-step-3 { - syntax: ''; - inherits: false; - initial-value: 0deg; -} - -@property --_flashlight-step-4 { - syntax: ''; - inherits: false; - initial-value: 0deg; -} - -@property --_flashlight-end { - syntax: ''; - inherits: false; - initial-value: 0deg; -} - -@property --_mask-start { - syntax: ''; - inherits: false; - initial-value: 0%; -} - -@property --_svg-color { - syntax: ''; - inherits: true; - initial-value: var(--_svg-color-old); -} - -// theme and mode adjustments -#dap_welcome_modal { - --gl-button-confirm-primary-background-color-default: var(--gl-color-neutral-950); - --gl-button-confirm-primary-border-color-default: var(--gl-color-neutral-950); - --_svg-color-old: color-mix(in srgb, var(--gl-color-neutral-950), var(--theme-color) 20%); - --_svg-color-new: color-mix(in srgb, var(--gl-color-neutral-950), var(--theme-color) 100%); - - background-color: rgba(from var(--gl-background-color-overlay) r g b / 90%); - - .modal-content { - background: rgba(from var(--gl-color-neutral-0) r g b / 90%); - } -} - -.gl-dark #dap_welcome_modal { - --gl-button-confirm-primary-background-color-default: var(--gl-color-neutral-10); - --gl-button-confirm-primary-border-color-default: var(--gl-color-neutral-10); - --_svg-color-old: color-mix(in srgb, var(--gl-color-neutral-10), var(--theme-color) 20%); - --_svg-color-new: color-mix(in srgb, var(--gl-color-neutral-10), var(--theme-color) 60%); - - background-color: rgba(from var(--gl-background-color-overlay) r g b / 70%); - - .modal-content { - background: rgba(from var(--gl-color-neutral-950) r g b / 80%); - } -} - - -// modal styles -#dap_welcome_modal { - --_flashlight-main-color: hsla(from var(--theme-color) h calc(s + 20) calc(l + 35) / 30%); - --_flashlight-complimentary-color: hsla( - from var(--theme-color) calc(h + 30) calc(s + 20) calc(l + 35) / 15% - ); - --_svg-color: var(--_svg-color-old); - backdrop-filter: blur(0.25rem); - - .modal-body { - text-align: center; - } - - .modal-footer > div:has(.gl-button:only-child) { - justify-content: center !important; - } - - - // spotlight effect - &::before { - content: ''; - position: absolute; - width: 100%; - height: 100%; - mask: radial-gradient(circle at 50% 100%, black var(--_mask-start), transparent); - background-image: conic-gradient( - from -90deg at 50% 120%, - transparent var(--_flashlight-start), - var(--_flashlight-complimentary-color) var(--_flashlight-step-1), - var(--_flashlight-main-color) var(--_flashlight-step-2), - var(--_flashlight-main-color) var(--_flashlight-step-3), - var(--_flashlight-complimentary-color) var(--_flashlight-step-4), - transparent var(--_flashlight-end) - ); - animation: - dap-welcome-modal-spotlight 1s - linear( - 0 0%, - 0 1.8%, - 0.01 3.6%, - 0.03 6.35%, - 0.07 9.1%, - 0.13 11.4%, - 0.19 13.4%, - 0.27 15%, - 0.34 16.1%, - 0.54 18.35%, - 0.66 20.6%, - 0.72 22.4%, - 0.77 24.6%, - 0.81 27.3%, - 0.85 30.4%, - 0.88 35.1%, - 0.92 40.6%, - 0.94 47.2%, - 0.96 55%, - 0.98 64%, - 0.99 74.4%, - 1 86.4%, - 1 100% - ) - both, - dap-welcome-modal-spotlight-breath 10s 1s ease-in-out infinite; - } -} - -@keyframes dap-welcome-modal-spotlight { - from { - --_flashlight-start: 90deg; - --_flashlight-step-1: 90deg; - --_flashlight-step-2: 90deg; - --_flashlight-step-3: 90deg; - --_flashlight-step-4: 90deg; - --_flashlight-end: 90deg; - --_mask-start: 0%; - } - - to { - --_flashlight-start: 40deg; - --_flashlight-step-1: 60deg; - --_flashlight-step-2: 70deg; - --_flashlight-step-3: 110deg; - --_flashlight-step-4: 120deg; - --_flashlight-end: 140deg; - --_mask-start: 50%; - } -} - -@keyframes dap-welcome-modal-spotlight-breath { - 0%, - 100% { - --_flashlight-start: 40deg; - --_flashlight-step-1: 60deg; - --_flashlight-step-2: 70deg; - --_flashlight-step-3: 110deg; - --_flashlight-step-4: 120deg; - --_flashlight-end: 140deg; - } - - 50% { - --_flashlight-start: 20deg; - --_flashlight-step-1: 45deg; - --_flashlight-step-2: 65deg; - --_flashlight-step-3: 115deg; - --_flashlight-step-4: 135deg; - --_flashlight-end: 160deg; - } -} - -#dap_welcome_modal .modal-dialog { - overflow: clip; -} - -#dap_welcome_modal .slides { - display: flex; - width: 100%; - clip-path: inset(0); - - .slide:not(.active) { - opacity: 0; - } - - .slide { - width: 100%; - flex-shrink: 0; - @apply gl-pt-2; - transition: all 0.2s $gl-easing-out-cubic; - } - - .slide:nth-child(1) { - margin-left: calc(var(--_currentStep) * -100%); - } -} - -#dap_welcome_modal .particles { - position: fixed; - width: 100vw; - height: 100vh; - padding: 0 10vw; - top: 0; - left: 0; - z-index: -2; - display: flex; - justify-content: space-around; - mask: radial-gradient(circle at 50% 100%, black 50%, transparent 75%); - overflow: hidden; - - .particle { - align-self: flex-end; - aspect-ratio: 1; - background: hsla(from var(--theme-color) calc(h + 30) calc(s + 20) calc(l + 20) / 25%); - border-radius: 50%; - translate: 0 100%; - animation-name: dap-welcome-modal-particle-move, dap-welcome-modal-particle-shine; - animation-timing-function: linear; - animation-iteration-count: infinite; - - width: calc(0.5rem * var(--size)); - animation-delay: calc(10s * var(--delay) - 5s); - animation-duration: calc(20s * var(--duration) + 5s), 5s; - filter: blur(calc(0.1rem * var(--blur))); - } -} - -@keyframes dap-welcome-modal-particle-move { - from { - translate: 0 100%; - } - - to { - translate: 0 calc(-100vh - 100%); - } -} - -@keyframes dap-welcome-modal-particle-shine { - from { - scale: 1; - } - - to { - scale: 0.8; - } -} - -#dap_welcome_modal .bullets { - display: flex; - gap: var(--gl-spacing-scale-3); - - .item { - border: 0; - background-color: var(--gl-text-color-subtle); - width: 0.5rem; - height: 0.5rem; - padding: 0; - border-radius: 50%; - transition: background-color 0.2s cubic-bezier(0.22, 0.61, 0.36, 1); - - &.active { - background-color: var(--gl-text-color-default); - } - } -} - - -// ai panel explainer illustration -#dap_welcome_modal .active .explainer-ai { - --_animation: 3s cubic-bezier(0.22, 0.61, 0.36, 1) both infinite; -} - -#dap_welcome_modal .explainer-ai { - display: block; - margin: auto; - max-width: 100%; - --_svg-color: var(--_svg-color-new); - - .main-panel { - animation: dap-welcome-modal-explainer-ai-main var(--_animation); - } - - .side-panel { - animation: dap-welcome-modal-explainer-ai-side var(--_animation); - } - - .ui { - opacity: 0.4; - } -} - -@keyframes dap-welcome-modal-explainer-ai-main { - 0%, - 50%, - 100% { - width: 259px; - } - - 55%, - 95% { - width: 127px; - } -} - -@keyframes dap-welcome-modal-explainer-ai-side { - 0%, - 50%, - 100% { - opacity: 0; - translate: 127px 0; - width: 0; - } - - 55%, - 95% { - opacity: 1; - translate: 0 0; - width: 127px; - } -} - - -// panels explainer illustration -#dap_welcome_modal .active .explainer-panels { - --_animation: 5s cubic-bezier(0.22, 0.61, 0.36, 1) both infinite; - - .main-panel-list rect:nth-child(1) { - animation-name: dap-welcome-modal-explainer-panels-list, dap-welcome-modal-explainer-panels-list-items; - animation-delay: 0s, 0s; - } - - .main-panel-list rect:nth-child(2) { - animation-name: dap-welcome-modal-explainer-panels-list, dap-welcome-modal-explainer-panels-list-items; - animation-delay: 0s, 1s; - } - - .main-panel-list rect:nth-child(3) { - animation-name: dap-welcome-modal-explainer-panels-list, dap-welcome-modal-explainer-panels-list-active; - } -} - -#dap_welcome_modal .explainer-panels { - display: block; - margin: auto; - max-width: 100%; - --_svg-color: var(--_svg-color-new); - - .main-panel { - animation: dap-welcome-modal-explainer-panels-main var(--_animation); - } - - .main-panel-list rect { - width: 112px; - width: 244px; - opacity: 0.1; - animation: dap-welcome-modal-explainer-panels-list var(--_animation); - } - - .side-panel { - animation: dap-welcome-modal-explainer-panels-side var(--_animation); - } - - .ui { - opacity: 0.4; - } -} - -@keyframes dap-welcome-modal-explainer-panels-main { - 0%, - 50%, - 100% { - width: 259px; - } - - 55%, - 95% { - width: 127px; - } -} - -@keyframes dap-welcome-modal-explainer-panels-side { - 0%, - 50%, - 100% { - opacity: 0; - translate: 127px 0; - width: 0; - } - - 55%, - 95% { - opacity: 1; - translate: 0 0; - width: 127px; - } -} - -@keyframes dap-welcome-modal-explainer-panels-list { - 0%, - 50%, - 100% { - width: 244px; - } - - 55%, - 95% { - width: 112px; - } -} - -@keyframes dap-welcome-modal-explainer-panels-list-items { - 0%, - 25%, - 100% { - opacity: 0.1; - } - - 5%, - 20% { - opacity: 0.5; - } -} - -@keyframes dap-welcome-modal-explainer-panels-list-active { - 0%, - 45%, - 100% { - opacity: 0.1; - } - - 50%, - 95% { - opacity: 0.5; - } - - 0%, - 46%, - 50% { - width: 244px; - translate: 0 0; - } - - 100% { - translate: 0 0; - } - - 48% { - width: 240px; - translate: 2px 0; - } - - 55%, - 95% { - width: 112px; - } -} - - -// search explainer illustration -#dap_welcome_modal .explainer-search { - display: block; - margin: auto; - max-width: 100%; - --_svg-color: var(--_svg-color-new); - - .ui { - opacity: 0.4; - } -} - - -// ui explainer illustration -#dap_welcome_modal .active .explainer-ui { - --_animation: 6s cubic-bezier(0.22, 0.61, 0.36, 1) infinite; -} - -#dap_welcome_modal .explainer-ui { - display: block; - margin: auto; - max-width: 100%; - animation: dap-welcome-modal-explainer-ui-color var(--_animation); - - .window { - animation: dap-welcome-modal-explainer-ui-window var(--_animation); - } - - .search { - animation: dap-welcome-modal-explainer-ui-search var(--_animation); - } - - .searchbar { - animation: dap-welcome-modal-explainer-ui-searchbar var(--_animation); - } - - .user { - animation: dap-welcome-modal-explainer-ui-user var(--_animation); - } - - .user-actions { - animation: dap-welcome-modal-explainer-ui-user-actions var(--_animation); - } - - .main-panel { - animation: dap-welcome-modal-explainer-ui-main-panel var(--_animation); - } - - .sparkles { - animation: dap-welcome-modal-explainer-ui-sparkles var(--_animation); - } - - .ai-panel { - animation: dap-welcome-modal-explainer-ui-ai-panel var(--_animation); - } - - .sidebar { - animation: dap-welcome-modal-explainer-ui-sidebar var(--_animation); - } - - .line { - animation: dap-welcome-modal-explainer-ui-line var(--_animation); - } -} - -@keyframes dap-welcome-modal-explainer-ui-color { - 0%, - 25%, - 100% { - --_svg-color: var(--_svg-color-old); - } - - 30%, - 95% { - --_svg-color: var(--_svg-color-new); - } -} - -@keyframes dap-welcome-modal-explainer-ui-window { - 0%, - 25%, - 100% { - rx: 3.5; - } - - 30%, - 95% { - rx: 11.5; - } -} - -@keyframes dap-welcome-modal-explainer-ui-search { - 0%, - 25%, - 100% { - translate: -88px 30px; - rx: 2; - } - - 30%, - 95% { - translate: 0 0; - rx: 4.5; - } -} - -@keyframes dap-welcome-modal-explainer-ui-searchbar { - 0%, - 25%, - 100% { - width: 63px; - } - - 30%, - 95% { - width: 111px; - } -} - -@keyframes dap-welcome-modal-explainer-ui-user { - 0%, - 25%, - 100% { - translate: -226px 0; - } - - 30%, - 95% { - translate: 0 0; - } -} - -@keyframes dap-welcome-modal-explainer-ui-user-actions { - 0%, - 25%, - 100% { - translate: -212px 16px; - } - - 30%, - 95% { - translate: 0 0; - } -} - -@keyframes dap-welcome-modal-explainer-ui-main-panel { - 0%, - 25%, - 100% { - rx: 2; - width: 224px; - height: 168px; - translate: 0 -24px; - stroke: transparent; - } - - 30%, - 95% { - rx: 7.5; - width: 204px; - height: 140px; - translate: 0 0; - stroke: var(--_svg-color); - } -} - -@keyframes dap-welcome-modal-explainer-ui-sparkles { - 0%, - 25%, - 100% { - opacity: 0; - } - - 30%, - 95% { - opacity: 1; - } -} - -@keyframes dap-welcome-modal-explainer-ui-ai-panel { - 0%, - 25%, - 100% { - translate: 20px 0; - stroke: transparent; - } - - 30%, - 95% { - translate: 0 0; - stroke: var(--_svg-color); - } -} - -@keyframes dap-welcome-modal-explainer-ui-sidebar { - 0%, - 25%, - 100% { - rx: 2; - width: 75px; - height: 168px; - translate: -4px -24px; - stroke: transparent; - } - - 30%, - 95% { - rx: 7.5; - width: 68px; - height: 140px; - translate: 0 0; - stroke: var(--_svg-color); - } -} - -@keyframes dap-welcome-modal-explainer-ui-line { - 0%, - 25%, - 100% { - opacity: 1; - } - - 30%, - 95% { - opacity: 0; - } -} - - -// feedback explainer illustration -#dap_welcome_modal .explainer-feedback { - display: block; - margin: auto; - max-width: 100%; - --_svg-color: var(--_svg-color-new); -} diff --git a/ee/spec/features/ai_sidepanel_spec.rb b/ee/spec/features/ai_sidepanel_spec.rb index f0239e8c57308c..443626f8ae515e 100644 --- a/ee/spec/features/ai_sidepanel_spec.rb +++ b/ee/spec/features/ai_sidepanel_spec.rb @@ -42,7 +42,6 @@ it 'does not show AI sidepanel' do visit project_path(project) - dismiss_welcome_banner_if_present(page) expect(page).not_to have_css(ai_sidepanel_selector) end @@ -59,7 +58,6 @@ set_cookie('duo_agentic_mode_on', 'true') visit project_path(project) - dismiss_welcome_banner_if_present(page) expect(page).to have_css(ai_sidepanel_selector) @@ -98,7 +96,6 @@ set_cookie('duo_agentic_mode_on', 'true') visit project_path(project) - dismiss_welcome_banner_if_present(page) within(ai_sidepanel_selector) do find_by_testid(sessions_toggle_selector).click @@ -143,7 +140,6 @@ set_cookie('duo_agentic_mode_on', 'true') visit project_path(project) - dismiss_welcome_banner_if_present(page) end it 'shows empty state when no sessions exist' do @@ -159,7 +155,6 @@ project.project_setting.update!(duo_features_enabled: false) allow(::Gitlab::Llm::TanukiBot).to receive(:chat_disabled_reason).and_return(:project) visit project_path(project) - dismiss_welcome_banner_if_present(page) end it 'prevents access to sessions tab' do diff --git a/ee/spec/features/duo_chat/user_navigates_duo_chat_history_spec.rb b/ee/spec/features/duo_chat/user_navigates_duo_chat_history_spec.rb index d8b0f7bd9c8dfd..1742d3d64f67fe 100644 --- a/ee/spec/features/duo_chat/user_navigates_duo_chat_history_spec.rb +++ b/ee/spec/features/duo_chat/user_navigates_duo_chat_history_spec.rb @@ -49,7 +49,6 @@ def close_popover skip 'Test not applicable in classic UI' unless Users::ProjectStudio.enabled_for_user?(user) # rubocop:disable RSpec/AvoidConditionalStatements -- temporary Project Studio rollout visit project_path(project) - dismiss_welcome_banner_if_present(page) open_duo_chat close_popover end diff --git a/ee/spec/features/registrations/identity_verification_spec.rb b/ee/spec/features/registrations/identity_verification_spec.rb index dde0cc62b265e0..078e791e96b029 100644 --- a/ee/spec/features/registrations/identity_verification_spec.rb +++ b/ee/spec/features/registrations/identity_verification_spec.rb @@ -517,8 +517,6 @@ def sign_up(flow: :standard, **opts) end def user_signs_out - dismiss_welcome_banner_if_present(page) - find_by_testid('user-dropdown').click click_link 'Sign out' diff --git a/ee/spec/features/registrations/saas/standard_flow_with_2fa_spec.rb b/ee/spec/features/registrations/saas/standard_flow_with_2fa_spec.rb index bc0f1aaa68de14..6fb834aa5d8df9 100644 --- a/ee/spec/features/registrations/saas/standard_flow_with_2fa_spec.rb +++ b/ee/spec/features/registrations/saas/standard_flow_with_2fa_spec.rb @@ -28,8 +28,6 @@ expect_to_be_on_2fa_verification(with_invite_notification: true) - dismiss_welcome_banner_if_present(page) - otp_authenticator_registration_and_copy_codes(user.current_otp, password) expect_to_be_on_profile_account_page @@ -52,8 +50,6 @@ expect_to_be_on_2fa_verification(with_invite_notification: true) - dismiss_welcome_banner_if_present(page) - otp_authenticator_registration_and_copy_codes(user.current_otp, password) expect_to_be_on_profile_account_page @@ -84,8 +80,6 @@ expect_to_be_on_2fa_verification - dismiss_welcome_banner_if_present(page) - otp_authenticator_registration_and_copy_codes(user.current_otp, password) expect_to_be_on_profile_account_page diff --git a/ee/spec/features/registrations/saas/trial_flow_company_creating_project_spec.rb b/ee/spec/features/registrations/saas/trial_flow_company_creating_project_spec.rb index d56b34e0ab48bd..bd7e4c45772f96 100644 --- a/ee/spec/features/registrations/saas/trial_flow_company_creating_project_spec.rb +++ b/ee/spec/features/registrations/saas/trial_flow_company_creating_project_spec.rb @@ -37,7 +37,6 @@ fills_in_group_and_project_creation_form_with_trial click_on 'Create project' - dismiss_welcome_banner_if_present(page) expect_to_be_in_get_started expect(tracking_events_key).to have_all_expected_events end @@ -48,7 +47,6 @@ stub_feature_flags(premium_message_during_trial: true) setup_trial_for_experiment - dismiss_welcome_banner_if_present(page) within_testid('super-sidebar') do click_link_or_button 'Merge requests' end @@ -83,7 +81,6 @@ stub_feature_flags(premium_message_during_trial: false) setup_trial_for_experiment - dismiss_welcome_banner_if_present(page) within_testid('super-sidebar') do click_link_or_button 'Merge requests' end @@ -126,7 +123,6 @@ def setup_trial_for_experiment fills_in_group_and_project_creation_form_with_trial click_on 'Create project' - dismiss_welcome_banner_if_present(page) expect_to_be_in_get_started update_with_applied_trials(with_duo: false) @@ -161,7 +157,6 @@ def setup_trial_for_experiment fills_in_group_and_project_creation_form_with_trial click_on 'Create project' - dismiss_welcome_banner_if_present(page) expect_to_be_in_learn_gitlab end end diff --git a/ee/spec/features/work_items/list/user_interacts_with_drawer_spec.rb b/ee/spec/features/work_items/list/user_interacts_with_drawer_spec.rb index 53f3b5cd68f7e9..666a882be9b500 100644 --- a/ee/spec/features/work_items/list/user_interacts_with_drawer_spec.rb +++ b/ee/spec/features/work_items/list/user_interacts_with_drawer_spec.rb @@ -167,7 +167,6 @@ visit project_work_items_path(project) close_work_item_feedback_popover_if_present - dismiss_welcome_banner_if_present(page) first_card.click @@ -187,7 +186,6 @@ visit group_work_items_path(group) close_work_item_feedback_popover_if_present - dismiss_welcome_banner_if_present(page) first_card.click @@ -213,7 +211,6 @@ visit group_epics_path(group) close_work_item_feedback_popover_if_present - dismiss_welcome_banner_if_present(page) first_card.click diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 8ec196d3ed5282..b227c732132968 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -29472,9 +29472,6 @@ msgstr "" msgid "Find the activation code for a purchased or renewed subscription in the Customers Portal or purchase confirmation email." msgstr "" -msgid "Find what you need faster" -msgstr "" - msgid "FindFile|Switch branch/tag" msgstr "" @@ -31282,9 +31279,6 @@ msgstr "" msgid "GitLab metadata URL" msgstr "" -msgid "GitLab now has a sleek panel-based layout. Find what you need faster with centered search and all your work items conveniently positioned in the upper right." -msgstr "" - msgid "GitLab project export" msgstr "" @@ -46971,9 +46965,6 @@ msgstr "" msgid "Open raw" msgstr "" -msgid "Open the GitLab Duo AI assistant panel from anywhere in GitLab. Ask questions, request code help, or get guidance without interrupting your workflow." -msgstr "" - msgid "Open threads must be resolved." msgstr "" @@ -64271,9 +64262,6 @@ msgstr "" msgid "Share the %{strong_open}GitLab single sign-on URL%{strong_close} with members so they can sign in to your group through your identity provider" msgstr "" -msgid "Share your feedback!" -msgstr "" - msgid "Shared groups" msgstr "" @@ -66035,12 +66023,6 @@ msgstr "" msgid "StatusPage|your status page frontend." msgstr "" -msgid "Stay in context" -msgstr "" - -msgid "Stay in your workflow with contextual panels. Select an issue to view its details right alongside your list, so you can quickly review, edit, and move on to the next task." -msgstr "" - msgid "Step" msgstr "" @@ -75491,9 +75473,6 @@ msgstr "" msgid "We've detected unusual activity" msgstr "" -msgid "We've improved the GitLab user experience with a more modern, intuitive interface built on a new panel-based layout." -msgstr "" - msgid "We've noticed an unusually high storage usage on %{project_name}" msgstr "" @@ -75977,9 +75956,6 @@ msgstr "" msgid "Welcome to the new merge request homepage! This page gives you a centralized view of all the merge requests you're working on. Know at a glance what merge requests need your attention first so you can spend less time checking in, and more time reviewing and responding to feedback." msgstr "" -msgid "Welcome to the redesigned GitLab UI" -msgstr "" - msgid "Welcome, %{name}!" msgstr "" diff --git a/qa/qa/flow/login.rb b/qa/qa/flow/login.rb index 1039fdca0b571d..0b1f967ef3fe86 100644 --- a/qa/qa/flow/login.rb +++ b/qa/qa/flow/login.rb @@ -28,10 +28,6 @@ def sign_in(as: nil, address: :gitlab, skip_page_validation: false, admin: false login.sign_in_using_credentials(user: as, skip_page_validation: skip_page_validation) end end - - return unless Runtime::Env.project_studio_enabled? && Page::Main::Menu.perform(&:signed_in?) - - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) end def sign_in_as_admin(address: :gitlab) diff --git a/qa/qa/page/main/login.rb b/qa/qa/page/main/login.rb index 38973abb470d93..097944c38e67ed 100644 --- a/qa/qa/page/main/login.rb +++ b/qa/qa/page/main/login.rb @@ -82,10 +82,6 @@ def sign_in_using_credentials(user: nil, skip_page_validation: false, raise_on_i ) end end - - return unless Runtime::Env.project_studio_enabled? && !skip_page_validation - - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) end def sign_in_using_admin_credentials @@ -95,7 +91,6 @@ def sign_in_using_admin_credentials end Page::Main::Menu.perform(&:has_personal_area?) - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) end def sign_in_using_ldap_credentials(user:) @@ -114,8 +109,6 @@ def sign_in_using_ldap_credentials(user:) Page::Main::Menu.perform(&:signed_in?) dismiss_duo_chat_popup if respond_to?(:dismiss_duo_chat_popup) - - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) end def has_sign_in_tab?(wait: Capybara.default_max_wait_time) diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb index 8d6ea18b9e2987..4f38a69a2f0a4a 100644 --- a/qa/qa/page/main/menu.rb +++ b/qa/qa/page/main/menu.rb @@ -106,16 +106,6 @@ def signed_in_as_user?(user) click_element 'user-avatar-content' if has_element?('user-profile-link', wait: 0) end - def dismiss_welcome_modal_if_present - return unless has_element?('#dap_welcome_modal___BV_modal_footer_', wait: 1) - - click_button 'Get started' - within(find('#dap_welcome_modal___BV_modal_content_')) { click_element('close-icon') } - wait_until(reload: false) do - !has_css?('#dap_welcome_modal___BV_modal_footer_') - end - end - def not_signed_in? return true if Page::Main::Login.perform(&:on_login_page?) @@ -130,7 +120,6 @@ def sign_out break true unless signed_in? - dismiss_welcome_modal_if_present within_user_menu do click_element 'sign-out-link' end diff --git a/qa/qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_ssh_recovery_spec.rb b/qa/qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_ssh_recovery_spec.rb index 168fdae0ebb31e..210178a9756246 100644 --- a/qa/qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_ssh_recovery_spec.rb +++ b/qa/qa/specs/features/browser_ui/10_software_supply_chain_security/login/2fa_ssh_recovery_spec.rb @@ -33,7 +33,6 @@ module QA end expect(Page::Main::Menu.perform(&:signed_in?)).to be_truthy - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) Page::Main::Menu.perform(&:sign_out) Flow::Login.sign_in(as: user, skip_page_validation: true) diff --git a/qa/qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb b/qa/qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb index b8de7ab816ac80..c512d8da470d8d 100644 --- a/qa/qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb +++ b/qa/qa/specs/features/browser_ui/10_software_supply_chain_security/login/oauth_login_with_github_spec.rb @@ -14,7 +14,6 @@ module QA Page::Main::Login.perform(&:sign_in_with_github) Vendor::Github::Page::Login.perform(&:login) - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) # After OAuth login, user might be on profile page or dashboard # Check that we're logged in by verifying the user menu is present diff --git a/qa/qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_saml_enforced_sso_new_account_spec.rb b/qa/qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_saml_enforced_sso_new_account_spec.rb index c625c92d817445..847cddd0af3e44 100644 --- a/qa/qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_saml_enforced_sso_new_account_spec.rb +++ b/qa/qa/specs/features/ee/browser_ui/10_software_supply_chain_security/group/group_saml_enforced_sso_new_account_spec.rb @@ -27,7 +27,6 @@ module QA EE::Page::Group::SamlSSOSignIn.perform(&:click_sign_in) Flow::Saml.login_to_idp_if_required(idp_user.username, idp_user.password) - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) expect(page).to have_text("Signed in with SAML") @@ -46,7 +45,6 @@ module QA EE::Page::Group::SamlSSOSignIn.perform(&:click_sign_in) Flow::Saml.login_to_idp_if_required(idp_user.username, idp_user.password) - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) expect(page).to have_text( "Sign in with your existing credentials to connect your organization's account" @@ -63,7 +61,6 @@ module QA EE::Page::Group::SamlSSOSignIn.perform(&:click_sign_in) Flow::Saml.login_to_idp_if_required(idp_user.username, idp_user.password) - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) expect(page).to have_text("Signed in with SAML") end diff --git a/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb b/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb index 26bdeda73c279e..91ef98383dc5cf 100644 --- a/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb +++ b/qa/qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb @@ -12,7 +12,6 @@ module QA group_or_project.add_member(approver, Resource::Members::AccessLevel::MAINTAINER) Flow::Login.sign_in - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) project.visit! end diff --git a/qa/qa/specs/features/ee/browser_ui/5_package/dependency_proxy_sso_spec.rb b/qa/qa/specs/features/ee/browser_ui/5_package/dependency_proxy_sso_spec.rb index 5d2b288a9e57fc..dd2c25599246c4 100644 --- a/qa/qa/specs/features/ee/browser_ui/5_package/dependency_proxy_sso_spec.rb +++ b/qa/qa/specs/features/ee/browser_ui/5_package/dependency_proxy_sso_spec.rb @@ -36,13 +36,11 @@ module QA EE::Page::Group::SamlSSOSignIn.perform(&:click_sign_in) Flow::Saml.login_to_idp_if_required(idp_user.username, idp_user.password) - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) QA::Flow::User.confirm_user(idp_user) visit_group_sso_url EE::Page::Group::SamlSSOSignIn.perform(&:click_sign_in) - Page::Main::Menu.perform(&:dismiss_welcome_modal_if_present) end after do diff --git a/spec/features/boards/sidebar_spec.rb b/spec/features/boards/sidebar_spec.rb index ffdad9f9a394ab..ce24eda655840e 100644 --- a/spec/features/boards/sidebar_spec.rb +++ b/spec/features/boards/sidebar_spec.rb @@ -24,7 +24,6 @@ sign_in(user) visit project_board_path(project, board) - dismiss_welcome_banner_if_present(page) click_button 'Collapse sidebar' # otherwise panel opens as drawer and intercepts clicks wait_for_requests @@ -38,7 +37,6 @@ sign_in(user) visit project_board_path(project, board) - dismiss_welcome_banner_if_present(page) wait_for_requests end diff --git a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb index 5dcaf90e9d9a86..9b9db16f9a8a95 100644 --- a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb +++ b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb @@ -29,7 +29,6 @@ def expect_suggestion_has_content(element, expected_changing_content, expected_s sign_in(user) visit(diffs_project_merge_request_path(project, merge_request)) - dismiss_welcome_banner_if_present(page) wait_for_requests end @@ -266,7 +265,6 @@ def hash(path) # Making sure it's not a Front-end cache. visit(diffs_project_merge_request_path(project, merge_request)) - dismiss_welcome_banner_if_present(page) wait_for_requests expect(page).to have_button('Apply suggestion').twice @@ -437,7 +435,6 @@ def diffs_metadata wait_for_requests visit(project_merge_request_path(project, merge_request)) - dismiss_welcome_banner_if_present(page) wait_for_requests end diff --git a/spec/features/users/login_spec.rb b/spec/features/users/login_spec.rb index 5d424795a3cf8c..a3623a124f8726 100644 --- a/spec/features/users/login_spec.rb +++ b/spec/features/users/login_spec.rb @@ -1160,7 +1160,6 @@ def sign_in_using_saml! # page is shown. wait_for_requests - dismiss_welcome_banner_if_present(page) click_button _('Register authenticator') otp_secret = page.find('.two-factor-secret').text.gsub('Key:', '').delete(' ') current_otp = ROTP::TOTP.new(otp_secret).now @@ -1247,8 +1246,6 @@ def sign_in_using_saml! # Wait until the form has been initialized has_testid?('form-ready') - dismiss_welcome_banner_if_present(page) - fill_in 'Email', with: 'hello@world.com' click_button 'Update profile settings' diff --git a/spec/features/work_items/list/user_interacts_with_drawer_spec.rb b/spec/features/work_items/list/user_interacts_with_drawer_spec.rb index 7cb4a977119ce2..cc2e6141d3fd93 100644 --- a/spec/features/work_items/list/user_interacts_with_drawer_spec.rb +++ b/spec/features/work_items/list/user_interacts_with_drawer_spec.rb @@ -30,7 +30,6 @@ sign_in(user) visit project_work_items_path(project) - dismiss_welcome_banner_if_present(page) first_card.click @@ -61,7 +60,6 @@ sign_in(user) visit project_issues_path(project) - dismiss_welcome_banner_if_present(page) first_card.click @@ -100,7 +98,6 @@ sign_in(user) visit project_work_items_path(project) - dismiss_welcome_banner_if_present(page) first_card.click @@ -131,7 +128,6 @@ sign_in(user) visit project_issues_path(project) - dismiss_welcome_banner_if_present(page) first_card.click diff --git a/spec/frontend/super_sidebar/components/user_menu_spec.js b/spec/frontend/super_sidebar/components/user_menu_spec.js index 037db1c919c356..4f4e9308510232 100644 --- a/spec/frontend/super_sidebar/components/user_menu_spec.js +++ b/spec/frontend/super_sidebar/components/user_menu_spec.js @@ -4,11 +4,9 @@ import { nextTick } from 'vue'; import axios from '~/lib/utils/axios_utils'; import { mountExtended } from 'helpers/vue_test_utils_helper'; import { stubComponent } from 'helpers/stub_component'; -import { useLocalStorageSpy } from 'helpers/local_storage_helper'; import UserMenu from '~/super_sidebar/components/user_menu.vue'; import UserMenuProfileItem from '~/super_sidebar/components/user_menu_profile_item.vue'; import SetStatusModal from '~/set_status_modal/set_status_modal_wrapper.vue'; -import DapWelcomeModal from '~/dap_welcome_modal/dap_welcome_modal.vue'; import { mockTracking } from 'helpers/tracking_helper'; import { visitUrl } from '~/lib/utils/url_utility'; import * as Sentry from '~/sentry/sentry_browser_wrapper'; @@ -28,7 +26,6 @@ describe('UserMenu component', () => { const GlEmoji = { template: '' }; const findDropdown = () => wrapper.findComponent(GlDisclosureDropdown); const findSetStatusModal = () => wrapper.findComponent(SetStatusModal); - const findDapWelcomeModal = () => wrapper.findComponent(DapWelcomeModal); const showDropdown = () => findDropdown().vm.$emit('shown'); const findStopImpersonationButton = () => wrapper.findByTestId('stop-impersonation-btn'); @@ -524,39 +521,6 @@ describe('UserMenu component', () => { }); }); - describe('DAP welcome modal', () => { - useLocalStorageSpy(); - - it.each` - description | showDapWelcomeModal | modalVisibility - ${'shows DAP welcome modal'} | ${'true'} | ${true} - ${'does not show DAP welcome modal'} | ${'false'} | ${false} - `( - '$description when showDapWelcomeModal localStorageKey is set to $showDapWelcomeModal', - async ({ showDapWelcomeModal, modalVisibility }) => { - localStorage.setItem('showDapWelcomeModal', showDapWelcomeModal); - - createWrapper(); - - await nextTick(); - - expect(findDapWelcomeModal().exists()).toBe(modalVisibility); - }, - ); - - it('closing DAP welcome modal causes showDapWelcomeModal localStorage key set to `false`', async () => { - localStorage.setItem('showDapWelcomeModal', 'true'); - - createWrapper(); - - await nextTick(); - - findDapWelcomeModal().vm.$emit('close'); - - expect(localStorage.setItem).toHaveBeenCalledWith('showDapWelcomeModal', 'false'); - }); - }); - describe('GitLab Next item', () => { describe('on gitlab.com', () => { let item; diff --git a/spec/support/capybara_wait_for_requests.rb b/spec/support/capybara_wait_for_requests.rb index 4be4eee8e7da90..40259bc237d089 100644 --- a/spec/support/capybara_wait_for_requests.rb +++ b/spec/support/capybara_wait_for_requests.rb @@ -15,8 +15,6 @@ def visit(visit_uri, &block) yield if block wait_for_requests - - dismiss_welcome_banner_if_present(self) if respond_to?(:dismiss_welcome_banner_if_present) end end diff --git a/spec/support/helpers/login_helpers.rb b/spec/support/helpers/login_helpers.rb index 86f9e029261c5e..35f409c1b7c4f5 100644 --- a/spec/support/helpers/login_helpers.rb +++ b/spec/support/helpers/login_helpers.rb @@ -47,8 +47,6 @@ def gitlab_sign_in(user_or_role, **kwargs) gitlab_sign_in_with(user, **kwargs) @current_user = user - - dismiss_welcome_banner_if_present(page) end def gitlab_sign_in_via(provider, user, uid, saml_response = nil) @@ -67,8 +65,6 @@ def gitlab_enable_admin_mode_sign_in_via(provider, user, uid, saml_response: nil # Requires Javascript driver. def gitlab_sign_out(user = @current_user) - dismiss_welcome_banner_if_present(page) - if has_testid?('super-sidebar') click_on "#{user.name} user’s menu" else diff --git a/spec/support/helpers/project_studio_helpers.rb b/spec/support/helpers/project_studio_helpers.rb index 0526660e0a92fd..5d663d2a2fdc6b 100644 --- a/spec/support/helpers/project_studio_helpers.rb +++ b/spec/support/helpers/project_studio_helpers.rb @@ -1,16 +1,4 @@ # frozen_string_literal: true module ProjectStudioHelpers - def dismiss_welcome_banner_if_present(page) - modal_dismiss_button_selector = '#dap_welcome_modal header button[aria-label="Close"]' - - return unless page.respond_to?(:has_selector?) - - return unless page.has_selector?(modal_dismiss_button_selector, wait: 0) - - page.find(modal_dismiss_button_selector).click - - rescue Selenium::WebDriver::Error::StaleElementReferenceError - # Element became stale between finding and clicking - likely already dismissed - end end -- GitLab From 8e14a9f3781c7a888d1f6c81132bb4454ed77727 Mon Sep 17 00:00:00 2001 From: Buck OLeary Date: Fri, 12 Dec 2025 13:56:24 -0500 Subject: [PATCH 2/2] Updated project studio for removal --- spec/spec_helper.rb | 1 - spec/support/helpers/project_studio_helpers.rb | 4 ---- 2 files changed, 5 deletions(-) delete mode 100644 spec/support/helpers/project_studio_helpers.rb diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3f3ca8ce92f6c3..ecb246a2ebff7c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -230,7 +230,6 @@ include StubCurrentOrganization include StubFeatureFlags - include ProjectStudioHelpers include StubSnowplow include StubMember include VersionCheckHelpers diff --git a/spec/support/helpers/project_studio_helpers.rb b/spec/support/helpers/project_studio_helpers.rb deleted file mode 100644 index 5d663d2a2fdc6b..00000000000000 --- a/spec/support/helpers/project_studio_helpers.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true - -module ProjectStudioHelpers -end -- GitLab