I have added visually hidden jump links to my website, that appear when they are focused (similar to e.g. GitHub, just press Tab once on the home page).
I want to test this behaviour with Capybara. I can't check for e.g. 'visibility: true/false', because the links are not really hidden (otherwise screenreaders would't see them), but only moved out from the viewport by absolute positioning. When they are focused, they are placed at their original position in the viewport.
So I guess I have to check the X and Y coordinate, but Capybara doesn't seem to offer a native method for getting them? Is this true? And if so, how would I get them for e.g. an element '#jump_to_content'? By executing some JavaScript?
Update
I found some inspiration here: https://content.pivotal.io/blog/testing-accessibility-with-rspec-and-capybara
But this doesn't seem to work for my configration:
link.native.location
NoMethodError: undefined method `location' for #<Capybara::Poltergeist::Node tag="a">
Capybara::Poltergeist::JavascriptError: One or more errors were raised in the Javascript code on the page...
andTypeError: null is not an object (evaluating 'document.querySelector('#jump_to_navigation').offsetTop')
. When only executingpage.evaluate_script("document.querySelector('#jump_to_navigation')")
I getnil
. In the browser (outside tests) it returns the wanted item. – Merna