Add branch_name qa selector
Uses the branch_name element to find a branch with a specific name, instead of using a dynamic CSS class that can't be validated by the sanity selector test
This commit is contained in:
parent
99a4e97389
commit
f00286bc0c
5 changed files with 28 additions and 16 deletions
|
@ -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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
|
@ -29,7 +30,7 @@ module QA
|
||||||
|
|
||||||
def has_no_branch?(branch_name)
|
def has_no_branch?(branch_name)
|
||||||
within_element(:all_branches) do
|
within_element(:all_branches) do
|
||||||
has_no_css?(".js-branch-#{branch_name}", wait: Support::Waiter::DEFAULT_MAX_WAIT_TIME)
|
has_no_element?(:branch_name, text: branch_name, wait: Support::Waiter::DEFAULT_MAX_WAIT_TIME)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue