diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/helpers/qa_helper.rb | 25 | ||||
-rw-r--r-- | app/views/devise/sessions/_new_base.html.haml | 6 | ||||
-rw-r--r-- | app/views/devise/shared/_tabs_normal.html.haml | 4 | ||||
-rw-r--r-- | app/views/layouts/header/_current_user_dropdown.html.haml | 4 | ||||
-rw-r--r-- | app/views/layouts/header/_default.html.haml | 6 | ||||
-rw-r--r-- | app/views/layouts/nav/_dashboard.html.haml | 6 | ||||
-rw-r--r-- | app/views/layouts/nav/groups_dropdown/_show.html.haml | 4 | ||||
-rw-r--r-- | app/views/layouts/nav/projects_dropdown/_show.html.haml | 4 |
8 files changed, 42 insertions, 17 deletions
diff --git a/app/helpers/qa_helper.rb b/app/helpers/qa_helper.rb new file mode 100644 index 00000000000..57eee9c144c --- /dev/null +++ b/app/helpers/qa_helper.rb @@ -0,0 +1,25 @@ +module QaHelper + # Define a data-qa attribute on the webpage + # + # Examples: + # qa('selector', 'username') + # qa('index', 1) + # + # Params: + # +attr+:: the data-qa-* attribute where * is the attribute to match + # +value+:: the value to set for data-qa-attr="value" + def qa(attr, value) + { "qa-#{attr}": value } + end + + # Shortcut method(s) for QA + # + # Examples: + # data: qa_selector('test') + # data: qa_index(1) + [:qa_selector].each do |qa_method| + define_method qa_method do |pattern| + qa("#{qa_method.to_s.split('_')[1]}", pattern) + end + end +end diff --git a/app/views/devise/sessions/_new_base.html.haml b/app/views/devise/sessions/_new_base.html.haml index 0ee563ac066..9ac89013631 100644 --- a/app/views/devise/sessions/_new_base.html.haml +++ b/app/views/devise/sessions/_new_base.html.haml @@ -1,10 +1,10 @@ = form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: 'new_user gl-show-field-errors', 'aria-live' => 'assertive'}) do |f| .form-group = f.label "Username or email", for: "user_login" - = f.text_field :login, class: "form-control top", autofocus: "autofocus", autocapitalize: "off", autocorrect: "off", required: true, title: "This field is required." + = f.text_field :login, class: "form-control top", data: qa_selector('txt_username'), autofocus: "autofocus", autocapitalize: "off", autocorrect: "off", required: true, title: "This field is required." .form-group = f.label :password - = f.password_field :password, class: "form-control bottom", required: true, title: "This field is required." + = f.password_field :password, class: "form-control bottom", data: qa_selector('txt_password'), required: true, title: "This field is required." - if devise_mapping.rememberable? .remember-me %label{ for: "user_remember_me" } @@ -17,4 +17,4 @@ = recaptcha_tags .submit-container.move-submit-down - = f.submit "Sign in", class: "btn btn-save" + = f.submit "Sign in", class: "btn btn-save", data: qa_selector('btn_signin') diff --git a/app/views/devise/shared/_tabs_normal.html.haml b/app/views/devise/shared/_tabs_normal.html.haml index 284d4fa1b89..13382491f81 100644 --- a/app/views/devise/shared/_tabs_normal.html.haml +++ b/app/views/devise/shared/_tabs_normal.html.haml @@ -1,6 +1,6 @@ %ul.nav-links.new-session-tabs.nav-tabs.nav{ role: 'tablist' } %li.nav-item{ role: 'presentation' } - %a.nav-link.active{ href: '#login-pane', data: { toggle: 'tab' }, role: 'tab' } Sign in + %a.nav-link.active{ href: '#login-pane', data: { toggle: 'tab' }.merge(qa_selector('tab_standard')), role: 'tab' } Sign in - if allow_signup? %li.nav-item{ role: 'presentation' } - %a.nav-link{ href: '#register-pane', data: { toggle: 'tab' }, role: 'tab' } Register + %a.nav-link{ href: '#register-pane', data: { toggle: 'tab' }.merge(qa_selector('tab_register')), role: 'tab' } Register diff --git a/app/views/layouts/header/_current_user_dropdown.html.haml b/app/views/layouts/header/_current_user_dropdown.html.haml index 9ed05d6e3d0..dfa471bf761 100644 --- a/app/views/layouts/header/_current_user_dropdown.html.haml +++ b/app/views/layouts/header/_current_user_dropdown.html.haml @@ -11,7 +11,7 @@ = link_to s_("CurrentUser|Profile"), current_user, class: 'profile-link', data: { user: current_user.username } - if current_user_menu?(:settings) %li - = link_to s_("CurrentUser|Settings"), profile_path + = link_to s_("CurrentUser|Settings"), profile_path, data: qa_selector('btn_settings') - if current_user_menu?(:help) %li = link_to _("Help"), help_path @@ -20,4 +20,4 @@ = render 'shared/user_dropdown_contributing_link' - if current_user_menu?(:sign_out) %li - = link_to _("Sign out"), destroy_user_session_path, class: "sign-out-link" + = link_to _("Sign out"), destroy_user_session_path, class: "sign-out-link", data: qa_selector('btn_signout') diff --git a/app/views/layouts/header/_default.html.haml b/app/views/layouts/header/_default.html.haml index e8d31992149..a8880f4bce8 100644 --- a/app/views/layouts/header/_default.html.haml +++ b/app/views/layouts/header/_default.html.haml @@ -1,4 +1,4 @@ -%header.navbar.navbar-gitlab.qa-navbar.navbar-expand-sm +%header.navbar.navbar-gitlab.navbar-expand-sm{data: qa_selector('navbar')} %a.sr-only.gl-accessibility{ href: "#content-body", tabindex: "1" } Skip to content .container-fluid .header-content @@ -50,9 +50,9 @@ - if header_link?(:user_dropdown) %li.nav-item.header-user.dropdown = link_to current_user, class: user_dropdown_class, data: { toggle: "dropdown" } do - = image_tag avatar_icon_for_user(current_user, 23), width: 23, height: 23, class: "header-user-avatar qa-user-avatar" + = image_tag avatar_icon_for_user(current_user, 23), width: 23, height: 23, class: "header-user-avatar", data: qa_selector('user_avatar') = sprite_icon('angle-down', css_class: 'caret-down') - .dropdown-menu.dropdown-menu-right + .dropdown-menu.dropdown-menu-right{data: qa_selector('drp_user')} = render 'layouts/header/current_user_dropdown' - if header_link?(:admin_impersonation) %li.nav-item.impersonation diff --git a/app/views/layouts/nav/_dashboard.html.haml b/app/views/layouts/nav/_dashboard.html.haml index 5e467c862ab..18635f9e910 100644 --- a/app/views/layouts/nav/_dashboard.html.haml +++ b/app/views/layouts/nav/_dashboard.html.haml @@ -1,6 +1,6 @@ %ul.list-unstyled.navbar-sub-nav - if dashboard_nav_link?(:projects) - = nav_link(path: ['root#index', 'projects#trending', 'projects#starred', 'dashboard/projects#index'], html_options: { id: 'nav-projects-dropdown', class: "home dropdown header-projects qa-projects-dropdown" }) do + = nav_link(path: ['root#index', 'projects#trending', 'projects#starred', 'dashboard/projects#index'], html_options: { id: 'nav-projects-dropdown', class: "home dropdown header-projects", data: qa_selector('drp_projects') }) do %button{ type: 'button', data: { toggle: "dropdown" } } = _('Projects') = sprite_icon('angle-down', css_class: 'caret-down') @@ -8,7 +8,7 @@ = render "layouts/nav/projects_dropdown/show" - if dashboard_nav_link?(:groups) - = nav_link(controller: ['dashboard/groups', 'explore/groups'], html_options: { id: 'nav-groups-dropdown', class: "home dropdown header-groups qa-groups-dropdown" }) do + = nav_link(controller: ['dashboard/groups', 'explore/groups'], html_options: { id: 'nav-groups-dropdown', class: "home dropdown header-groups", data: qa_selector('drp_groups') }) do %button{ type: 'button', data: { toggle: "dropdown" } } = _('Groups') = sprite_icon('angle-down', css_class: 'caret-down') @@ -72,7 +72,7 @@ = sprite_icon('chart', size: 18) - if current_user.admin? = nav_link(controller: 'admin/dashboard') do - = link_to admin_root_path, class: 'admin-icon qa-admin-area-link', title: _('Admin area'), aria: { label: _('Admin area') }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do + = link_to admin_root_path, class: 'admin-icon', title: _('Admin area'), aria: { label: _('Admin area') }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'}.merge(qa_selector('lnk_adminarea')) do = sprite_icon('admin', size: 18) - if Gitlab::Sherlock.enabled? %li diff --git a/app/views/layouts/nav/groups_dropdown/_show.html.haml b/app/views/layouts/nav/groups_dropdown/_show.html.haml index 3ce1fa6bcca..a34ebdaf6fe 100644 --- a/app/views/layouts/nav/groups_dropdown/_show.html.haml +++ b/app/views/layouts/nav/groups_dropdown/_show.html.haml @@ -1,9 +1,9 @@ - group_meta = { id: @group.id, name: @group.name, namespace: @group.full_name, web_url: group_path(@group), avatar_url: @group.avatar_url } if @group&.persisted? .frequent-items-dropdown-container - .frequent-items-dropdown-sidebar.qa-groups-dropdown-sidebar + .frequent-items-dropdown-sidebar{data: qa_selector('drp_groups_sidebar')} %ul = nav_link(path: 'dashboard/groups#index') do - = link_to dashboard_groups_path, class: 'qa-your-groups-link' do + = link_to dashboard_groups_path, data: qa_selector('drp_groups_sidebar_lnk_yourgroups') do = _('Your groups') = nav_link(path: 'groups#explore') do = link_to explore_groups_path do diff --git a/app/views/layouts/nav/projects_dropdown/_show.html.haml b/app/views/layouts/nav/projects_dropdown/_show.html.haml index f2170f71532..b9e37a73bb4 100644 --- a/app/views/layouts/nav/projects_dropdown/_show.html.haml +++ b/app/views/layouts/nav/projects_dropdown/_show.html.haml @@ -1,9 +1,9 @@ - project_meta = { id: @project.id, name: @project.name, namespace: @project.full_name, web_url: project_path(@project), avatar_url: @project.avatar_url } if @project&.persisted? .frequent-items-dropdown-container - .frequent-items-dropdown-sidebar.qa-projects-dropdown-sidebar + .frequent-items-dropdown-sidebar{data: qa_selector('drp_projects_sidebar')} %ul = nav_link(path: 'dashboard/projects#index') do - = link_to dashboard_projects_path, class: 'qa-your-projects-link' do + = link_to dashboard_projects_path, data: qa_selector('drp_projects_sidebar_lnk_yourprojects') do = _('Your projects') = nav_link(path: 'projects#starred') do = link_to starred_dashboard_projects_path do |