Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/qa
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-03-02 09:10:53 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-03-02 09:10:53 +0300
commite0a63a4b4d818171c17b75ef1e6d348cb287af9f (patch)
treef6f31af898634ea51ade70e279cc33d463493039 /qa
parent8f57ac0a38b7045f241dc5ad29fcde3f6eae3a40 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
-rw-r--r--qa/qa/page/merge_request/show.rb14
-rw-r--r--qa/qa/resource/merge_request.rb8
-rw-r--r--qa/qa/specs/features/api/3_create/gitaly/backend_node_recovery_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb84
4 files changed, 107 insertions, 1 deletions
diff --git a/qa/qa/page/merge_request/show.rb b/qa/qa/page/merge_request/show.rb
index 1a25c9349da..1aacbb7ffed 100644
--- a/qa/qa/page/merge_request/show.rb
+++ b/qa/qa/page/merge_request/show.rb
@@ -26,6 +26,10 @@ module QA
element :merge_immediately_option
end
+ view 'app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue' do
+ element :merge_request_status_content
+ end
+
view 'app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_merged.vue' do
element :merged_status_content
end
@@ -235,6 +239,12 @@ module QA
click_element(:merge_immediately_option)
end
+ def merge_when_pipeline_succeeds!
+ wait_until_ready_to_merge
+
+ click_element(:merge_button, text: 'Merge when pipeline succeeds')
+ end
+
def merged?
# Revisit after merge page re-architect is done https://gitlab.com/gitlab-org/gitlab/-/issues/300042
# To remove page refresh logic if possible
@@ -252,6 +262,10 @@ module QA
has_element?(:merge_button, disabled: false)
end
+ def merge_request_status
+ find_element(:merge_request_status_content).text
+ end
+
# Waits up 60 seconds and raises an error if unable to merge
def wait_until_ready_to_merge
has_element?(:merge_button)
diff --git a/qa/qa/resource/merge_request.rb b/qa/qa/resource/merge_request.rb
index 869be06c542..fb450a61c9a 100644
--- a/qa/qa/resource/merge_request.rb
+++ b/qa/qa/resource/merge_request.rb
@@ -140,6 +140,14 @@ module QA
end
end
+ def reload!
+ # Refabricate so that we can return a new object with updated attributes
+ self.class.fabricate_via_api! do |resource|
+ resource.project = project
+ resource.id = api_resource[:iid]
+ end
+ end
+
private
def transform_api_resource(api_resource)
diff --git a/qa/qa/specs/features/api/3_create/gitaly/backend_node_recovery_spec.rb b/qa/qa/specs/features/api/3_create/gitaly/backend_node_recovery_spec.rb
index a240f72944f..c90f8546f91 100644
--- a/qa/qa/specs/features/api/3_create/gitaly/backend_node_recovery_spec.rb
+++ b/qa/qa/specs/features/api/3_create/gitaly/backend_node_recovery_spec.rb
@@ -3,7 +3,7 @@
module QA
RSpec.describe 'Create' do
context 'Gitaly' do
- describe 'Backend node recovery', :orchestrated, :gitaly_cluster, :skip_live_env do
+ describe 'Backend node recovery', :orchestrated, :gitaly_cluster, :skip_live_env, quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/322647', type: :flaky } do
let(:praefect_manager) { Service::PraefectManager.new }
let(:project) do
Resource::Project.fabricate! do |project|
diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb
new file mode 100644
index 00000000000..2ddc59acd5c
--- /dev/null
+++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb
@@ -0,0 +1,84 @@
+# frozen_string_literal: true
+
+module QA
+ RSpec.describe 'Create', :runner do
+ describe 'Merge requests' do
+ let(:project) do
+ Resource::Project.fabricate_via_api! do |project|
+ project.name = 'merge-when-pipeline-succeeds'
+ project.initialize_with_readme = true
+ end
+ end
+
+ let!(:runner) do
+ Resource::Runner.fabricate! do |runner|
+ runner.project = project
+ runner.name = "runner-for-#{project.name}"
+ runner.tags = ["runner-for-#{project.name}"]
+ end
+ end
+
+ before do
+ Resource::Repository::Commit.fabricate_via_api! do |commit|
+ commit.project = project
+ commit.commit_message = 'Add .gitlab-ci.yml'
+ commit.add_files(
+ [
+ {
+ file_path: '.gitlab-ci.yml',
+ content: <<~EOF
+ test:
+ tags: ["runner-for-#{project.name}"]
+ script: sleep 5
+ only:
+ - merge_requests
+ EOF
+ }
+ ]
+ )
+ end
+
+ Flow::Login.sign_in
+ end
+
+ after do
+ runner&.remove_via_api!
+ project&.remove_via_api!
+ end
+
+ it 'merges when pipeline succeeds', :smoke, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1684' do
+ branch_name = "merge-request-test-#{SecureRandom.hex(8)}"
+
+ # Create a branch that will be merged into the default branch
+ Resource::Repository::ProjectPush.fabricate! do |project_push|
+ project_push.project = project
+ project_push.new_branch = true
+ project_push.branch_name = branch_name
+ project_push.file_name = "file-#{SecureRandom.hex(8)}.txt"
+ end
+
+ # Create a merge request to merge the branch we just created
+ merge_request = Resource::MergeRequest.fabricate_via_api! do |merge_request|
+ merge_request.project = project
+ merge_request.source_branch = branch_name
+ merge_request.no_preparation = true
+ end
+
+ merge_request.visit!
+
+ Page::MergeRequest::Show.perform do |mr|
+ mr.merge_when_pipeline_succeeds!
+
+ expect(mr.merge_request_status).to match(/to be merged automatically when the pipeline succeeds/)
+
+ Support::Waiter.wait_until(sleep_interval: 5) do
+ merge_request = merge_request.reload!
+ merge_request.state == 'merged'
+ end
+
+ expect(mr.merged?).to be_truthy, "Expected content 'The changes were merged' but it did not appear."
+ end
+ end
+ end
+ end
+end