Matching multiline text in Capybara 3
Until Capybara 2, node finders that accept a
text option were able to find nodes based on visible text, even if it spans over multiple lines in the HTML or even different child nodes. If you relied on this behavior, affected features will fail:
<span>Hi! Try to match me.</span>
page.find(text: "Hi! Try to match me.") # => Capybara::ElementNotFound
Re-enabling Cabyara 2 behavior in Capybara 3
After digging in the documentation, you might figure out that you can switch to painfully slow RegExp text matching or add the
normalize_ws: true option to every call of a Capybara finder.
I suggest that you rather configure it globally, which also affects gem dependencies like spreewald.
# features/support/capybara.rb:15 # Capbybara 3 does no longer match DOM Elements with text spanning over # multiple lines. This configuration re-enables this behavior. Capybara.default_normalize_ws = true
Please note that the changed bahavior can also be observed in Capybara's RSpec matchers like