Created a refreshed create merge request suite

Created a refreshed test suite using api to improve speed.
This was done by adding qa tags to the merge request view.
This commit is contained in:
Tomislav Nikic 2019-06-17 10:28:42 +02:00
parent 5eff8dd1e7
commit 103a631b8d
No known key found for this signature in database
GPG Key ID: D45FB8D0739016FD
5 changed files with 72 additions and 59 deletions

View File

@ -1,10 +1,10 @@
.detail-page-description
%h2.title
%h2.title.qa-title
= markdown_field(@merge_request, :title)
%div
- if @merge_request.description.present?
.description{ class: can?(current_user, :update_merge_request, @merge_request) ? 'js-task-list-container' : '' }
.description.qa-description{ class: can?(current_user, :update_merge_request, @merge_request) ? 'js-task-list-container' : '' }
.md
= markdown_field(@merge_request, :description)
%textarea.hidden.js-task-list-field

View File

@ -111,6 +111,14 @@ module QA
end
end
def has_title?(title)
has_element?(:title, text: title)
end
def has_description?(description)
has_element?(:description, text: description)
end
def merge!
# The merge button is disabled on load
wait do

View File

@ -46,7 +46,7 @@ module QA
end
def api_post_path
"/projects/#{project}/labels"
"/projects/#{project.id}/labels"
end
def api_post_body

View File

@ -31,6 +31,21 @@ module QA
milestone_new.click_milestone_create_button
end
end
def api_get_path
"/projects/#{project.id}/milestones/#{id}"
end
def api_post_path
"/projects/#{project.id}/milestones"
end
def api_post_body
{
description: @description,
title: @title
}
end
end
end
end

View File

@ -1,76 +1,66 @@
# frozen_string_literal: true
module QA
# Failure issue: https://gitlab.com/gitlab-org/quality/staging/issues/50
context 'Create', :quarantine do
describe 'Merge request creation' do
it 'user creates a new merge request', :smoke do
context 'Create' do
describe 'Create a new merge request' do
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)
current_project = Resource::Project.fabricate! do |project|
project.name = 'project-with-merge-request'
@project = Resource::Project.fabricate_via_api! do |project|
project.name = 'project'
end
merge_request_title = 'This is a merge request'
merge_request_description = 'Great feature'
Resource::MergeRequest.fabricate! do |merge_request|
merge_request.title = merge_request_title
merge_request.description = merge_request_description
merge_request.project = current_project
end
expect(page).to have_content(merge_request_title)
expect(page).to have_content(merge_request_description)
expect(page).to have_content('Opened just now')
@merge_request_title = 'One merge request to rule them all'
@merge_request_description = '... to find them, to bring them all, and in the darkness bind them'
end
it 'user creates a new merge request with a milestone and label' do
gitlab_account_username = "@#{Runtime::User.username}"
Runtime::Browser.visit(:gitlab, Page::Main::Login)
Page::Main::Login.act { sign_in_using_credentials }
current_project = Resource::Project.fabricate! do |project|
project.name = 'project-with-merge-request-and-milestone'
end
current_milestone = Resource::ProjectMilestone.fabricate! do |milestone|
milestone.title = 'unique-milestone'
milestone.project = current_project
end
new_label = Resource::Label.fabricate_via_browser_ui! do |label|
label.project = current_project
label.title = 'qa-mr-test-label'
label.description = 'Merge Request label'
end
merge_request_title = 'This is a merge request with a milestone and a label'
merge_request_description = 'Great feature with milestone'
Resource::MergeRequest.fabricate! do |merge_request|
merge_request.title = merge_request_title
merge_request.description = merge_request_description
merge_request.project = current_project
merge_request.milestone = current_milestone
merge_request.assignee = 'me'
merge_request.labels.push(new_label)
it 'creates a basic merge request', :smoke do
Resource::MergeRequest.fabricate_via_browser_ui! do |merge_request|
merge_request.project = @project
merge_request.title = @merge_request_title
merge_request.description = @merge_request_description
end
Page::MergeRequest::Show.perform do |merge_request|
expect(merge_request).to have_content(merge_request_title)
expect(merge_request).to have_content(merge_request_description)
expect(merge_request).to have_content('Opened just now')
expect(merge_request).to have_title(@merge_request_title)
expect(merge_request).to have_description(@merge_request_description)
end
end
it 'creates a merge request with a milestone and label' do
gitlab_account_username = "@#{Runtime::User.username}"
milestone = Resource::ProjectMilestone.fabricate_via_api! do |milestone|
milestone.project = @project
milestone.title = 'milestone'
end
label = Resource::Label.fabricate_via_api! do |label|
label.project = @project
label.title = 'label'
end
Resource::MergeRequest.fabricate_via_browser_ui! do |merge_request|
merge_request.title = @merge_request_title
merge_request.description = @merge_request_description
merge_request.project = @project
merge_request.milestone = milestone
merge_request.assignee = 'me'
merge_request.labels.push(label)
end
Page::MergeRequest::Show.perform do |merge_request|
expect(merge_request).to have_title(@merge_request_title)
expect(merge_request).to have_description(@merge_request_description)
expect(merge_request).to have_assignee(gitlab_account_username)
expect(merge_request).to have_label(new_label.title)
expect(merge_request).to have_label(label.title)
end
Page::Issuable::Sidebar.perform do |sidebar|
expect(sidebar).to have_milestone(current_milestone.title)
expect(sidebar).to have_milestone(milestone.title)
end
end
end
end
end
end