openstreetmap-website/test/system/site_test.rb
Andy Allan 6f471c72c9 Wait for the button to be disabled, before checking the tooltip behaviour
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.
2022-12-21 17:08:51 +00:00

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