wydawałoby się, że jest jedna z podstawowych spraw, jeśli chodzi o testy integracyjne
Scenario: Swiching details
When I go to preview page
Then I should see "Short description"
And I should not see "Details"
When I follow "more"
Then I should see "Details"
Tekst “Details” jest w znaczniku span z klasą initially_hidden (display: none). Próbowałem również używać stylowania inline.
Link “more” wykonuje jQuery.toggle() na tym spanie (co działa zarówno empirycznie jak i w czasie pracy webdrivera).
Niestety test się “wysypuje” w:
And I should not see "Details"
pomimo, że element nie jest widoczny na stronie.
Próbowałem jakichś wyguglanych sztuczek z XPath, ale nie bardzo mi wychodzi. Ma ktoś jakiś pomysł?
[code]Then /^the element matched by “([^”]*)" should be visible$/ do |scope|
has_css?(scope).should be_true
end
Then /^the element matched by “([^”]*)" should not be visible$/ do |scope|
has_css?(scope).should be_false
end[/code]
Też miałem wczroaj z tym problem i narazie wymyśliłem to
[code]Then /^the element matched by “([^”]*)" should be visible$/ do |scope|
find(scope).visible?.should be_true
end
Then /^the element matched by “([^”]*)" should not be visible$/ do |scope|
find(scope).visible?.should be_false
end[/code]
Czasem warto wyłączyć animacje w jQuery dla środowiska testowego (oczywiście w webdriverze)