Validating XPath Element Matching in Capybara
This test suite validates the match_xpath? functionality in Capybara, focusing on element matching using XPath selectors. The tests ensure proper element identification and matching behavior across different selector scenarios.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
teamcapybara/capybara
lib/capybara/spec/session/element/match_xpath_spec.rb
# frozen_string_literal: true
Capybara::SpecHelper.spec '#match_xpath?' do
before do
@session.visit('/with_html')
@element = @session.find(:css, 'span.number')
end
it 'should be true if the given selector is on the page' do
expect(@element).to match_xpath('//span')
expect(@element).to match_xpath("//span[@class='number']")
end
it 'should be false if the given selector is not on the page' do
expect(@element).not_to match_xpath('//abbr')
expect(@element).not_to match_xpath('//div')
expect(@element).not_to match_xpath("//span[@class='not_a_number']")
end
it 'should use xpath even if default selector is CSS' do
Capybara.default_selector = :css
expect(@element).not_to have_xpath("//span[@class='not_a_number']")
expect(@element).not_to have_xpath("//div[@class='number']")
end
end