From e8fe00c66e2651d6b09ba9791ba33733d5a6bfbc Mon Sep 17 00:00:00 2001
From: Desiree Chevalier <dchevalier@gitlab.com>
Date: Thu, 15 Jun 2023 12:58:17 -0400
Subject: [PATCH] Update menu data qa selectors

Update e2e menu selectors from data-qa-selectors to data-testid
---
 .../header_search/components/app.vue          |  2 +-
 .../nav/components/new_nav_toggle.vue         |  2 +-
 .../nav/components/responsive_home.vue        |  2 +-
 .../nav/components/top_nav_app.vue            |  2 +-
 .../nav/components/top_nav_dropdown_menu.vue  |  1 -
 .../components/global_search.vue              |  1 -
 .../super_sidebar/components/user_bar.vue     |  4 +---
 .../super_sidebar/components/user_menu.vue    |  7 +++---
 .../components/user_name_group.vue            |  2 +-
 app/helpers/nav/new_dropdown_helper.rb        |  8 +++----
 app/helpers/nav/top_nav_helper.rb             | 12 +++++-----
 app/helpers/sidebars_helper.rb                |  2 +-
 app/views/layouts/_header_search.html.haml    |  2 +-
 .../header/_current_user_dropdown.html.haml   |  6 ++---
 app/views/layouts/header/_default.html.haml   | 18 +++++++--------
 .../layouts/header/_new_dropdown.html.haml    |  2 +-
 app/views/layouts/nav/_top_bar.html.haml      |  2 +-
 app/views/shared/nav/_sidebar.html.haml       |  2 +-
 app/views/shared/nav/_sidebar_menu.html.haml  |  2 +-
 .../shared/nav/_sidebar_menu_item.html.haml   |  2 +-
 ee/app/helpers/ee/nav/top_nav_helper.rb       |  2 +-
 ee/spec/helpers/nav/top_nav_helper_spec.rb    |  6 ++---
 lib/gitlab/nav/top_nav_menu_item.rb           |  2 +-
 .../user_settings/menus/access_tokens_menu.rb |  2 +-
 .../user_settings/menus/account_menu.rb       |  2 +-
 .../user_settings/menus/emails_menu.rb        |  2 +-
 .../user_settings/menus/password_menu.rb      |  2 +-
 .../user_settings/menus/ssh_keys_menu.rb      |  2 +-
 qa/qa/page/group/sub_menus/common.rb          |  2 +-
 qa/qa/page/main/menu.rb                       | 22 +++++++++----------
 spec/features/admin/users/user_spec.rb        |  4 ++--
 spec/features/nav/top_nav_spec.rb             |  2 +-
 spec/helpers/nav/new_dropdown_helper_spec.rb  | 10 ++++-----
 spec/helpers/nav/top_nav_helper_spec.rb       | 12 +++++-----
 spec/helpers/sidebars_helper_spec.rb          |  4 ++--
 35 files changed, 76 insertions(+), 81 deletions(-)

diff --git a/app/assets/javascripts/header_search/components/app.vue b/app/assets/javascripts/header_search/components/app.vue
index 8c7612f37ffc9..3cb0963e561e0 100644
--- a/app/assets/javascripts/header_search/components/app.vue
+++ b/app/assets/javascripts/header_search/components/app.vue
@@ -225,7 +225,7 @@ export default {
       v-model="searchText"
       role="searchbox"
       class="gl-z-index-1"
-      data-qa-selector="global_search_input"
+      data-testid="global_search_input"
       autocomplete="off"
       :placeholder="$options.i18n.SEARCH_GITLAB"
       :aria-activedescendant="currentFocusedId"
diff --git a/app/assets/javascripts/nav/components/new_nav_toggle.vue b/app/assets/javascripts/nav/components/new_nav_toggle.vue
index 9db123da40541..82302ec46024e 100644
--- a/app/assets/javascripts/nav/components/new_nav_toggle.vue
+++ b/app/assets/javascripts/nav/components/new_nav_toggle.vue
@@ -92,7 +92,7 @@ export default {
         :value="isEnabled"
         :label="$options.i18n.toggleLabel"
         label-position="hidden"
-        data-qa-selector="new_navigation_toggle"
+        data-testid="new_navigation_toggle"
       />
     </div>
   </li>
diff --git a/app/assets/javascripts/nav/components/responsive_home.vue b/app/assets/javascripts/nav/components/responsive_home.vue
index a80fda9636399..371b252a6ba53 100644
--- a/app/assets/javascripts/nav/components/responsive_home.vue
+++ b/app/assets/javascripts/nav/components/responsive_home.vue
@@ -55,7 +55,7 @@ export default {
         v-gl-tooltip="{ title: newDropdownViewModel.title }"
         :view-model="newDropdownViewModel"
         class="gl-ml-3"
-        data-qa-selector="mobile_new_dropdown"
+        data-testid="mobile_new_dropdown"
       />
     </header>
     <top-nav-menu-sections class="gl-h-full" :sections="menuSections" v-on="$listeners" />
diff --git a/app/assets/javascripts/nav/components/top_nav_app.vue b/app/assets/javascripts/nav/components/top_nav_app.vue
index ab9313f7041a8..22c77e9ae32a1 100644
--- a/app/assets/javascripts/nav/components/top_nav_app.vue
+++ b/app/assets/javascripts/nav/components/top_nav_app.vue
@@ -35,7 +35,7 @@ export default {
   <gl-nav class="navbar-sub-nav">
     <gl-nav-item-dropdown
       v-gl-tooltip.bottom="navData.menuTooltip"
-      data-qa-selector="navbar_dropdown"
+      data-testid="navbar_dropdown"
       data-qa-title="Menu"
       menu-class="gl-mt-3! gl-max-w-none! gl-max-h-none! gl-sm-w-auto! js-top-nav-dropdown-menu"
       toggle-class="top-nav-toggle js-top-nav-dropdown-toggle gl-px-3!"
diff --git a/app/assets/javascripts/nav/components/top_nav_dropdown_menu.vue b/app/assets/javascripts/nav/components/top_nav_dropdown_menu.vue
index 0f069670d094b..fa202a0574da6 100644
--- a/app/assets/javascripts/nav/components/top_nav_dropdown_menu.vue
+++ b/app/assets/javascripts/nav/components/top_nav_dropdown_menu.vue
@@ -87,7 +87,6 @@ export default {
       :slot-key="activeView"
       class="gl-w-grid-size-40 gl-overflow-hidden gl-p-3"
       data-testid="menu-subview"
-      data-qa-selector="menu_subview_container"
     >
       <template #projects>
         <top-nav-container-view
diff --git a/app/assets/javascripts/super_sidebar/components/global_search/components/global_search.vue b/app/assets/javascripts/super_sidebar/components/global_search/components/global_search.vue
index 30b10756ca923..51228ab2cbea5 100644
--- a/app/assets/javascripts/super_sidebar/components/global_search/components/global_search.vue
+++ b/app/assets/javascripts/super_sidebar/components/global_search/components/global_search.vue
@@ -275,7 +275,6 @@ export default {
           v-model="searchText"
           role="searchbox"
           data-testid="global-search-input"
-          data-qa-selector="global_search_input"
           autocomplete="off"
           :placeholder="searchPlaceholder"
           :aria-describedby="$options.SEARCH_INPUT_DESCRIPTION"
diff --git a/app/assets/javascripts/super_sidebar/components/user_bar.vue b/app/assets/javascripts/super_sidebar/components/user_bar.vue
index d3b2143aaa76e..0e156445f586b 100644
--- a/app/assets/javascripts/super_sidebar/components/user_bar.vue
+++ b/app/assets/javascripts/super_sidebar/components/user_bar.vue
@@ -130,7 +130,6 @@ export default {
         v-gl-tooltip.bottom.hover.html="searchTooltip"
         v-gl-modal="$options.SEARCH_MODAL_ID"
         data-testid="super-sidebar-search-button"
-        data-qa-selector="global_search_button"
         icon="search"
         :aria-label="$options.i18n.search"
         category="tertiary"
@@ -150,7 +149,6 @@ export default {
         category="tertiary"
         data-method="delete"
         data-testid="stop-impersonation-btn"
-        data-qa-selector="stop_impersonation_link"
       />
     </div>
     <div class="gl-display-flex gl-justify-content-space-between gl-px-3 gl-py-2 gl-gap-2">
@@ -189,7 +187,7 @@ export default {
         :count="userCounts.todos"
         :href="sidebarData.todos_dashboard_path"
         :label="$options.i18n.todoList"
-        data-qa-selector="todos_shortcut_button"
+        data-testid="todos_shortcut_button"
         data-track-action="click_link"
         data-track-label="todos_link"
         data-track-property="nav_core_menu"
diff --git a/app/assets/javascripts/super_sidebar/components/user_menu.vue b/app/assets/javascripts/super_sidebar/components/user_menu.vue
index 69a5a6c3f4a72..e921d836fe255 100644
--- a/app/assets/javascripts/super_sidebar/components/user_menu.vue
+++ b/app/assets/javascripts/super_sidebar/components/user_menu.vue
@@ -90,7 +90,7 @@ export default {
         text: this.$options.i18n.editProfile,
         href: this.data.settings.profile_path,
         extraAttrs: {
-          'data-qa-selector': 'edit_profile_link',
+          'data-testid': 'edit_profile_link',
           ...USER_MENU_TRACKING_DEFAULTS,
           'data-track-label': 'user_edit_profile',
         },
@@ -150,7 +150,7 @@ export default {
             href: this.data.sign_out_link,
             extraAttrs: {
               'data-method': 'post',
-              'data-qa-selector': 'sign_out_link',
+              'data-testid': 'sign_out_link',
               class: 'sign-out-link',
             },
           },
@@ -237,7 +237,6 @@ export default {
       ref="userDropdown"
       :dropdown-offset="dropdownOffset"
       data-testid="user-dropdown"
-      data-qa-selector="user_menu"
       :auto-close="false"
       @shown="onShow"
     >
@@ -249,7 +248,7 @@ export default {
             :entity-name="data.name"
             :src="data.avatar_url"
             aria-hidden="true"
-            data-qa-selector="user_avatar_content"
+            data-testid="user_avatar_content"
           />
           <span
             v-if="showNotificationDot"
diff --git a/app/assets/javascripts/super_sidebar/components/user_name_group.vue b/app/assets/javascripts/super_sidebar/components/user_name_group.vue
index 5836bed8bf667..f3e8816cd37b2 100644
--- a/app/assets/javascripts/super_sidebar/components/user_name_group.vue
+++ b/app/assets/javascripts/super_sidebar/components/user_name_group.vue
@@ -41,7 +41,7 @@ export default {
         item.extraAttrs = {
           ...USER_MENU_TRACKING_DEFAULTS,
           'data-track-label': 'user_profile',
-          'data-qa-selector': 'user_profile_link',
+          'data-testid': 'user_profile_link',
         };
       }
 
diff --git a/app/helpers/nav/new_dropdown_helper.rb b/app/helpers/nav/new_dropdown_helper.rb
index 201007863b220..306c4d8694ef5 100644
--- a/app/helpers/nav/new_dropdown_helper.rb
+++ b/app/helpers/nav/new_dropdown_helper.rb
@@ -70,7 +70,7 @@ def project_menu_section(project)
             id: 'new_issue',
             title: _('New issue'),
             href: new_project_issue_path(project),
-            data: { track_action: 'click_link_new_issue', track_label: 'plus_menu_dropdown', track_property: 'navigation_top', qa_selector: 'new_issue_link' }
+            data: { track_action: 'click_link_new_issue', track_label: 'plus_menu_dropdown', track_property: 'navigation_top', testid: 'new_issue_link' }
           )
         )
       end
@@ -116,7 +116,7 @@ def general_menu_section
             id: 'general_new_project',
             title: _('New project/repository'),
             href: new_project_path,
-            data: { track_action: 'click_link_new_project', track_label: 'plus_menu_dropdown', track_property: 'navigation_top', qa_selector: 'global_new_project_link' }
+            data: { track_action: 'click_link_new_project', track_label: 'plus_menu_dropdown', track_property: 'navigation_top', testid: 'global_new_project_link' }
           )
         )
       end
@@ -127,7 +127,7 @@ def general_menu_section
             id: 'general_new_group',
             title: _('New group'),
             href: new_group_path,
-            data: { track_action: 'click_link_new_group', track_label: 'plus_menu_dropdown', track_property: 'navigation_top', qa_selector: 'global_new_group_link' }
+            data: { track_action: 'click_link_new_group', track_label: 'plus_menu_dropdown', track_property: 'navigation_top', testid: 'global_new_group_link' }
           )
         )
       end
@@ -138,7 +138,7 @@ def general_menu_section
             id: 'general_new_snippet',
             title: _('New snippet'),
             href: new_snippet_path,
-            data: { track_action: 'click_link_new_snippet_parent', track_label: 'plus_menu_dropdown', track_property: 'navigation_top', qa_selector: 'global_new_snippet_link' }
+            data: { track_action: 'click_link_new_snippet_parent', track_label: 'plus_menu_dropdown', track_property: 'navigation_top', testid: 'global_new_snippet_link' }
           )
         )
       end
diff --git a/app/helpers/nav/top_nav_helper.rb b/app/helpers/nav/top_nav_helper.rb
index c41cf7f500f14..9d138c1debb44 100644
--- a/app/helpers/nav/top_nav_helper.rb
+++ b/app/helpers/nav/top_nav_helper.rb
@@ -109,7 +109,7 @@ def build_view_model(builder:, project:, group:)
         builder.add_primary_menu_item_with_shortcut(
           header: top_nav_localized_headers[:switch_to],
           active: nav == 'project' || active_nav_link?(path: %w[root#index projects#trending projects#starred dashboard/projects#index]),
-          data: { track_label: "projects_dropdown", track_action: "click_dropdown", track_property: "navigation_top", qa_selector: "projects_dropdown" },
+          data: { track_label: "projects_dropdown", track_action: "click_dropdown", track_property: "navigation_top", testid: "projects_dropdown" },
           view: PROJECTS_VIEW,
           shortcut_href: dashboard_projects_path,
           **projects_menu_item_attrs
@@ -123,7 +123,7 @@ def build_view_model(builder:, project:, group:)
         builder.add_primary_menu_item_with_shortcut(
           header: top_nav_localized_headers[:switch_to],
           active: nav == 'group' || active_nav_link?(path: %w[dashboard/groups explore/groups]),
-          data: { track_label: "groups_dropdown", track_action: "click_dropdown", track_property: "navigation_top", qa_selector: "groups_dropdown" },
+          data: { track_label: "groups_dropdown", track_action: "click_dropdown", track_property: "navigation_top", testid: "groups_dropdown" },
           view: GROUPS_VIEW,
           shortcut_href: dashboard_groups_path,
           **groups_menu_item_attrs
@@ -195,7 +195,7 @@ def build_view_model(builder:, project:, group:)
           active: active_nav_link?(controller: 'admin/dashboard'),
           icon: 'admin',
           href: admin_root_path,
-          data: { qa_selector: 'admin_area_link', **menu_data_tracking_attrs(title) }
+          data: { testid: 'admin_area_link', **menu_data_tracking_attrs(title) }
         )
       end
 
@@ -218,7 +218,7 @@ def build_view_model(builder:, project:, group:)
             active: active_nav_link?(controller: 'admin/sessions'),
             icon: 'lock',
             href: new_admin_session_path,
-            data: { qa_selector: 'menu_item_link', qa_title: title, **menu_data_tracking_attrs(title) }
+            data: { testid: 'menu_item_link', qa_title: title, **menu_data_tracking_attrs(title) }
           )
         end
       end
@@ -316,7 +316,7 @@ def projects_submenu_items(builder:)
         id: 'your',
         title: title,
         href: dashboard_projects_path,
-        data: { qa_selector: 'menu_item_link', qa_title: title, **menu_data_tracking_attrs(title) }
+        data: { testid: 'menu_item_link', qa_title: title, **menu_data_tracking_attrs(title) }
       )
     end
 
@@ -330,7 +330,7 @@ def groups_submenu
         id: 'your',
         title: title,
         href: dashboard_groups_path,
-        data: { qa_selector: 'menu_item_link', qa_title: title, **menu_data_tracking_attrs(title) }
+        data: { testid: 'menu_item_link', qa_title: title, **menu_data_tracking_attrs(title) }
       )
       builder.build
     end
diff --git a/app/helpers/sidebars_helper.rb b/app/helpers/sidebars_helper.rb
index aec5dad3207cc..3001a7ba44137 100644
--- a/app/helpers/sidebars_helper.rb
+++ b/app/helpers/sidebars_helper.rb
@@ -173,7 +173,7 @@ def create_new_menu_groups(group:, project:)
                      'data-track-label': item[:id],
                      'data-track-action': 'click_link',
                      'data-track-property': 'nav_create_menu',
-                     'data-qa-selector': 'create_menu_item',
+                     'data-testid': 'create_menu_item',
                      'data-qa-create-menu-item': item[:id]
                    }
                  }
diff --git a/app/views/layouts/_header_search.html.haml b/app/views/layouts/_header_search.html.haml
index 1d5f2583bbd62..add518723e5ea 100644
--- a/app/views/layouts/_header_search.html.haml
+++ b/app/views/layouts/_header_search.html.haml
@@ -9,7 +9,7 @@
       %input{ id: 'search', name: 'search', type: "text", placeholder: s_('GlobalSearch|Search GitLab'),
                                                           class: 'form-control gl-form-input gl-search-box-by-type-input',
                                                           autocomplete: 'off',
-                                                          data: { qa_selector: 'search_box' } }
+                                                          data: { testid: 'search_box' } }
 
     = hidden_field_tag :group_id, header_search_context[:group][:id] if header_search_context[:group]
     = hidden_field_tag :project_id, header_search_context[:project][:id] if header_search_context[:project]
diff --git a/app/views/layouts/header/_current_user_dropdown.html.haml b/app/views/layouts/header/_current_user_dropdown.html.haml
index 65dbafc19dab0..e04ffc2e88a06 100644
--- a/app/views/layouts/header/_current_user_dropdown.html.haml
+++ b/app/views/layouts/header/_current_user_dropdown.html.haml
@@ -3,7 +3,7 @@
 %ul
   %li.current-user
     - if current_user_menu?(:profile)
-      = link_to current_user, class: 'gl-line-height-20!', data: { user: current_user.username, testid: 'user-profile-link', track_action: "click_link", track_label: "user_profile", track_property: "navigation_top", qa_selector: 'user_profile_link' } do
+      = link_to current_user, class: 'gl-line-height-20!', data: { user: current_user.username, testid: 'user-profile-link', track_action: "click_link", track_label: "user_profile", track_property: "navigation_top" } do
         = render 'layouts/header/current_user_dropdown_item'
     - else
       .gl-py-3.gl-px-4
@@ -19,7 +19,7 @@
   = dispensable_render_if_exists 'layouts/header/start_trial'
   - if current_user_menu?(:settings)
     %li
-      = link_to s_("CurrentUser|Edit profile"), profile_path, data: { qa_selector: 'edit_profile_link', track_action: "click_link", track_label: "user_edit_profile", track_property: "navigation_top" }
+      = link_to s_("CurrentUser|Edit profile"), profile_path, data: { testid: 'edit_profile_link', track_action: "click_link", track_label: "user_edit_profile", track_property: "navigation_top" }
     %li
       = link_to s_("CurrentUser|Preferences"), profile_preferences_path, data: { track_action: "click_link", track_label: "user_preferences", track_property: "navigation_top" }
   = render_if_exists 'layouts/header/buy_pipeline_minutes', project: @project, namespace: @group
@@ -48,4 +48,4 @@
   - if current_user_menu?(:sign_out)
     %li.divider
     %li
-      = link_to _("Sign out"), destroy_user_session_path, method: :post, class: "sign-out-link", data: { qa_selector: 'sign_out_link', track_action: "click_link", track_label: "user_sign_out", track_property: "navigation_top" }
+      = link_to _("Sign out"), destroy_user_session_path, method: :post, class: "sign-out-link", data: { testid: 'sign_out_link', track_action: "click_link", track_label: "user_sign_out", track_property: "navigation_top" }
diff --git a/app/views/layouts/header/_default.html.haml b/app/views/layouts/header/_default.html.haml
index 2c6ccb4abaf04..1c22a853dd0fc 100644
--- a/app/views/layouts/header/_default.html.haml
+++ b/app/views/layouts/header/_default.html.haml
@@ -1,7 +1,7 @@
 - has_impersonation_link = header_link?(:admin_impersonation)
 - user_status_data = user_status_properties(current_user)
 
-%header.navbar.navbar-gitlab.navbar-expand-sm.js-navbar{ data: { qa_selector: 'navbar' } }
+%header.navbar.navbar-gitlab.navbar-expand-sm.js-navbar{ data: { testid: 'navbar' } }
   %a.gl-sr-only.gl-accessibility{ href: "#content-body" } Skip to content
   .container-fluid
     .header-content.js-header-content
@@ -12,7 +12,7 @@
             = brand_header_logo
         .gl-display-flex.gl-align-items-center
           - if Gitlab.com_and_canary?
-            = gl_badge_tag({ variant: :success, size: :sm }, { href: Gitlab::Saas.canary_toggle_com_url, data: { qa_selector: 'canary_badge_link' }, target: :_blank, rel: 'noopener noreferrer', class: 'canary-badge' }) do
+            = gl_badge_tag({ variant: :success, size: :sm }, { href: Gitlab::Saas.canary_toggle_com_url, data: { testid: 'canary_badge_link' }, target: :_blank, rel: 'noopener noreferrer', class: 'canary-badge' }) do
               = _('Next')
 
         - if current_user
@@ -47,7 +47,7 @@
           - if header_link?(:issues)
             = nav_link(path: 'dashboard#issues', html_options: { class: "user-counter" }) do
               = link_to assigned_issues_dashboard_path, title: _('Issues'), class: 'dashboard-shortcuts-issues js-prefetch-document', aria: { label: _('Issues') },
-                data: { qa_selector: 'issues_shortcut_button', toggle: 'tooltip', placement: 'bottom',
+                data: { testid: 'issues_shortcut_button', toggle: 'tooltip', placement: 'bottom',
                 track_label: 'main_navigation',
                 track_action: 'click_issues_link',
                 track_property: 'navigation_top',
@@ -60,7 +60,7 @@
             = nav_link(path: 'dashboard#merge_requests', html_options: { class: "user-counter dropdown" }) do
               - top_level_link = assigned_mrs_dashboard_path
               = link_to top_level_link, class: 'dashboard-shortcuts-merge_requests has-tooltip', title: _('Merge requests'), aria: { label: _('Merge requests') },
-                data: { qa_selector: 'merge_requests_shortcut_button',
+                data: { testid: 'merge_requests_shortcut_button',
                 toggle: "dropdown",
                 placement: 'bottom',
                 track_label: 'merge_requests_menu',
@@ -92,7 +92,7 @@
           - if header_link?(:todos)
             = nav_link(controller: 'dashboard/todos', html_options: { class: "user-counter" }) do
               = link_to dashboard_todos_path, title: _('To-Do List'), aria: { label: _('To-Do List') }, class: 'shortcuts-todos js-prefetch-document',
-                data: { qa_selector: 'todos_shortcut_button', toggle: 'tooltip', placement: 'bottom',
+                data: { testid: 'todos_shortcut_button', toggle: 'tooltip', placement: 'bottom',
                 track_label: 'main_navigation',
                 track_action: 'click_to_do_link',
                 track_property: 'navigation_top',
@@ -115,16 +115,16 @@
             %li.nav-item.gl-display-none.gl-sm-display-block
               = render "layouts/nav/top_nav"
           - if header_link?(:user_dropdown)
-            %li.nav-item.header-user.js-nav-user-dropdown.dropdown{ data: { qa_selector: 'user_menu', testid: 'user-menu' }, class: ('mr-0' if has_impersonation_link) }
+            %li.nav-item.header-user.js-nav-user-dropdown.dropdown{ data: { testid: 'user-dropdown' }, class: ('mr-0' if has_impersonation_link) }
               = link_to current_user, class: user_dropdown_class, data: { toggle: "dropdown", track_label: "profile_dropdown", track_action: "click_dropdown", track_property: "navigation_top" } do
-                = render Pajamas::AvatarComponent.new(current_user, size: 24, class: 'header-user-avatar', avatar_options: { data: { qa_selector: 'user_avatar_content' } })
+                = render Pajamas::AvatarComponent.new(current_user, size: 24, class: 'header-user-avatar', avatar_options: { data: { testid: 'user_avatar_content' } })
                 = render_if_exists 'layouts/header/user_notification_dot', project: project, namespace: group
                 = sprite_icon('chevron-down', css_class: 'caret-down')
               .dropdown-menu.dropdown-menu-right
                 = render 'layouts/header/current_user_dropdown'
           - if has_impersonation_link
             %li.nav-item.impersonation.ml-0
-              = render Pajamas::ButtonComponent.new(href: admin_impersonation_path, icon: 'incognito', button_options: { title: _('Stop impersonation'), class: 'impersonation-btn', aria: { label: _('Stop impersonation') }, data: { method: :delete, toggle: 'tooltip', placement: 'bottom', container: 'body', qa_selector: 'stop_impersonation_link' } })
+              = render Pajamas::ButtonComponent.new(href: admin_impersonation_path, icon: 'incognito', button_options: { title: _('Stop impersonation'), class: 'impersonation-btn', aria: { label: _('Stop impersonation') }, data: { method: :delete, toggle: 'tooltip', placement: 'bottom', container: 'body', testid: 'stop_impersonation_btn' } })
           - if header_link?(:sign_in)
             - if allow_signup?
               %li.nav-item
@@ -133,7 +133,7 @@
             %li.nav-item{ class: 'gl-flex-grow-0! gl-flex-basis-half!' }
               = link_to _('Sign in'), new_session_path(:user, redirect_to_referer: 'yes')
 
-      %button.navbar-toggler.d-block.d-sm-none{ type: 'button', class: 'gl-border-none!', data: { testid: 'top-nav-responsive-toggle', qa_selector: 'mobile_navbar_button' } }
+      %button.navbar-toggler.d-block.d-sm-none{ type: 'button', class: 'gl-border-none!', data: { testid: 'mobile_navbar_button' } }
         %span.sr-only= _('Toggle navigation')
         %span.more-icon.gl-px-3.gl-font-sm.gl-font-weight-bold
           %span.gl-pr-2= _('Menu')
diff --git a/app/views/layouts/header/_new_dropdown.html.haml b/app/views/layouts/header/_new_dropdown.html.haml
index 50a2b45aa7e11..3fe2894f2363d 100644
--- a/app/views/layouts/header/_new_dropdown.html.haml
+++ b/app/views/layouts/header/_new_dropdown.html.haml
@@ -13,7 +13,7 @@
     id: "js-onboarding-new-project-link",
     title: title, ref: 'tooltip', aria: { label: title },
     data: { toggle: 'dropdown', placement: 'bottom', container: 'body', display: 'static',
-            qa_selector: 'new_menu_toggle', testid: 'new-dropdown' } do
+            testid: 'new-menu-toggle' } do
     = sprite_icon('plus-square')
     = sprite_icon('chevron-down', css_class: 'caret-down')
   .dropdown-menu.dropdown-menu-right.dropdown-extended-height
diff --git a/app/views/layouts/nav/_top_bar.html.haml b/app/views/layouts/nav/_top_bar.html.haml
index a0e03c9c0cff4..4f7e321b3c53a 100644
--- a/app/views/layouts/nav/_top_bar.html.haml
+++ b/app/views/layouts/nav/_top_bar.html.haml
@@ -10,5 +10,5 @@
     - if show_super_sidebar?
       = render Pajamas::ButtonComponent.new(icon: 'sidebar', category: :tertiary, button_options: { class: 'js-super-sidebar-toggle-expand super-sidebar-toggle gl-ml-n3 gl-mr-2', title: _('Expand sidebar'), aria: { controls: 'super-sidebar', expanded: 'false', label: _('Navigation sidebar') } })
     - elsif defined?(@left_sidebar)
-      = render Pajamas::ButtonComponent.new(icon: 'sidebar', category: :tertiary, button_options: { class: 'toggle-mobile-nav gl-ml-n3 gl-mr-2', data: { qa_selector: 'toggle_mobile_nav_button' }, aria: { label: _('Open sidebar') } })
+      = render Pajamas::ButtonComponent.new(icon: 'sidebar', category: :tertiary, button_options: { class: 'toggle-mobile-nav gl-ml-n3 gl-mr-2', data: { testid: 'toggle_mobile_nav_button' }, aria: { label: _('Open sidebar') } })
     = render "layouts/nav/breadcrumbs/breadcrumbs"
diff --git a/app/views/shared/nav/_sidebar.html.haml b/app/views/shared/nav/_sidebar.html.haml
index 915352996d9c0..91b0582e04a33 100644
--- a/app/views/shared/nav/_sidebar.html.haml
+++ b/app/views/shared/nav/_sidebar.html.haml
@@ -1,6 +1,6 @@
 %aside.nav-sidebar{ class: ('sidebar-collapsed-desktop' if collapsed_sidebar?), **sidebar_tracking_attributes_by_object(sidebar.container), 'aria-label': sidebar.aria_label }
   .nav-sidebar-inner-scroll
-    %ul.sidebar-top-level-items{ data: { qa_selector: sidebar_qa_selector(sidebar.container) } }
+    %ul.sidebar-top-level-items{ data: { testid: sidebar_qa_selector(sidebar.container) } }
       - if sidebar.render_raw_scope_menu_partial
         = render sidebar.render_raw_scope_menu_partial
       - elsif sidebar.scope_menu
diff --git a/app/views/shared/nav/_sidebar_menu.html.haml b/app/views/shared/nav/_sidebar_menu.html.haml
index bc0648c14e031..27f77ed481314 100644
--- a/app/views/shared/nav/_sidebar_menu.html.haml
+++ b/app/views/shared/nav/_sidebar_menu.html.haml
@@ -2,7 +2,7 @@
   - if sidebar_menu.menu_with_partial?
     = render_if_exists sidebar_menu.menu_partial, **sidebar_menu.menu_partial_options
   - else
-    = link_to sidebar_menu.link, **sidebar_menu.link_html_options, data: { qa_selector: 'sidebar_menu_link', qa_menu_item: sidebar_menu.title } do
+    = link_to sidebar_menu.link, **sidebar_menu.link_html_options, data: { testid: 'sidebar_menu_link', qa_menu_item: sidebar_menu.title } do
       - if sidebar_menu.icon_or_image?
         %span.nav-icon-container
           - if sidebar_menu.image_path
diff --git a/app/views/shared/nav/_sidebar_menu_item.html.haml b/app/views/shared/nav/_sidebar_menu_item.html.haml
index eea3612774516..ef488d06e8707 100644
--- a/app/views/shared/nav/_sidebar_menu_item.html.haml
+++ b/app/views/shared/nav/_sidebar_menu_item.html.haml
@@ -1,5 +1,5 @@
 = nav_link(**sidebar_menu_item.active_routes, html_options: sidebar_menu_item.nav_link_html_options) do
-  = link_to sidebar_menu_item.link, **sidebar_menu_item.link_html_options, data: { qa_selector: 'sidebar_menu_item_link', qa_menu_item: sidebar_menu_item.title } do
+  = link_to sidebar_menu_item.link, **sidebar_menu_item.link_html_options, data: { testid: 'sidebar_menu_item_link', qa_menu_item: sidebar_menu_item.title } do
     %span.gl-flex-grow-1
       = sidebar_menu_item.title
       - if sidebar_menu_item.sprite_icon
diff --git a/ee/app/helpers/ee/nav/top_nav_helper.rb b/ee/app/helpers/ee/nav/top_nav_helper.rb
index 8318c8d268982..d204f62f6de80 100644
--- a/ee/app/helpers/ee/nav/top_nav_helper.rb
+++ b/ee/app/helpers/ee/nav/top_nav_helper.rb
@@ -51,7 +51,7 @@ def build_view_model(builder:, project:, group:)
             id: 'geo',
             title: title,
             icon: 'location-dot',
-            data: { qa_selector: 'menu_item_link', qa_title: title, **menu_data_tracking_attrs(title) },
+            data: { testid: 'menu_item_link', qa_title: title, **menu_data_tracking_attrs(title) },
             href: ::Gitlab::Geo.primary_node_url
           )
         end
diff --git a/ee/spec/helpers/nav/top_nav_helper_spec.rb b/ee/spec/helpers/nav/top_nav_helper_spec.rb
index 6eb4364aad2bf..c3af46b46f195 100644
--- a/ee/spec/helpers/nav/top_nav_helper_spec.rb
+++ b/ee/spec/helpers/nav/top_nav_helper_spec.rb
@@ -108,7 +108,7 @@
       it 'has expected :secondary' do
         expected_secondary = ::Gitlab::Nav::TopNavMenuItem.build(
           data: {
-            qa_selector: 'menu_item_link',
+            testid: 'menu_item_link',
             qa_title: 'Go to primary site',
             **menu_data_tracking_attrs('go_to_primary_site')
           },
@@ -134,7 +134,7 @@
             track_action: 'click_dropdown',
             track_label: 'projects_dropdown',
             track_property: 'navigation_top',
-            qa_selector: 'projects_dropdown'
+            testid: 'projects_dropdown'
           },
           icon: 'project',
           id: 'project',
@@ -153,7 +153,7 @@
           expected_links_primary = [
             ::Gitlab::Nav::TopNavMenuItem.build(
               data: {
-                qa_selector: 'menu_item_link',
+                testid: 'menu_item_link',
                 qa_title: 'View all projects',
                 **menu_data_tracking_attrs('view_all_projects')
               },
diff --git a/lib/gitlab/nav/top_nav_menu_item.rb b/lib/gitlab/nav/top_nav_menu_item.rb
index a83cdbe15df3b..e7790fd77d0d3 100644
--- a/lib/gitlab/nav/top_nav_menu_item.rb
+++ b/lib/gitlab/nav/top_nav_menu_item.rb
@@ -21,7 +21,7 @@ def self.build(
           href: href,
           view: view.to_s,
           css_class: css_class,
-          data: data || { qa_selector: 'menu_item_link', qa_title: title },
+          data: data || { testid: 'menu_item_link', qa_title: title },
           partial: partial,
           component: component
         }
diff --git a/lib/sidebars/user_settings/menus/access_tokens_menu.rb b/lib/sidebars/user_settings/menus/access_tokens_menu.rb
index f52be22e044be..ed39b5d6720dd 100644
--- a/lib/sidebars/user_settings/menus/access_tokens_menu.rb
+++ b/lib/sidebars/user_settings/menus/access_tokens_menu.rb
@@ -31,7 +31,7 @@ def active_routes
 
         override :extra_container_html_options
         def extra_container_html_options
-          { 'data-qa-selector': 'access_token_link' }
+          { 'data-testid': 'access_token_link' }
         end
       end
     end
diff --git a/lib/sidebars/user_settings/menus/account_menu.rb b/lib/sidebars/user_settings/menus/account_menu.rb
index a26dee83da3bb..53e8b60ea4dd1 100644
--- a/lib/sidebars/user_settings/menus/account_menu.rb
+++ b/lib/sidebars/user_settings/menus/account_menu.rb
@@ -28,7 +28,7 @@ def active_routes
 
         override :extra_container_html_options
         def extra_container_html_options
-          { 'data-qa-selector': 'profile_account_link' }
+          { 'data-testid': 'profile_account_link' }
         end
       end
     end
diff --git a/lib/sidebars/user_settings/menus/emails_menu.rb b/lib/sidebars/user_settings/menus/emails_menu.rb
index 3b6b4ae1daff1..7df7a76238e90 100644
--- a/lib/sidebars/user_settings/menus/emails_menu.rb
+++ b/lib/sidebars/user_settings/menus/emails_menu.rb
@@ -28,7 +28,7 @@ def active_routes
 
         override :extra_container_html_options
         def extra_container_html_options
-          { 'data-qa-selector': 'profile_emails_link' }
+          { 'data-testid': 'profile_emails_link' }
         end
       end
     end
diff --git a/lib/sidebars/user_settings/menus/password_menu.rb b/lib/sidebars/user_settings/menus/password_menu.rb
index 9a53e0c727e4e..e518e1f8bf75b 100644
--- a/lib/sidebars/user_settings/menus/password_menu.rb
+++ b/lib/sidebars/user_settings/menus/password_menu.rb
@@ -31,7 +31,7 @@ def active_routes
 
         override :extra_container_html_options
         def extra_container_html_options
-          { 'data-qa-selector': 'profile_password_link' }
+          { 'data-testid': 'profile_password_link' }
         end
       end
     end
diff --git a/lib/sidebars/user_settings/menus/ssh_keys_menu.rb b/lib/sidebars/user_settings/menus/ssh_keys_menu.rb
index 8d92db0147af5..bd3cbe30e64f2 100644
--- a/lib/sidebars/user_settings/menus/ssh_keys_menu.rb
+++ b/lib/sidebars/user_settings/menus/ssh_keys_menu.rb
@@ -28,7 +28,7 @@ def active_routes
 
         override :extra_container_html_options
         def extra_container_html_options
-          { 'data-qa-selector': 'ssh_keys_link' }
+          { 'data-testid': 'ssh_keys_link' }
         end
       end
     end
diff --git a/qa/qa/page/group/sub_menus/common.rb b/qa/qa/page/group/sub_menus/common.rb
index 3cbca3db35970..6369306da3f52 100644
--- a/qa/qa/page/group/sub_menus/common.rb
+++ b/qa/qa/page/group/sub_menus/common.rb
@@ -13,7 +13,7 @@ def self.included(base)
 
             base.class_eval do
               view 'app/views/shared/nav/_sidebar.html.haml' do
-                element :group_sidebar, 'qa_selector: sidebar_qa_selector(sidebar.container)' # rubocop:disable QA/ElementWithPattern
+                element :group_sidebar, 'testid: sidebar_qa_selector(sidebar.container)' # rubocop:disable QA/ElementWithPattern
               end
             end
           end
diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb
index 7e0337035e3a0..bd2948ed39ad2 100644
--- a/qa/qa/page/main/menu.rb
+++ b/qa/qa/page/main/menu.rb
@@ -20,7 +20,7 @@ class Menu < Page::Base
           end
 
           view 'app/assets/javascripts/super_sidebar/components/user_menu.vue' do
-            element :user_menu, required: !Runtime::Env.phone_layout?
+            element :user_dropdown, required: !Runtime::Env.phone_layout?
             element :user_avatar_content, required: !Runtime::Env.phone_layout?
             element :sign_out_link
             element :edit_profile_link
@@ -31,8 +31,8 @@ class Menu < Page::Base
           end
 
           view 'app/assets/javascripts/super_sidebar/components/user_bar.vue' do
-            element :global_search_button
-            element :stop_impersonation_link
+            element :super_sidebar_search_button
+            element :stop_impersonation_btn
           end
 
           view 'app/assets/javascripts/super_sidebar/components/global_search/components/global_search.vue' do
@@ -43,8 +43,8 @@ class Menu < Page::Base
             element :navbar, required: true
             element :canary_badge_link
             element :user_avatar_content, required: !Runtime::Env.phone_layout?
-            element :user_menu, required: !Runtime::Env.phone_layout?
-            element :stop_impersonation_link
+            element :user_dropdown, required: !Runtime::Env.phone_layout?
+            element :stop_impersonation_btn
             element :issues_shortcut_button, required: !Runtime::Env.phone_layout?
             element :merge_requests_shortcut_button, required: !Runtime::Env.phone_layout?
             element :todos_shortcut_button, required: !Runtime::Env.phone_layout?
@@ -62,7 +62,7 @@ class Menu < Page::Base
         end
 
         view 'app/assets/javascripts/nav/components/top_nav_dropdown_menu.vue' do
-          element :menu_subview_container
+          element :menu_subview
         end
 
         view 'lib/gitlab/nav/top_nav_menu_item.rb' do
@@ -240,7 +240,7 @@ def click_user_profile_link
         end
 
         def search_for(term)
-          click_element(Runtime::Env.super_sidebar_enabled? ? :global_search_button : :search_box)
+          click_element(Runtime::Env.super_sidebar_enabled? ? :super_sidebar_search_button : :search_box)
           fill_element(:global_search_input, "#{term}\n")
         end
 
@@ -262,7 +262,7 @@ def has_admin_area_link?(wait: Capybara.default_max_wait_time)
         end
 
         def click_stop_impersonation_link
-          click_element(:stop_impersonation_link)
+          click_element(:stop_impersonation_btn)
         end
 
         # To verify whether the user has been directed to a canary web node
@@ -293,20 +293,20 @@ def within_user_menu(&block)
           within_top_menu do
             click_element :user_avatar_content unless has_element?(:user_profile_link, wait: 1)
 
-            within_element(:user_menu, &block)
+            within_element(:user_dropdown, &block)
           end
         end
 
         def within_groups_menu(&block)
           go_to_menu_dropdown_option(:groups_dropdown)
 
-          within_element(:menu_subview_container, &block)
+          within_element(:menu_subview, &block)
         end
 
         def within_projects_menu(&block)
           go_to_menu_dropdown_option(:projects_dropdown)
 
-          within_element(:menu_subview_container, &block)
+          within_element(:menu_subview, &block)
         end
 
         def click_admin_area
diff --git a/spec/features/admin/users/user_spec.rb b/spec/features/admin/users/user_spec.rb
index f8f1fdaabb407..a95fd13313323 100644
--- a/spec/features/admin/users/user_spec.rb
+++ b/spec/features/admin/users/user_spec.rb
@@ -260,7 +260,7 @@
         it 'logs in as the user when impersonate is clicked' do
           subject
 
-          find('[data-testid="user-menu"]').click
+          find('[data-testid="user-dropdown"]').click
 
           expect(page.find(:css, '[data-testid="user-profile-link"]')['data-user']).to eql(another_user.username)
         end
@@ -317,7 +317,7 @@
         it 'logs out of impersonated user back to original user' do
           subject
 
-          find('[data-testid="user-menu"]').click
+          find('[data-testid="user-dropdown"]').click
 
           expect(page.find(:css, '[data-testid="user-profile-link"]')['data-user']).to eq(current_user.username)
         end
diff --git a/spec/features/nav/top_nav_spec.rb b/spec/features/nav/top_nav_spec.rb
index 74022a4a976b1..ccbf464627306 100644
--- a/spec/features/nav/top_nav_spec.rb
+++ b/spec/features/nav/top_nav_spec.rb
@@ -44,7 +44,7 @@
   end
 
   def invite_members_from_menu
-    find('[data-testid="new-dropdown"]').click
+    find('[data-testid="new-menu-toggle"]').click
 
     click_link('Invite members')
   end
diff --git a/spec/helpers/nav/new_dropdown_helper_spec.rb b/spec/helpers/nav/new_dropdown_helper_spec.rb
index 5ae057dc97d2b..26dadd3b4f120 100644
--- a/spec/helpers/nav/new_dropdown_helper_spec.rb
+++ b/spec/helpers/nav/new_dropdown_helper_spec.rb
@@ -81,7 +81,7 @@
                   track_action: 'click_link_new_project',
                   track_label: 'plus_menu_dropdown',
                   track_property: 'navigation_top',
-                  qa_selector: 'global_new_project_link'
+                  testid: 'global_new_project_link'
                 }
               )
             )
@@ -104,7 +104,7 @@
                   track_action: 'click_link_new_group',
                   track_label: 'plus_menu_dropdown',
                   track_property: 'navigation_top',
-                  qa_selector: 'global_new_group_link'
+                  testid: 'global_new_group_link'
                 }
               )
             )
@@ -127,7 +127,7 @@
                   track_action: 'click_link_new_snippet_parent',
                   track_label: 'plus_menu_dropdown',
                   track_property: 'navigation_top',
-                  qa_selector: 'global_new_snippet_link'
+                  testid: 'global_new_snippet_link'
                 }
               )
             )
@@ -256,7 +256,7 @@
                   track_action: 'click_link_new_issue',
                   track_label: 'plus_menu_dropdown',
                   track_property: 'navigation_top',
-                  qa_selector: 'new_issue_link'
+                  testid: 'new_issue_link'
                 }
               )
             )
@@ -340,7 +340,7 @@
               track_action: 'click_link_new_issue',
               track_label: 'plus_menu_dropdown',
               track_property: 'navigation_top',
-              qa_selector: 'new_issue_link'
+              testid: 'new_issue_link'
             }
           )
         )
diff --git a/spec/helpers/nav/top_nav_helper_spec.rb b/spec/helpers/nav/top_nav_helper_spec.rb
index 252423aa98872..e2a0c11e7cb93 100644
--- a/spec/helpers/nav/top_nav_helper_spec.rb
+++ b/spec/helpers/nav/top_nav_helper_spec.rb
@@ -133,7 +133,7 @@
               track_action: 'click_dropdown',
               track_label: 'projects_dropdown',
               track_property: 'navigation_top',
-              qa_selector: 'projects_dropdown'
+              testid: 'projects_dropdown'
             },
             icon: 'project',
             id: 'project',
@@ -166,7 +166,7 @@
             expected_links_primary = [
               ::Gitlab::Nav::TopNavMenuItem.build(
                 data: {
-                  qa_selector: 'menu_item_link',
+                  testid: 'menu_item_link',
                   qa_title: 'View all projects',
                   **menu_data_tracking_attrs('view_all_projects')
                 },
@@ -231,7 +231,7 @@
               track_action: 'click_dropdown',
               track_label: 'groups_dropdown',
               track_property: 'navigation_top',
-              qa_selector: 'groups_dropdown'
+              testid: 'groups_dropdown'
             },
             icon: 'group',
             id: 'groups',
@@ -264,7 +264,7 @@
             expected_links_primary = [
               ::Gitlab::Nav::TopNavMenuItem.build(
                 data: {
-                  qa_selector: 'menu_item_link',
+                  testid: 'menu_item_link',
                   qa_title: 'View all groups',
                   **menu_data_tracking_attrs('view_all_groups')
                 },
@@ -375,7 +375,7 @@
       it 'has admin as first :secondary item' do
         expected_admin_item = ::Gitlab::Nav::TopNavMenuItem.build(
           data: {
-            qa_selector: 'admin_area_link',
+            testid: 'admin_area_link',
             **menu_data_tracking_attrs('admin')
           },
           id: 'admin',
@@ -408,7 +408,7 @@
         it 'has enter_admin_mode as last :secondary item' do
           expected_enter_admin_mode_item = ::Gitlab::Nav::TopNavMenuItem.build(
             data: {
-              qa_selector: 'menu_item_link',
+              testid: 'menu_item_link',
               qa_title: 'Enter admin mode',
               **menu_data_tracking_attrs('enter_admin_mode')
             },
diff --git a/spec/helpers/sidebars_helper_spec.rb b/spec/helpers/sidebars_helper_spec.rb
index 84cecfaa7a1a9..fa259f244bd8b 100644
--- a/spec/helpers/sidebars_helper_spec.rb
+++ b/spec/helpers/sidebars_helper_spec.rb
@@ -251,7 +251,7 @@
           "data-track-label": id,
           "data-track-action": "click_link",
           "data-track-property": "nav_create_menu",
-          "data-qa-selector": 'create_menu_item',
+          "data-testid": 'create_menu_item',
           "data-qa-create-menu-item": id
         }
       }
@@ -280,7 +280,7 @@
           "data-track-label": id,
           "data-track-action": "click_link",
           "data-track-property": "nav_create_menu",
-          "data-qa-selector": 'create_menu_item',
+          "data-testid": 'create_menu_item',
           "data-qa-create-menu-item": id
         }
       }
-- 
GitLab