Commit 974822a3 authored by Sanad Liaquat's avatar Sanad Liaquat Committed by GitLab Release Tools Bot

Merge branch 'qa-ml-fix-branches-test' into 'master'

Fix E2E test - wait for branches to not be present

See merge request gitlab-org/gitlab-ce!27805

(cherry picked from commit 3061eee6)

f15f9970 Wait for branches to not be present
a5af21cf Make max wait time a constant
99a4e973 Check test result via an assertion
f00286bc Add branch_name qa selector
parent 4b358114
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
.branch-info .branch-info
.branch-title .branch-title
= sprite_icon('fork', size: 12) = sprite_icon('fork', size: 12)
= link_to project_tree_path(@project, branch.name), class: 'item-title str-truncated-100 ref-name prepend-left-8' do = link_to project_tree_path(@project, branch.name), class: 'item-title str-truncated-100 ref-name prepend-left-8 qa-branch-name' do
= branch.name = branch.name
- if branch.name == @repository.root_ref - if branch.name == @repository.root_ref
%span.badge.badge-primary.prepend-left-5 default %span.badge.badge-primary.prepend-left-5 default
......
...@@ -113,8 +113,8 @@ module QA ...@@ -113,8 +113,8 @@ module QA
has_css?(element_selector_css(name), wait: wait, text: text) has_css?(element_selector_css(name), wait: wait, text: text)
end end
def has_no_element?(name, wait: Capybara.default_max_wait_time) def has_no_element?(name, text: nil, wait: Capybara.default_max_wait_time)
has_no_css?(element_selector_css(name), wait: wait) has_no_css?(element_selector_css(name), wait: wait, text: text)
end end
def has_text?(text) def has_text?(text)
...@@ -129,8 +129,8 @@ module QA ...@@ -129,8 +129,8 @@ module QA
has_no_css?('.fa-spinner', wait: Capybara.default_max_wait_time) has_no_css?('.fa-spinner', wait: Capybara.default_max_wait_time)
end end
def within_element(name) def within_element(name, text: nil)
page.within(element_selector_css(name)) do page.within(element_selector_css(name), text: text) do
yield yield
end end
end end
......
...@@ -7,6 +7,7 @@ module QA ...@@ -7,6 +7,7 @@ module QA
class Show < Page::Base class Show < Page::Base
view 'app/views/projects/branches/_branch.html.haml' do view 'app/views/projects/branches/_branch.html.haml' do
element :remove_btn element :remove_btn
element :branch_name
end end
view 'app/views/projects/branches/_panel.html.haml' do view 'app/views/projects/branches/_panel.html.haml' do
element :all_branches element :all_branches
...@@ -27,11 +28,9 @@ module QA ...@@ -27,11 +28,9 @@ module QA
finished_loading? finished_loading?
end end
def has_branch_title?(branch_title) def has_no_branch?(branch_name)
within_element(:all_branches) do within_element(:all_branches) do
within(".item-title") do has_no_element?(:branch_name, text: branch_name, wait: Support::Waiter::DEFAULT_MAX_WAIT_TIME)
has_text?(branch_title)
end
end end
end end
...@@ -48,15 +47,6 @@ module QA ...@@ -48,15 +47,6 @@ module QA
click_element(:delete_merged_branches) click_element(:delete_merged_branches)
end end
end end
def wait_for_texts_not_to_be_visible(texts)
text_not_visible = wait do
texts.all? do |text|
has_no_text?(text)
end
end
raise "Expected text(s) #{texts} not to be visible" unless text_not_visible
end
end end
end end
end end
......
...@@ -73,10 +73,9 @@ module QA ...@@ -73,10 +73,9 @@ module QA
Page::Project::Branches::Show.perform do |branches_view| Page::Project::Branches::Show.perform do |branches_view|
branches_view.delete_branch(third_branch) branches_view.delete_branch(third_branch)
expect(branches_view).to have_no_branch(third_branch)
end end
expect(page).not_to have_content(third_branch)
Page::Project::Branches::Show.perform(&:delete_merged_branches) Page::Project::Branches::Show.perform(&:delete_merged_branches)
expect(page).to have_content( expect(page).to have_content(
...@@ -85,8 +84,7 @@ module QA ...@@ -85,8 +84,7 @@ module QA
page.refresh page.refresh
Page::Project::Branches::Show.perform do |branches_view| Page::Project::Branches::Show.perform do |branches_view|
branches_view.wait_for_texts_not_to_be_visible([commit_message_of_second_branch]) expect(branches_view).to have_no_branch(second_branch)
expect(branches_view).not_to have_branch_title(second_branch)
end end
end end
end end
......
...@@ -76,23 +76,18 @@ module QA ...@@ -76,23 +76,18 @@ module QA
super super
end end
def has_element?(name, text: nil, wait: Capybara.default_max_wait_time) def has_element?(name, **kwargs)
found = super found = super
msg = ["has_element? :#{name}"] log_has_element_or_not('has_element?', name, found, **kwargs)
msg << %Q(with text "#{text}") if text
msg << "(wait: #{wait})"
msg << "returned: #{found}"
log(msg.compact.join(' '))
found found
end end
def has_no_element?(name, wait: Capybara.default_max_wait_time) def has_no_element?(name, **kwargs)
found = super found = super
log("has_no_element? :#{name} returned #{found}") log_has_element_or_not('has_no_element?', name, found, **kwargs)
found found
end end
...@@ -149,6 +144,15 @@ module QA ...@@ -149,6 +144,15 @@ module QA
def log(msg) def log(msg)
QA::Runtime::Logger.debug(msg) QA::Runtime::Logger.debug(msg)
end end
def log_has_element_or_not(method, name, found, **kwargs)
msg = ["#{method} :#{name}"]
msg << %Q(with text "#{kwargs[:text]}") if kwargs[:text]
msg << "(wait: #{kwargs[:wait] || Capybara.default_max_wait_time})"
msg << "returned: #{found}"
log(msg.compact.join(' '))
end
end end
end end
end end
......
...@@ -3,9 +3,11 @@ ...@@ -3,9 +3,11 @@
module QA module QA
module Support module Support
module Waiter module Waiter
DEFAULT_MAX_WAIT_TIME = 60
module_function module_function
def wait(max: 60, interval: 0.1) def wait(max: DEFAULT_MAX_WAIT_TIME, interval: 0.1)
QA::Runtime::Logger.debug("with wait: max #{max}; interval #{interval}") QA::Runtime::Logger.debug("with wait: max #{max}; interval #{interval}")
start = Time.now start = Time.now
......
...@@ -93,7 +93,14 @@ describe QA::Support::Page::Logging do ...@@ -93,7 +93,14 @@ describe QA::Support::Page::Logging do
allow(page).to receive(:has_no_css?).and_return(true) allow(page).to receive(:has_no_css?).and_return(true)
expect { subject.has_no_element?(:element) } expect { subject.has_no_element?(:element) }
.to output(/has_no_element\? :element returned true/).to_stdout_from_any_process .to output(/has_no_element\? :element \(wait: 2\) returned: true/).to_stdout_from_any_process
end
it 'logs has_no_element? with text' do
allow(page).to receive(:has_no_css?).and_return(true)
expect { subject.has_no_element?(:element, text: "more text") }
.to output(/has_no_element\? :element with text \"more text\" \(wait: 2\) returned: true/).to_stdout_from_any_process
end end
it 'logs has_text?' do it 'logs has_text?' do
......
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