Rather than sleeping for a fixed period, we can use Capybara's built-in ability to wait for elements to be present. Since we're only changing the state of existing elements though, we need to wait for their "disabled" property to be set. Fixes some timing-related problems with the test suite.
96 lines
2.8 KiB
Ruby
96 lines
2.8 KiB
Ruby
require "application_system_test_case"
|
|
|
|
class SiteTest < ApplicationSystemTestCase
|
|
test "visiting the index" do
|
|
visit "/"
|
|
|
|
assert_selector "h1", :text => "OpenStreetMap"
|
|
end
|
|
|
|
test "tooltip shows for Layers button" do
|
|
visit "/"
|
|
|
|
assert_no_selector ".tooltip"
|
|
button = find ".control-layers .control-button"
|
|
button.hover
|
|
assert_selector ".tooltip", :text => "Layers"
|
|
end
|
|
|
|
test "tooltip shows for Map Key button on Standard layer" do
|
|
visit "/"
|
|
|
|
assert_no_selector ".tooltip"
|
|
button = find ".control-key .control-button"
|
|
button.hover
|
|
tooltip = find ".tooltip"
|
|
tooltip.assert_text "Map Key"
|
|
tooltip.assert_no_text "not available"
|
|
end
|
|
|
|
test "tooltip shows for Map Key button on a layer without a key provided" do
|
|
visit "/#layers=Y" # assumes that CyclOSM layer has no map key
|
|
|
|
assert_no_selector ".tooltip"
|
|
button = find ".control-key .control-button"
|
|
button.hover
|
|
tooltip = find ".tooltip"
|
|
tooltip.assert_text "Map Key"
|
|
tooltip.assert_text "not available"
|
|
end
|
|
|
|
test "tooltip shows for query button when zoomed in" do
|
|
visit "/#map=14/0/0"
|
|
|
|
assert_no_selector ".tooltip"
|
|
button = find ".control-query .control-button"
|
|
button.hover
|
|
tooltip = find ".tooltip"
|
|
tooltip.assert_text "Query features"
|
|
tooltip.assert_no_text "Zoom in"
|
|
end
|
|
|
|
[
|
|
"#edit_tab",
|
|
".control-note .control-button",
|
|
".control-query .control-button"
|
|
].each do |selector|
|
|
test "tooltips on low zoom levels for disabled control '#{selector}'" do
|
|
visit "/#map=10/0/0"
|
|
|
|
assert_no_selector ".tooltip"
|
|
find(selector).hover
|
|
assert_selector ".tooltip", :text => "Zoom in"
|
|
end
|
|
|
|
test "no zoom-in tooltips on high zoom levels, then tooltips appear after zoom out for control '#{selector}'" do
|
|
visit "/#map=14/0/0"
|
|
|
|
assert_no_selector ".tooltip"
|
|
find(selector).hover
|
|
assert_no_selector ".tooltip", :text => "Zoom in"
|
|
find("h1").hover # un-hover original element
|
|
|
|
visit "#map=10/0/0"
|
|
find("#{selector}.disabled") # Ensure that capybara has waited for JS to finish processing
|
|
|
|
assert_no_selector ".tooltip"
|
|
find(selector).hover
|
|
assert_selector ".tooltip", :text => "Zoom in"
|
|
end
|
|
end
|
|
|
|
test "notes layer tooltip appears on zoom out" do
|
|
visit "/#map=9/40/-4" # depends on zoom levels where notes are allowed
|
|
|
|
find(".control-layers .control-button").click
|
|
li = find(".layers-ui .overlay-layers li:first-child")
|
|
li.not_matches_css? ".disabled"
|
|
li.hover # try to trigger disabled tooltip
|
|
zoomout = find(".control-button.zoomout")
|
|
zoomout.hover # un-hover the tooltip that's being tested
|
|
zoomout.click
|
|
li.matches_css? ".disabled"
|
|
li.hover
|
|
assert_selector ".tooltip", :text => "Zoom in"
|
|
end
|
|
end
|