Capybara+WebDriver widoczność elementów

Hej,

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 :slight_smile:

Coś takiego mi działa:

[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)

$.fx.off = true;

lub odczekać sleep’em trochę.

Może obczajenie opcji Capybara.ignore_hidden_elements pomoże ?