diff options
Diffstat (limited to 'qa')
-rw-r--r-- | qa/qa.rb | 6 | ||||
-rw-r--r-- | qa/qa/factory/resource/merge_request.rb | 11 | ||||
-rw-r--r-- | qa/qa/factory/resource/project_milestone.rb | 36 | ||||
-rw-r--r-- | qa/qa/page/menu/side.rb | 7 | ||||
-rw-r--r-- | qa/qa/page/merge_request/new.rb | 15 | ||||
-rw-r--r-- | qa/qa/page/merge_request/show.rb | 6 | ||||
-rw-r--r-- | qa/qa/page/project/milestone/index.rb | 17 | ||||
-rw-r--r-- | qa/qa/page/project/milestone/new.rb | 27 | ||||
-rw-r--r-- | qa/qa/page/project/settings/protected_branches.rb | 6 | ||||
-rw-r--r-- | qa/qa/runtime/browser.rb | 4 | ||||
-rw-r--r-- | qa/qa/runtime/namespace.rb | 2 | ||||
-rw-r--r-- | qa/qa/specs/features/merge_request/create_spec.rb | 24 |
12 files changed, 152 insertions, 9 deletions
@@ -49,6 +49,7 @@ module QA autoload :PersonalAccessToken, 'qa/factory/resource/personal_access_token' autoload :KubernetesCluster, 'qa/factory/resource/kubernetes_cluster' autoload :User, 'qa/factory/resource/user' + autoload :ProjectMilestone, 'qa/factory/resource/project_milestone' autoload :Wiki, 'qa/factory/resource/wiki' autoload :Fork, 'qa/factory/resource/fork' end @@ -174,6 +175,11 @@ module QA autoload :New, 'qa/page/project/fork/new' end + module Milestone + autoload :New, 'qa/page/project/milestone/new' + autoload :Index, 'qa/page/project/milestone/index' + end + module Operations module Kubernetes autoload :Index, 'qa/page/project/operations/kubernetes/index' diff --git a/qa/qa/factory/resource/merge_request.rb b/qa/qa/factory/resource/merge_request.rb index 24d3597d993..ddb62bd0a68 100644 --- a/qa/qa/factory/resource/merge_request.rb +++ b/qa/qa/factory/resource/merge_request.rb @@ -7,7 +7,10 @@ module QA attr_accessor :title, :description, :source_branch, - :target_branch + :target_branch, + :assignee, + :milestone, + :labels product :project do |factory| factory.project @@ -41,16 +44,18 @@ module QA @description = 'This is a test merge request' @source_branch = "qa-test-feature-#{SecureRandom.hex(8)}" @target_branch = "master" + @assignee = nil + @milestone = nil + @labels = [] end def fabricate! project.visit! - Page::Project::Show.act { new_merge_request } - Page::MergeRequest::New.perform do |page| page.fill_title(@title) page.fill_description(@description) + page.choose_milestone(@milestone) if @milestone page.create_merge_request end end diff --git a/qa/qa/factory/resource/project_milestone.rb b/qa/qa/factory/resource/project_milestone.rb new file mode 100644 index 00000000000..47a5e74204f --- /dev/null +++ b/qa/qa/factory/resource/project_milestone.rb @@ -0,0 +1,36 @@ +module QA + module Factory + module Resource + class ProjectMilestone < Factory::Base + attr_accessor :description + attr_reader :title + + dependency Factory::Resource::Project, as: :project + + product(:title) { |factory| factory.title } + + def title=(title) + @title = "#{title}-#{SecureRandom.hex(4)}" + @description = 'A milestone' + end + + def fabricate! + project.visit! + + Page::Menu::Side.act do + click_issues + click_milestones + end + + Page::Project::Milestone::Index.act { click_new_milestone } + + Page::Project::Milestone::New.perform do |milestone_new| + milestone_new.set_title(@title) + milestone_new.set_description(@description) + milestone_new.create_new_milestone + end + end + end + end + end +end diff --git a/qa/qa/page/menu/side.rb b/qa/qa/page/menu/side.rb index 333d871c51a..c14a835c2c9 100644 --- a/qa/qa/page/menu/side.rb +++ b/qa/qa/page/menu/side.rb @@ -16,6 +16,7 @@ module QA element :operations_section, "class: 'shortcuts-operations'" element :activity_link, "title: 'Activity'" element :wiki_link_text, "Wiki" + element :milestones_link end view 'app/assets/javascripts/fly_out_nav.js' do @@ -70,6 +71,12 @@ module QA end end + def click_milestones + within_sidebar do + click_element :milestones_link + end + end + def click_wiki within_sidebar do click_link('Wiki') diff --git a/qa/qa/page/merge_request/new.rb b/qa/qa/page/merge_request/new.rb index ec94ff4ac98..83cc4bbbace 100644 --- a/qa/qa/page/merge_request/new.rb +++ b/qa/qa/page/merge_request/new.rb @@ -10,10 +10,18 @@ module QA element :issuable_form_title end + view 'app/views/shared/issuable/form/_metadata.html.haml' do + element :issuable_milestone_dropdown + end + view 'app/views/shared/form_elements/_description.html.haml' do element :issuable_form_description end + view 'app/views/shared/issuable/_milestone_dropdown.html.haml' do + element :issuable_dropdown_menu_milestone + end + def create_merge_request click_element :issuable_create_button end @@ -25,6 +33,13 @@ module QA def fill_description(description) fill_element :issuable_form_description, description end + + def choose_milestone(milestone) + click_element :issuable_milestone_dropdown + within_element(:issuable_dropdown_menu_milestone) do + click_on milestone.title + end + end end end end diff --git a/qa/qa/page/merge_request/show.rb b/qa/qa/page/merge_request/show.rb index c200f14f4fb..f3200160a78 100644 --- a/qa/qa/page/merge_request/show.rb +++ b/qa/qa/page/merge_request/show.rb @@ -79,6 +79,12 @@ module QA click_element :squash_checkbox end + + def has_milestone?(milestone_title) + page.within('.issuable-sidebar') do + !!find("[href*='/milestones/']", text: milestone_title, wait: 1) + end + end end end end diff --git a/qa/qa/page/project/milestone/index.rb b/qa/qa/page/project/milestone/index.rb new file mode 100644 index 00000000000..a1519c9ef1c --- /dev/null +++ b/qa/qa/page/project/milestone/index.rb @@ -0,0 +1,17 @@ +module QA + module Page + module Project + module Milestone + class Index < Page::Base + view 'app/views/projects/milestones/index.html.haml' do + element :new_project_milestone + end + + def click_new_milestone + click_element :new_project_milestone + end + end + end + end + end +end diff --git a/qa/qa/page/project/milestone/new.rb b/qa/qa/page/project/milestone/new.rb new file mode 100644 index 00000000000..992ef89004b --- /dev/null +++ b/qa/qa/page/project/milestone/new.rb @@ -0,0 +1,27 @@ +module QA + module Page + module Project + module Milestone + class New < Page::Base + view 'app/views/projects/milestones/_form.html.haml' do + element :milestone_create_button + element :milestone_title + element :milestone_description + end + + def set_title(title) + fill_element :milestone_title, title + end + + def set_description(description) + fill_element :milestone_description, description + end + + def create_new_milestone + click_element :milestone_create_button + end + end + end + end + end +end diff --git a/qa/qa/page/project/settings/protected_branches.rb b/qa/qa/page/project/settings/protected_branches.rb index 0bd031e96b5..e572ae12132 100644 --- a/qa/qa/page/project/settings/protected_branches.rb +++ b/qa/qa/page/project/settings/protected_branches.rb @@ -44,6 +44,9 @@ module QA click_allow(:push, 'Developers + Maintainers') end + # @deprecated + alias_method :allow_devs_and_masters_to_push, :allow_devs_and_maintainers_to_push + def allow_no_one_to_merge click_allow(:merge, 'No one') end @@ -52,6 +55,9 @@ module QA click_allow(:merge, 'Developers + Maintainers') end + # @deprecated + alias_method :allow_devs_and_masters_to_merge, :allow_devs_and_maintainers_to_merge + def protect_branch click_on 'Protect' end diff --git a/qa/qa/runtime/browser.rb b/qa/qa/runtime/browser.rb index cee381f3379..877864fb40c 100644 --- a/qa/qa/runtime/browser.rb +++ b/qa/qa/runtime/browser.rb @@ -85,6 +85,10 @@ module QA driver.browser.save_screenshot(path) end + Capybara::Screenshot.register_filename_prefix_formatter(:rspec) do |example| + File.join(QA::Runtime::Namespace.name, example.file_path.sub('./qa/specs/features/', '')) + end + Capybara.configure do |config| config.default_driver = :chrome config.javascript_driver = :chrome diff --git a/qa/qa/runtime/namespace.rb b/qa/qa/runtime/namespace.rb index ccfa8b44db3..28f17d1160b 100644 --- a/qa/qa/runtime/namespace.rb +++ b/qa/qa/runtime/namespace.rb @@ -8,7 +8,7 @@ module QA end def name - 'qa-test-' + time.strftime('%d-%m-%Y-%H-%M-%S') + "qa-test-#{time.strftime('%Y-%m-%d-%Y-%H-%M-%S')}" end def path diff --git a/qa/qa/specs/features/merge_request/create_spec.rb b/qa/qa/specs/features/merge_request/create_spec.rb index 18e8c1f35af..5807e539699 100644 --- a/qa/qa/specs/features/merge_request/create_spec.rb +++ b/qa/qa/specs/features/merge_request/create_spec.rb @@ -4,14 +4,28 @@ module QA Runtime::Browser.visit(:gitlab, Page::Main::Login) Page::Main::Login.act { sign_in_using_credentials } + current_project = Factory::Resource::Project.fabricate! do |project| + project.name = 'project-with-merge-request-and-milestone' + end + + current_milestone = Factory::Resource::ProjectMilestone.fabricate! do |milestone| + milestone.title = 'unique-milestone' + milestone.project = current_project + end + Factory::Resource::MergeRequest.fabricate! do |merge_request| - merge_request.title = 'This is a merge request' - merge_request.description = 'Great feature' + merge_request.title = 'This is a merge request with a milestone' + merge_request.description = 'Great feature with milestone' + merge_request.project = current_project + merge_request.milestone = current_milestone end - expect(page).to have_content('This is a merge request') - expect(page).to have_content('Great feature') - expect(page).to have_content(/Opened [\w\s]+ ago/) + Page::MergeRequest::Show.perform do |merge_request| + expect(page).to have_content('This is a merge request with a milestone') + expect(page).to have_content('Great feature with milestone') + expect(page).to have_content(/Opened [\w\s]+ ago/) + expect(merge_request).to have_milestone(current_milestone.title) + end end end end |