From c61c5cf2d973f9a9add71dbe876df42caa8e4bfe Mon Sep 17 00:00:00 2001 From: Mark Lapierre Date: Mon, 26 Nov 2018 10:59:52 -0500 Subject: [PATCH 1/4] Update E2E tests for Project overview UI changes Includes updates to how clone URLs are accessed. --- app/views/projects/buttons/_clone.html.haml | 6 +-- qa/qa.rb | 1 + qa/qa/page/component/clone_panel.rb | 31 ++++------- qa/qa/page/component/legacy_clone_panel.rb | 52 +++++++++++++++++++ qa/qa/page/project/wiki/show.rb | 2 +- qa/qa/resource/project.rb | 6 +-- qa/qa/resource/repository/project_push.rb | 16 +----- .../squash_merge_request_spec.rb | 7 ++- .../3_create/repository/clone_spec.rb | 18 +++---- 9 files changed, 83 insertions(+), 56 deletions(-) create mode 100644 qa/qa/page/component/legacy_clone_panel.rb diff --git a/app/views/projects/buttons/_clone.html.haml b/app/views/projects/buttons/_clone.html.haml index d82a3dd70f9..d453a3a9dac 100644 --- a/app/views/projects/buttons/_clone.html.haml +++ b/app/views/projects/buttons/_clone.html.haml @@ -10,12 +10,12 @@ %span.append-right-4.js-clone-dropdown-label = _('Clone') = sprite_icon("arrow-down", css_class: "icon") - %form.p-3.dropdown-menu.dropdown-menu-right.dropdown-menu-large.dropdown-menu-selectable.clone-options-dropdown + %form.p-3.dropdown-menu.dropdown-menu-right.dropdown-menu-large.dropdown-menu-selectable.clone-options-dropdown.qa-clone-options %li.pb-2 %label.label-bold = _('Clone with SSH') .input-group - = text_field_tag :ssh_project_clone, project.ssh_url_to_repo, class: "js-select-on-focus form-control", readonly: true, aria: { label: 'Project clone URL' } + = text_field_tag :ssh_project_clone, project.ssh_url_to_repo, class: "js-select-on-focus form-control qa-ssh-clone-url", readonly: true, aria: { label: 'Project clone URL' } .input-group-append = clipboard_button(target: '#ssh_project_clone', title: _("Copy URL to clipboard"), class: "input-group-text btn-default btn-clipboard") = render_if_exists 'projects/buttons/geo' @@ -23,7 +23,7 @@ %label.label-bold = _('Clone with %{http_label}') % { http_label: gitlab_config.protocol.upcase } .input-group - = text_field_tag :http_project_clone, project.http_url_to_repo, class: "js-select-on-focus form-control", readonly: true, aria: { label: 'Project clone URL' } + = text_field_tag :http_project_clone, project.http_url_to_repo, class: "js-select-on-focus form-control qa-http-clone-url", readonly: true, aria: { label: 'Project clone URL' } .input-group-append = clipboard_button(target: '#http_project_clone', title: _("Copy URL to clipboard"), class: "input-group-text btn-default btn-clipboard") = render_if_exists 'projects/buttons/geo' diff --git a/qa/qa.rb b/qa/qa.rb index 10a50f5cc72..22af365d65a 100644 --- a/qa/qa.rb +++ b/qa/qa.rb @@ -273,6 +273,7 @@ module QA # module Component autoload :ClonePanel, 'qa/page/component/clone_panel' + autoload :LegacyClonePanel, 'qa/page/component/legacy_clone_panel' autoload :Dropzone, 'qa/page/component/dropzone' autoload :GroupsFilter, 'qa/page/component/groups_filter' autoload :Select2, 'qa/page/component/select2' diff --git a/qa/qa/page/component/clone_panel.rb b/qa/qa/page/component/clone_panel.rb index 94e761b0e0c..d37b63c716a 100644 --- a/qa/qa/page/component/clone_panel.rb +++ b/qa/qa/page/component/clone_panel.rb @@ -5,26 +5,20 @@ module QA module Component module ClonePanel def self.included(base) - base.view 'app/views/shared/_clone_panel.html.haml' do + base.view 'app/views/projects/buttons/_clone.html.haml' do element :clone_dropdown - element :clone_options_dropdown, '.clone-options-dropdown' # rubocop:disable QA/ElementWithPattern - element :project_repository_location, 'text_field_tag :project_clone' # rubocop:disable QA/ElementWithPattern + element :clone_options + element :ssh_clone_url + element :http_clone_url end end - def choose_repository_clone_http - choose_repository_clone('HTTP', 'http') + def repository_clone_http_location + repository_clone_location(:http_clone_url) end - def choose_repository_clone_ssh - # It's not always beginning with ssh:// so detecting with @ - # would be more reliable because ssh would always contain it. - # We can't use .git because HTTP also contain that part. - choose_repository_clone('SSH', '@') - end - - def repository_location - Git::Location.new(find('#project_clone').value) + def repository_clone_ssh_location + repository_clone_location(:ssh_clone_url) end def wait_for_push @@ -34,16 +28,13 @@ module QA private - def choose_repository_clone(kind, detect_text) + def repository_clone_location(kind) wait(reload: false) do click_element :clone_dropdown - page.within('.clone-options-dropdown') do - click_link(kind) + within_element :clone_options do + Git::Location.new(find_element(kind).value) end - - # Ensure git clone textbox was updated - repository_location.git_uri.include?(detect_text) end end end diff --git a/qa/qa/page/component/legacy_clone_panel.rb b/qa/qa/page/component/legacy_clone_panel.rb new file mode 100644 index 00000000000..99132190f3f --- /dev/null +++ b/qa/qa/page/component/legacy_clone_panel.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +module QA + module Page + module Component + module LegacyClonePanel + def self.included(base) + base.view 'app/views/shared/_clone_panel.html.haml' do + element :clone_dropdown + element :clone_options_dropdown, '.clone-options-dropdown' # rubocop:disable QA/ElementWithPattern + element :project_repository_location, 'text_field_tag :project_clone' # rubocop:disable QA/ElementWithPattern + end + end + + def choose_repository_clone_http + choose_repository_clone('HTTP', 'http') + end + + def choose_repository_clone_ssh + # It's not always beginning with ssh:// so detecting with @ + # would be more reliable because ssh would always contain it. + # We can't use .git because HTTP also contain that part. + choose_repository_clone('SSH', '@') + end + + def repository_location + Git::Location.new(find('#project_clone').value) + end + + def wait_for_push + sleep 5 + refresh + end + + private + + def choose_repository_clone(kind, detect_text) + wait(reload: false) do + click_element :clone_dropdown + + page.within('.clone-options-dropdown') do + click_link(kind) + end + + # Ensure git clone textbox was updated + repository_location.git_uri.include?(detect_text) + end + end + end + end + end +end diff --git a/qa/qa/page/project/wiki/show.rb b/qa/qa/page/project/wiki/show.rb index a7c4455d080..dffbc5d60a2 100644 --- a/qa/qa/page/project/wiki/show.rb +++ b/qa/qa/page/project/wiki/show.rb @@ -5,7 +5,7 @@ module QA module Project module Wiki class Show < Page::Base - include Page::Component::ClonePanel + include Page::Component::LegacyClonePanel view 'app/views/projects/wikis/pages.html.haml' do element :clone_repository_link, 'Clone repository' # rubocop:disable QA/ElementWithPattern diff --git a/qa/qa/resource/project.rb b/qa/qa/resource/project.rb index 7fdf69278f9..1fafbf5d73e 100644 --- a/qa/qa/resource/project.rb +++ b/qa/qa/resource/project.rb @@ -14,15 +14,13 @@ module QA attribute :repository_ssh_location do Page::Project::Show.perform do |page| - page.choose_repository_clone_ssh - page.repository_location + page.repository_clone_ssh_location end end attribute :repository_http_location do Page::Project::Show.perform do |page| - page.choose_repository_clone_http - page.repository_location + page.repository_clone_http_location end end diff --git a/qa/qa/resource/repository/project_push.rb b/qa/qa/resource/repository/project_push.rb index c9fafe3419f..37feab4ad70 100644 --- a/qa/qa/resource/repository/project_push.rb +++ b/qa/qa/resource/repository/project_push.rb @@ -20,23 +20,11 @@ module QA end def repository_http_uri - @repository_http_uri ||= begin - project.visit! - Page::Project::Show.act do - choose_repository_clone_http - repository_location.uri - end - end + @repository_http_uri ||= project.repository_http_location.uri end def repository_ssh_uri - @repository_ssh_uri ||= begin - project.visit! - Page::Project::Show.act do - choose_repository_clone_ssh - repository_location.uri - end - end + @repository_ssh_uri ||= project.repository_ssh_location.uri end end end diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb index 6ff7360c413..4126f967ee2 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb @@ -5,7 +5,7 @@ module QA describe 'Merge request squashing' do it 'user squashes commits while merging' do Runtime::Browser.visit(:gitlab, Page::Main::Login) - Page::Main::Login.act { sign_in_using_credentials } + Page::Main::Login.perform(&:sign_in_using_credentials) project = Resource::Project.fabricate! do |project| project.name = "squash-before-merge" @@ -38,13 +38,12 @@ module QA Git::Repository.perform do |repository| repository.uri = Page::Project::Show.act do - choose_repository_clone_http - repository_location.uri + repository_clone_http_location.uri end repository.use_default_credentials - repository.act { clone } + repository.clone expect(repository.commits.size).to eq 3 end diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/clone_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/clone_spec.rb index 6a0add56fe0..571cae4a3c5 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/clone_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/clone_spec.rb @@ -4,15 +4,12 @@ module QA context 'Create' do describe 'Git clone over HTTP', :ldap_no_tls do let(:location) do - Page::Project::Show.act do - choose_repository_clone_http - repository_location - end + Page::Project::Show.perform(&:repository_clone_http_location).uri end before do Runtime::Browser.visit(:gitlab, Page::Main::Login) - Page::Main::Login.act { sign_in_using_credentials } + Page::Main::Login.perform(&:sign_in_using_credentials) project = Resource::Project.fabricate! do |scenario| scenario.name = 'project-with-code' @@ -21,7 +18,7 @@ module QA project.visit! Git::Repository.perform do |repository| - repository.uri = location.uri + repository.uri = location repository.use_default_credentials repository.act do @@ -32,14 +29,15 @@ module QA push_changes end end + Page::Project::Show.perform(&:wait_for_push) end it 'user performs a deep clone' do Git::Repository.perform do |repository| - repository.uri = location.uri + repository.uri = location repository.use_default_credentials - repository.act { clone } + repository.clone expect(repository.commits.size).to eq 2 end @@ -47,10 +45,10 @@ module QA it 'user performs a shallow clone' do Git::Repository.perform do |repository| - repository.uri = location.uri + repository.uri = location repository.use_default_credentials - repository.act { shallow_clone } + repository.shallow_clone expect(repository.commits.size).to eq 1 expect(repository.commits.first).to include 'Add Readme' From ed75b46cd9ae2fbc4dfd98447d659c771ddef23c Mon Sep 17 00:00:00 2001 From: Mark Lapierre Date: Wed, 28 Nov 2018 15:23:38 -0500 Subject: [PATCH 2/4] Update tests and Resources to use new file button The 'Create new' dropdown is no longer available on a blank project so use the 'New file' button instead. --- app/views/projects/empty.html.haml | 2 +- .../projects/tree/_tree_header.html.haml | 4 +- qa/qa/page/base.rb | 4 + qa/qa/page/project/show.rb | 89 +++++++++++-------- qa/qa/resource/file.rb | 2 +- .../repository/add_file_template_spec.rb | 14 ++- .../web_ide/add_file_template_spec.rb | 12 ++- 7 files changed, 74 insertions(+), 53 deletions(-) diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml index aa690b12eb7..081990ac9b7 100644 --- a/app/views/projects/empty.html.haml +++ b/app/views/projects/empty.html.haml @@ -32,7 +32,7 @@ .prepend-top-20 %nav.project-buttons - .scrolling-tabs-container.inner-page-scroll-tabs.is-smaller + .scrolling-tabs-container.inner-page-scroll-tabs.is-smaller.qa-quick-actions .fade-left= icon('angle-left') .fade-right= icon('angle-right') .nav-links.scrolling-tabs.quick-links diff --git a/app/views/projects/tree/_tree_header.html.haml b/app/views/projects/tree/_tree_header.html.haml index a89df6adfb3..4e9a119ac66 100644 --- a/app/views/projects/tree/_tree_header.html.haml +++ b/app/views/projects/tree/_tree_header.html.haml @@ -20,7 +20,7 @@ - if can_collaborate || can_create_mr_from_fork %li.breadcrumb-item - %a.btn.add-to-tree{ addtotree_toggle_attributes } + %a.btn.add-to-tree.qa-add-to-tree{ addtotree_toggle_attributes } = sprite_icon('plus', size: 16, css_class: 'float-left') = sprite_icon('arrow-down', size: 16, css_class: 'float-left') - if on_top_of_branch? @@ -30,7 +30,7 @@ %li.dropdown-header #{ _('This directory') } %li - = link_to project_new_blob_path(@project, @id) do + = link_to project_new_blob_path(@project, @id), class: 'qa-new-file-option' do #{ _('New file') } %li = link_to '#modal-upload-blob', { 'data-target' => '#modal-upload-blob', 'data-toggle' => 'modal' } do diff --git a/qa/qa/page/base.rb b/qa/qa/page/base.rb index f4bba3c9560..88ade66f47d 100644 --- a/qa/qa/page/base.rb +++ b/qa/qa/page/base.rb @@ -132,6 +132,10 @@ module QA Page::Element.new(name).selector_css end + def click_link_with_text(text) + click_link text + end + def self.path raise NotImplementedError end diff --git a/qa/qa/page/project/show.rb b/qa/qa/page/project/show.rb index d6dddf03ffb..99d849db439 100644 --- a/qa/qa/page/project/show.rb +++ b/qa/qa/page/project/show.rb @@ -6,6 +6,11 @@ module QA class Show < Page::Base include Page::Component::ClonePanel + view 'app/views/layouts/header/_new_dropdown.haml' do + element :new_menu_toggle + element :new_issue_link, "link_to _('New issue'), new_project_issue_path(@project)" # rubocop:disable QA/ElementWithPattern + end + view 'app/views/projects/_last_push.html.haml' do element :create_merge_request end @@ -14,14 +19,12 @@ module QA element :project_name end - view 'app/views/layouts/header/_new_dropdown.haml' do - element :new_menu_toggle - element :new_issue_link, "link_to _('New issue'), new_project_issue_path(@project)" # rubocop:disable QA/ElementWithPattern + view 'app/views/projects/_files.html.haml' do + element :tree_holder, '.tree-holder' # rubocop:disable QA/ElementWithPattern end - view 'app/views/shared/_ref_switcher.html.haml' do - element :branches_select - element :branches_dropdown + view 'app/views/projects/buttons/_dropdown.html.haml' do + element :create_new_dropdown end view 'app/views/projects/buttons/_fork.html.haml' do @@ -29,44 +32,50 @@ module QA element :fork_link, "link_to new_project_fork_path(@project)" # rubocop:disable QA/ElementWithPattern end - view 'app/views/projects/_files.html.haml' do - element :tree_holder, '.tree-holder' # rubocop:disable QA/ElementWithPattern - end - - view 'app/views/projects/buttons/_dropdown.html.haml' do - element :create_new_dropdown - element :new_file_option - end - - view 'app/views/projects/tree/_tree_header.html.haml' do - element :web_ide_button + view 'app/views/projects/empty.html.haml' do + element :quick_actions end view 'app/views/projects/tree/_tree_content.html.haml' do element :file_tree end - def project_name - find('.qa-project-name').text + view 'app/views/projects/tree/_tree_header.html.haml' do + element :add_to_tree + element :new_file_option + element :web_ide_button + end + + view 'app/views/shared/_ref_switcher.html.haml' do + element :branches_select + element :branches_dropdown + end + + def create_first_new_file! + within_element(:quick_actions) do + click_link_with_text 'New file' + end end def create_new_file! - click_element :create_new_dropdown + click_element :add_to_tree click_element :new_file_option end + def fork_project + click_on 'Fork' + end + def go_to_file(filename) within_element(:file_tree) do click_on filename end end - def switch_to_branch(branch_name) - find_element(:branches_select).click + def go_to_new_issue + click_element :new_menu_toggle - within_element(:branches_dropdown) do - click_on branch_name - end + click_link 'New issue' end def last_commit_content @@ -81,25 +90,27 @@ module QA click_element :create_merge_request end + def open_web_ide! + click_element :web_ide_button + end + + def project_name + find('.qa-project-name').text + end + + def switch_to_branch(branch_name) + find_element(:branches_select).click + + within_element(:branches_dropdown) do + click_on branch_name + end + end + def wait_for_import wait(reload: true) do has_css?('.tree-holder') end end - - def go_to_new_issue - click_element :new_menu_toggle - - click_link 'New issue' - end - - def fork_project - click_on 'Fork' - end - - def open_web_ide! - click_element :web_ide_button - end end end end diff --git a/qa/qa/resource/file.rb b/qa/qa/resource/file.rb index effc5a7940b..57e82ac19ad 100644 --- a/qa/qa/resource/file.rb +++ b/qa/qa/resource/file.rb @@ -22,7 +22,7 @@ module QA def fabricate! project.visit! - Page::Project::Show.perform(&:create_new_file!) + Page::Project::Show.perform(&:create_first_new_file!) Page::File::Form.perform do |page| page.add_name(@name) diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb index 297485dd81e..de5c535c757 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb @@ -7,7 +7,7 @@ module QA def login Runtime::Browser.visit(:gitlab, Page::Main::Login) - Page::Main::Login.act { sign_in_using_credentials } + Page::Main::Login.perform(&:sign_in_using_credentials) end before(:all) do @@ -18,7 +18,15 @@ module QA project.description = 'Add file templates via the Files view' end - Page::Main::Menu.act { sign_out } + # There's no 'New File' dropdown when the project is blank, so we first + # add a dummy file so that the dropdown will appear + Resource::File.fabricate! do |file| + file.project = @project + file.name = 'README.md' + file.content = '# Readme' + end + + Page::Main::Menu.perform(&:sign_out) end templates = [ @@ -55,7 +63,7 @@ module QA login @project.visit! - Page::Project::Show.act { create_new_file! } + Page::Project::Show.perform(&:create_new_file!) Page::File::Form.perform do |page| page.select_template template[:file_name], template[:name] end diff --git a/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb b/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb index e7374377104..f176ec31abd 100644 --- a/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb @@ -7,7 +7,7 @@ module QA def login Runtime::Browser.visit(:gitlab, Page::Main::Login) - Page::Main::Login.act { sign_in_using_credentials } + Page::Main::Login.perform(&:sign_in_using_credentials) end before(:all) do @@ -21,14 +21,14 @@ module QA # Add a file via the regular Files view because the Web IDE isn't # available unless there is a file present - Page::Project::Show.act { create_new_file! } + Page::Project::Show.perform(&:create_first_new_file!) Page::File::Form.perform do |page| page.add_name('dummy') page.add_content('Enable the Web IDE') page.commit_changes end - Page::Main::Menu.act { sign_out } + Page::Main::Menu.perform(&:sign_out) end templates = [ @@ -65,7 +65,7 @@ module QA login @project.visit! - Page::Project::Show.act { open_web_ide! } + Page::Project::Show.perform(&:open_web_ide!) Page::Project::WebIDE::Edit.perform do |page| page.create_new_file_from_template template[:file_name], template[:name] @@ -75,9 +75,7 @@ module QA expect(page).to have_button('Undo') expect(page).to have_content(content[0..100]) - Page::Project::WebIDE::Edit.perform do |page| - page.commit_changes - end + Page::Project::WebIDE::Edit.perform(&:commit_changes) expect(page).to have_content(template[:file_name]) expect(page).to have_content(content[0..100]) From a1d9a3c348a4b1438910b816636a6e6677460fe2 Mon Sep 17 00:00:00 2001 From: Mark Lapierre Date: Fri, 7 Dec 2018 19:27:48 -0500 Subject: [PATCH 3/4] Visit project page after pushing --- .../1_manage/project/view_project_activity_spec.rb | 10 +++++----- .../3_create/repository/push_over_http_spec.rb | 4 ++-- .../browser_ui/3_create/repository/use_ssh_key_spec.rb | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb index 275de3d332c..d4cedc9362d 100644 --- a/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb +++ b/qa/qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb @@ -5,17 +5,17 @@ module QA describe 'Project activity' do it 'user creates an event in the activity page upon Git push' do Runtime::Browser.visit(:gitlab, Page::Main::Login) - Page::Main::Login.act { sign_in_using_credentials } + Page::Main::Login.perform(&:sign_in_using_credentials) - Resource::Repository::ProjectPush.fabricate! do |push| + project_push = Resource::Repository::ProjectPush.fabricate! do |push| push.file_name = 'README.md' push.file_content = '# This is a test project' push.commit_message = 'Add README.md' end + project_push.project.visit! - Page::Project::Menu.act { go_to_activity } - - Page::Project::Activity.act { go_to_push_events } + Page::Project::Menu.perform(&:go_to_activity) + Page::Project::Activity.perform(&:go_to_push_events) expect(page).to have_content('pushed new branch master') end diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb index 92f596a44d9..ad6426df420 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb @@ -7,12 +7,12 @@ module QA Runtime::Browser.visit(:gitlab, Page::Main::Login) Page::Main::Login.act { sign_in_using_credentials } - Resource::Repository::ProjectPush.fabricate! do |push| + project_push = Resource::Repository::ProjectPush.fabricate! do |push| push.file_name = 'README.md' push.file_content = '# This is a test project' push.commit_message = 'Add README.md' end - + project_push.project.visit! Page::Project::Show.act { wait_for_push } expect(page).to have_content('README.md') diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb index 9c764424129..509a639c130 100644 --- a/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb @@ -16,13 +16,14 @@ module QA resource.title = key_title end - Resource::Repository::ProjectPush.fabricate! do |push| + project_push = Resource::Repository::ProjectPush.fabricate! do |push| push.ssh_key = key push.file_name = 'README.md' push.file_content = '# Test Use SSH Key' push.commit_message = 'Add README.md' end + project_push.project.visit! Page::Project::Show.act { wait_for_push } expect(page).to have_content('README.md') From 7aeddde12853e427a53f1c8220668cc860726e1d Mon Sep 17 00:00:00 2001 From: Mark Lapierre Date: Fri, 7 Dec 2018 19:31:42 -0500 Subject: [PATCH 4/4] Method go_to_activity isn't private Also order methods alphabetically --- qa/qa/page/project/menu.rb | 98 +++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/qa/qa/page/project/menu.rb b/qa/qa/page/project/menu.rb index cb4a10e1b6a..835e1ed00b5 100644 --- a/qa/qa/page/project/menu.rb +++ b/qa/qa/page/project/menu.rb @@ -29,11 +29,9 @@ module QA element :fly_out, "classList.add('fly-out-list')" # rubocop:disable QA/ElementWithPattern end - def click_repository_settings - hover_settings do - within_submenu do - click_link('Repository') - end + def click_ci_cd_pipelines + within_sidebar do + click_element :link_pipelines end end @@ -45,11 +43,9 @@ module QA end end - def click_operations_environments - hover_operations do - within_submenu do - click_element(:operations_environments_link) - end + def click_issues + within_sidebar do + click_link('Issues') end end @@ -61,6 +57,20 @@ module QA end end + def click_merge_requests + within_sidebar do + click_link('Merge Requests') + end + end + + def click_operations_environments + hover_operations do + within_submenu do + click_element(:operations_environments_link) + end + end + end + def click_operations_kubernetes hover_operations do within_submenu do @@ -69,21 +79,35 @@ module QA end end - def click_ci_cd_pipelines + def click_milestones within_sidebar do - click_element :link_pipelines + click_element :milestones_link end end - def go_to_settings + def click_repository within_sidebar do - click_on 'Settings' + click_link('Repository') end end - def click_issues + def click_repository_settings + hover_settings do + within_submenu do + click_link('Repository') + end + end + end + + def click_wiki within_sidebar do - click_link('Issues') + click_link('Wiki') + end + end + + def go_to_activity + within_sidebar do + click_on 'Activity' end end @@ -95,27 +119,9 @@ module QA end end - def click_merge_requests + def go_to_settings within_sidebar do - click_link('Merge Requests') - end - end - - def click_milestones - within_sidebar do - click_element :milestones_link - end - end - - def click_wiki - within_sidebar do - click_link('Wiki') - end - end - - def click_repository - within_sidebar do - click_link('Repository') + click_on 'Settings' end end @@ -129,14 +135,6 @@ module QA end end - def hover_settings - within_sidebar do - find('.qa-settings-item').hover - - yield - end - end - def hover_operations within_sidebar do find('.shortcuts-operations').hover @@ -145,15 +143,17 @@ module QA end end - def within_sidebar - page.within('.sidebar-top-level-items') do + def hover_settings + within_sidebar do + find('.qa-settings-item').hover + yield end end - def go_to_activity - within_sidebar do - click_on 'Activity' + def within_sidebar + page.within('.sidebar-top-level-items') do + yield end end