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