Commit 45927684 authored by Mark Lapierre's avatar Mark Lapierre

Merge branch 'fix-auto-devops-qa-domain-wait-for-build' into 'master'

Fixes for Auto DevOps QA specs

See merge request gitlab-org/gitlab-ce!25275
parents cd1a907b 8cb772bc
......@@ -28,7 +28,7 @@
.form-group
%h5= s_('ClusterIntegration|Base domain')
= field.text_field :base_domain, class: 'col-md-6 form-control js-select-on-focus'
= field.text_field :base_domain, class: 'col-md-6 form-control js-select-on-focus qa-base-domain'
.form-text.text-muted
- auto_devops_url = help_page_path('topics/autodevops/index')
- auto_devops_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: auto_devops_url }
......@@ -43,4 +43,4 @@
- if can?(current_user, :update_cluster, @cluster)
.form-group
= field.submit _('Save changes'), class: 'btn btn-success'
= field.submit _('Save changes'), class: 'btn btn-success qa-save-domain'
......@@ -20,15 +20,19 @@ module QA::Page
element :pipeline_path
end
def completed?
COMPLETED_STATUSES.include?(status_badge)
def loaded?(wait: 60)
has_element?(:build_trace, wait: wait)
end
def successful?(timeout: 60)
# Reminder: You should check #loaded? first
def completed?(timeout: 60)
wait(reload: false, max: timeout) do
completed? && !trace_loading?
COMPLETED_STATUSES.include?(status_badge)
end
end
# Reminder: You should check #completed? and #loaded? first
def successful?
status_badge == PASSED_STATUS
end
......
......@@ -14,6 +14,11 @@ module QA
element :ingress_ip_address, 'id="ingress-ip-address"' # rubocop:disable QA/ElementWithPattern
end
view 'app/views/clusters/clusters/_form.html.haml' do
element :base_domain
element :save_domain
end
def install!(application_name)
within(".js-cluster-application-row-#{application_name}") do
page.has_button?('Install', wait: 30)
......@@ -32,6 +37,14 @@ module QA
# ip address is assigned for the ingress controller
page.find('#ingress-ip-address', wait: 1200).value
end
def set_domain(domain)
fill_element :base_domain, domain
end
def save_domain
click_element :save_domain
end
end
end
end
......
......@@ -12,10 +12,6 @@ module QA
Page::Project::Operations::Kubernetes::Show.perform(&:ingress_ip)
end
attribute :domain do
"#{ingress_ip}.nip.io"
end
def fabricate!
@project.visit!
......@@ -53,6 +49,12 @@ module QA
page.await_installed(:ingress) if @install_ingress
page.await_installed(:prometheus) if @install_prometheus
page.await_installed(:runner) if @install_runner
if @install_ingress
populate(:ingress_ip)
page.set_domain("#{ingress_ip}.nip.io")
page.save_domain
end
end
end
end
......
......@@ -95,7 +95,9 @@ module QA
Page::Project::Pipeline::Show.perform(&:go_to_first_job)
Page::Project::Job::Show.perform do |job|
expect(job).to be_successful, "Job status did not become \"passed\"."
expect(job).to be_loaded
expect(job).to be_completed
expect(job).to be_successful
expect(job.output).to include(sha1sum)
end
end
......
......@@ -40,7 +40,7 @@ module QA
# Create and connect K8s cluster
@cluster = Service::KubernetesCluster.new(rbac: rbac).create!
kubernetes_cluster = Resource::KubernetesCluster.fabricate! do |cluster|
Resource::KubernetesCluster.fabricate! do |cluster|
cluster.project = @project
cluster.cluster = @cluster
cluster.install_helm_tiller = true
......@@ -49,14 +49,11 @@ module QA
cluster.install_runner = true
end
kubernetes_cluster.populate(:ingress_ip)
@project.visit!
Page::Project::Menu.perform(&:click_ci_cd_settings)
Page::Project::Settings::CICD.perform do |p|
p.enable_auto_devops
end
kubernetes_cluster.populate(:domain)
end
after(:all) do
......@@ -76,7 +73,9 @@ module QA
pipeline.go_to_job('build')
end
Page::Project::Job::Show.perform do |job|
expect(job).to be_sucessful(timeout: 600), "Job did not pass"
expect(job).to be_loaded
expect(job).to be_completed(timeout: 600)
expect(job).to be_successful
job.click_element(:pipeline_path)
end
......@@ -85,7 +84,9 @@ module QA
pipeline.go_to_job('test')
end
Page::Project::Job::Show.perform do |job|
expect(job).to be_sucessful(timeout: 600), "Job did not pass"
expect(job).to be_loaded
expect(job).to be_completed(timeout: 600)
expect(job).to be_successful
job.click_element(:pipeline_path)
end
......@@ -94,7 +95,9 @@ module QA
pipeline.go_to_job('production')
end
Page::Project::Job::Show.perform do |job|
expect(job).to be_sucessful(timeout: 1200), "Job did not pass"
expect(job).to be_loaded
expect(job).to be_completed(timeout: 1200)
expect(job).to be_successful
job.click_element(:pipeline_path)
end
......@@ -137,7 +140,9 @@ module QA
pipeline.go_to_job('build')
end
Page::Project::Job::Show.perform do |job|
expect(job).to be_sucessful(timeout: 600), "Job did not pass"
expect(job).to be_loaded
expect(job).to be_completed(timeout: 600)
expect(job).to be_successful
job.click_element(:pipeline_path)
end
......@@ -146,7 +151,9 @@ module QA
pipeline.go_to_job('test')
end
Page::Project::Job::Show.perform do |job|
expect(job).to be_sucessful(timeout: 600), "Job did not pass"
expect(job).to be_loaded
expect(job).to be_completed(timeout: 600)
expect(job).to be_successful
job.click_element(:pipeline_path)
end
......@@ -155,7 +162,9 @@ module QA
pipeline.go_to_job('production')
end
Page::Project::Job::Show.perform do |job|
expect(job).to be_sucessful(timeout: 1200), "Job did not pass"
expect(job).to be_loaded
expect(job).to be_completed(timeout: 1200)
expect(job).to be_successful
job.click_element(:pipeline_path)
end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment