From e615e0926a1563747f4ecaec04557458ccf78512 Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Mon, 15 Apr 2024 11:59:06 +0200 Subject: [PATCH] chore: fix tests --- umap/tests/integration/test_choropleth.py | 2 +- umap/tests/integration/test_datalayer.py | 14 ++++---- umap/tests/integration/test_edit_datalayer.py | 26 +++++++------- umap/tests/integration/test_edit_map.py | 2 +- umap/tests/integration/test_edit_marker.py | 4 +-- umap/tests/integration/test_edit_polygon.py | 4 +-- umap/tests/integration/test_import.py | 36 ++++++++++++------- umap/tests/integration/test_owned_map.py | 8 ++--- umap/tests/integration/test_tableeditor.py | 6 +--- 9 files changed, 55 insertions(+), 47 deletions(-) diff --git a/umap/tests/integration/test_choropleth.py b/umap/tests/integration/test_choropleth.py index baed5e71..e896dba1 100644 --- a/umap/tests/integration/test_choropleth.py +++ b/umap/tests/integration/test_choropleth.py @@ -49,7 +49,7 @@ def test_basic_choropleth_map_with_custom_brewer(openmap, live_server, page): # Now change brewer from UI page.get_by_role("button", name="Edit").click() page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).click() + page.locator(".panel").get_by_title("Edit", exact=True).click() page.get_by_role("heading", name="Choropleth: settings").click() page.locator('select[name="brewer"]').select_option("Greens") diff --git a/umap/tests/integration/test_datalayer.py b/umap/tests/integration/test_datalayer.py index da4ec622..ed3ffc52 100644 --- a/umap/tests/integration/test_datalayer.py +++ b/umap/tests/integration/test_datalayer.py @@ -20,14 +20,14 @@ def set_options(datalayer, **options): def test_honour_displayOnLoad_false(map, live_server, datalayer, page): set_options(datalayer, displayOnLoad=False) - page.goto(f"{live_server.url}{map.get_absolute_url()}") + page.goto(f"{live_server.url}{map.get_absolute_url()}?onLoadPanel=datalayers") expect(page.locator(".leaflet-marker-icon")).to_be_hidden() - layers = page.locator(".umap-browse-datalayers li") + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") - layers_off = page.locator(".umap-browse-datalayers li.off") + layers_off = page.locator(".umap-browser .datalayer.off") expect(layers).to_have_count(1) expect(layers_off).to_have_count(1) - page.get_by_role("button", name="See data layers").click() + page.get_by_role("button", name="See layers").click() page.get_by_label("Zoom in").click() expect(markers).to_be_hidden() page.get_by_title("Show/hide layer").click() @@ -109,10 +109,12 @@ def test_should_honour_color_variable(live_server, map, page): def test_datalayers_in_query_string(live_server, datalayer, map, page): + map.settings["properties"]["onLoadPanel"] = "datalayers" + map.save() with_old_id = DataLayerFactory(old_id=134, map=map, name="with old id") set_options(with_old_id, name="with old id") - visible = page.locator(".leaflet-control-browse li:not(.off) span") - hidden = page.locator(".leaflet-control-browse li.off span") + visible = page.locator(".umap-browser .datalayer:not(.off) .datalayer-name") + hidden = page.locator(".umap-browser .datalayer.off .datalayer-name") page.goto(f"{live_server.url}{map.get_absolute_url()}") expect(visible).to_have_count(2) expect(hidden).to_have_count(0) diff --git a/umap/tests/integration/test_edit_datalayer.py b/umap/tests/integration/test_edit_datalayer.py index 14242126..ecfba705 100644 --- a/umap/tests/integration/test_edit_datalayer.py +++ b/umap/tests/integration/test_edit_datalayer.py @@ -54,32 +54,32 @@ def test_cancel_deleting_datalayer_should_restore( live_server, openmap, datalayer, page ): page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") expect(layers).to_have_count(1) expect(markers).to_have_count(1) page.get_by_role("link", name="Manage layers").click() page.once("dialog", lambda dialog: dialog.accept()) - page.locator("#umap-ui-container").get_by_title("Delete layer").click() + page.locator(".panel.right").get_by_title("Delete layer").click() expect(markers).to_have_count(0) - page.get_by_role("button", name="See data layers").click() + page.get_by_role("button", name="See layers").click() expect(page.get_by_text("test datalayer")).to_be_hidden() page.once("dialog", lambda dialog: dialog.accept()) page.get_by_role("button", name="Cancel edits").click() expect(markers).to_have_count(1) - expect( - page.locator(".leaflet-control-browse").get_by_text("test datalayer") - ).to_be_visible() + expect(page.locator(".umap-browser").get_by_text("test datalayer")).to_be_visible() def test_can_clone_datalayer(live_server, openmap, login, datalayer, page): page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") expect(layers).to_have_count(1) expect(markers).to_have_count(1) page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).click() + page.locator(".panel.right").get_by_title("Edit", exact=True).click() page.get_by_role("heading", name="Advanced actions").click() page.get_by_role("button", name="Clone").click() expect(layers).to_have_count(2) @@ -103,7 +103,7 @@ def test_can_change_icon_class(live_server, openmap, page): expect(page.locator(".umap-div-icon")).to_be_visible() page.get_by_role("link", name="Manage layers").click() expect(page.locator(".umap-circle-icon")).to_be_hidden() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).click() + page.locator(".panel.right").get_by_title("Edit", exact=True).click() page.get_by_role("heading", name="Shape properties").click() page.locator(".umap-field-iconClass a.define").click() page.get_by_text("Circle").click() @@ -116,12 +116,12 @@ def test_can_change_name(live_server, openmap, page, datalayer): f"{live_server.url}{openmap.get_absolute_url()}?edit&datalayersControl=expanded" ) page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).click() + page.locator(".panel.right").get_by_title("Edit", exact=True).click() expect(page.locator(".umap-is-dirty")).to_be_hidden() page.locator('input[name="name"]').click() page.locator('input[name="name"]').press("Control+a") page.locator('input[name="name"]').fill("new name") - expect(page.locator(".leaflet-control-browse li span")).to_contain_text("new name") + expect(page.locator(".umap-browser .datalayer")).to_contain_text("new name") expect(page.locator(".umap-is-dirty")).to_be_visible() with page.expect_response(re.compile(".*/datalayer/update/.*")): page.get_by_role("button", name="Save").click() @@ -147,7 +147,7 @@ def test_can_create_new_datalayer(live_server, openmap, page, datalayer): expect(page.locator(".umap-is-dirty")).to_be_hidden() # Edit again, it should not create a new datalayer page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).first.click() + page.locator(".panel.right").get_by_title("Edit", exact=True).first.click() page.locator('input[name="name"]').click() page.locator('input[name="name"]').fill("my new layer with a new name") expect(page.get_by_text("my new layer with a new name")).to_be_visible() @@ -171,7 +171,7 @@ def test_can_restore_version(live_server, openmap, page, datalayer): page.get_by_role("button", name="Save").click() expect(marker).to_have_class(re.compile(".*umap-div-icon.*")) page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).click() + page.locator(".panel.right").get_by_title("Edit", exact=True).click() page.get_by_role("heading", name="Versions").click() page.once("dialog", lambda dialog: dialog.accept()) page.get_by_role("button", name="Restore this version").last.click() diff --git a/umap/tests/integration/test_edit_map.py b/umap/tests/integration/test_edit_map.py index e0d80309..3d1738de 100644 --- a/umap/tests/integration/test_edit_map.py +++ b/umap/tests/integration/test_edit_map.py @@ -10,7 +10,7 @@ from ..base import DataLayerFactory def test_can_edit_name(page, live_server, tilelayer): page.goto(f"{live_server.url}/en/map/new/") - page.get_by_title("Edit map properties").click() + page.get_by_title("Edit map name and caption").click() name_input = page.locator('.map-metadata input[name="name"]') expect(name_input).to_be_visible() name_input.click() diff --git a/umap/tests/integration/test_edit_marker.py b/umap/tests/integration/test_edit_marker.py index df53ffc5..fb3b2d1a 100644 --- a/umap/tests/integration/test_edit_marker.py +++ b/umap/tests/integration/test_edit_marker.py @@ -44,7 +44,7 @@ def test_marker_style_should_have_precedence(live_server, openmap, page, bootstr # Change colour at layer level page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).click() + page.locator(".panel").get_by_title("Edit", exact=True).click() page.get_by_role("heading", name="Shape properties").click() page.locator(".umap-field-color .define").click() expect(page.locator(".leaflet-marker-icon .icon_container")).to_have_css( @@ -66,7 +66,7 @@ def test_marker_style_should_have_precedence(live_server, openmap, page, bootstr # Now change again at layer level again, it should not change the marker color page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).click() + page.locator(".panel").get_by_title("Edit", exact=True).click() page.get_by_role("heading", name="Shape properties").click() page.locator(".umap-field-color input").click() page.get_by_title("DarkViolet").first.click() diff --git a/umap/tests/integration/test_edit_polygon.py b/umap/tests/integration/test_edit_polygon.py index c34ad65b..b812e181 100644 --- a/umap/tests/integration/test_edit_polygon.py +++ b/umap/tests/integration/test_edit_polygon.py @@ -58,7 +58,7 @@ def test_marker_style_should_have_precedence(live_server, openmap, page, bootstr # Change colour at layer level page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).click() + page.locator(".panel").get_by_title("Edit", exact=True).click() page.get_by_role("heading", name="Shape properties").click() page.locator(".umap-field-color .define").click() expect(page.locator(".leaflet-overlay-pane path[fill='DarkBlue']")).to_have_count(1) @@ -76,7 +76,7 @@ def test_marker_style_should_have_precedence(live_server, openmap, page, bootstr # Now change again at layer level again, it should not change the marker color page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title("Edit", exact=True).click() + page.locator(".panel").get_by_title("Edit", exact=True).click() page.get_by_role("heading", name="Shape properties").click() page.locator(".umap-field-color input").click() page.get_by_title("DarkViolet").first.click() diff --git a/umap/tests/integration/test_import.py b/umap/tests/integration/test_import.py index a50c7a1a..684eae04 100644 --- a/umap/tests/integration/test_import.py +++ b/umap/tests/integration/test_import.py @@ -43,18 +43,18 @@ def test_umap_import_from_file(live_server, tilelayer, page): def test_umap_import_from_textarea(live_server, tilelayer, page, settings): settings.UMAP_ALLOW_ANONYMOUS = True page.goto(f"{live_server.url}/map/new/") + page.get_by_role("button", name="See layers").click() page.get_by_title("Import data").click() textarea = page.locator(".umap-upload textarea") path = Path(__file__).parent.parent / "fixtures/test_upload_data.umap" textarea.fill(path.read_text()) page.locator('select[name="format"]').select_option("umap") page.get_by_role("button", name="Import", exact=True).click() - layers = page.locator(".umap-browse-datalayers li") + layers = page.locator(".umap-browser .datalayer") expect(layers).to_have_count(2) expect(page.locator(".umap-main-edit-toolbox .map-name")).to_have_text( "Imported map" ) - page.get_by_role("button", name="See data layers").click() expect(page.get_by_text("Tunnels")).to_be_visible() expect(page.get_by_text("Cities")).to_be_visible() expect(page.locator(".leaflet-control-minimap")).to_be_visible() @@ -70,6 +70,7 @@ def test_umap_import_from_textarea(live_server, tilelayer, page, settings): def test_import_geojson_from_textarea(tilelayer, live_server, page): page.goto(f"{live_server.url}/map/new/") + page.get_by_title("See layers").click() layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") paths = page.locator("path") @@ -87,7 +88,6 @@ def test_import_geojson_from_textarea(tilelayer, live_server, page): expect(button).to_be_visible() button.click() # A layer has been created - page.get_by_title("See layers").click() expect(layers).to_have_count(1) expect(markers).to_have_count(2) expect(paths).to_have_count(3) @@ -95,7 +95,8 @@ def test_import_geojson_from_textarea(tilelayer, live_server, page): def test_import_kml_from_textarea(tilelayer, live_server, page): page.goto(f"{live_server.url}/map/new/") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") paths = page.locator("path") expect(markers).to_have_count(0) @@ -119,7 +120,8 @@ def test_import_kml_from_textarea(tilelayer, live_server, page): def test_import_gpx_from_textarea(tilelayer, live_server, page): page.goto(f"{live_server.url}/map/new/") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") paths = page.locator("path") expect(markers).to_have_count(0) @@ -143,7 +145,8 @@ def test_import_gpx_from_textarea(tilelayer, live_server, page): def test_import_osm_from_textarea(tilelayer, live_server, page): page.goto(f"{live_server.url}/map/new/") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") expect(markers).to_have_count(0) expect(layers).to_have_count(0) @@ -162,7 +165,8 @@ def test_import_osm_from_textarea(tilelayer, live_server, page): def test_import_csv_from_textarea(tilelayer, live_server, page): page.goto(f"{live_server.url}/map/new/") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") expect(markers).to_have_count(0) expect(layers).to_have_count(0) @@ -181,7 +185,8 @@ def test_import_csv_from_textarea(tilelayer, live_server, page): def test_can_import_in_existing_datalayer(live_server, datalayer, page, openmap): page.goto(f"{live_server.url}{openmap.get_absolute_url()}") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") expect(markers).to_have_count(1) expect(layers).to_have_count(1) @@ -199,7 +204,8 @@ def test_can_import_in_existing_datalayer(live_server, datalayer, page, openmap) def test_can_replace_datalayer_data(live_server, datalayer, page, openmap): page.goto(f"{live_server.url}{openmap.get_absolute_url()}") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") expect(markers).to_have_count(1) expect(layers).to_have_count(1) @@ -218,7 +224,8 @@ def test_can_replace_datalayer_data(live_server, datalayer, page, openmap): def test_can_import_in_new_datalayer(live_server, datalayer, page, openmap): page.goto(f"{live_server.url}{openmap.get_absolute_url()}") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") expect(markers).to_have_count(1) expect(layers).to_have_count(1) @@ -321,7 +328,8 @@ def test_import_geometry_collection(live_server, page, tilelayer): ], } page.goto(f"{live_server.url}/map/new/") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") paths = page.locator("path") expect(markers).to_have_count(0) @@ -356,7 +364,8 @@ def test_import_multipolygon(live_server, page, tilelayer): }, } page.goto(f"{live_server.url}/map/new/") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") paths = page.locator("path") expect(paths).to_have_count(0) expect(layers).to_have_count(0) @@ -387,7 +396,8 @@ def test_import_multipolyline(live_server, page, tilelayer): ], } page.goto(f"{live_server.url}/map/new/") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") paths = page.locator("path") expect(paths).to_have_count(0) expect(layers).to_have_count(0) diff --git a/umap/tests/integration/test_owned_map.py b/umap/tests/integration/test_owned_map.py index 7071e556..d197ff0d 100644 --- a/umap/tests/integration/test_owned_map.py +++ b/umap/tests/integration/test_owned_map.py @@ -236,16 +236,16 @@ def test_can_change_owner(map, live_server, login, user): def test_can_delete_datalayer(live_server, map, login, datalayer): page = login(map.owner) page.goto(f"{live_server.url}{map.get_absolute_url()}?edit") - layers = page.locator(".umap-browse-datalayers li") + page.get_by_title("See layers").click() + layers = page.locator(".umap-browser .datalayer") markers = page.locator(".leaflet-marker-icon") expect(layers).to_have_count(1) expect(markers).to_have_count(1) page.get_by_role("link", name="Manage layers").click() page.once("dialog", lambda dialog: dialog.accept()) - page.locator("#umap-ui-container").get_by_title("Delete layer").click() + page.locator(".panel.right").get_by_title("Delete layer").click() with page.expect_response(re.compile(r".*/datalayer/delete/.*")): page.get_by_role("button", name="Save").click() expect(markers).to_have_count(0) # FIXME does not work, resolve to 1 element, even if this command is empty: - # document.querySelectorAll(".umap-browse-datalayers li") - # expect(layers).to_have_count(0) + expect(layers).to_have_count(0) diff --git a/umap/tests/integration/test_tableeditor.py b/umap/tests/integration/test_tableeditor.py index cb26e511..b2d3cc89 100644 --- a/umap/tests/integration/test_tableeditor.py +++ b/umap/tests/integration/test_tableeditor.py @@ -2,17 +2,13 @@ import json import re from pathlib import Path -from playwright.sync_api import expect - from umap.models import DataLayer def test_table_editor(live_server, openmap, datalayer, page): page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit") page.get_by_role("link", name="Manage layers").click() - page.locator("#umap-ui-container").get_by_title( - "Edit properties in a table" - ).click() + page.locator(".panel").get_by_title("Edit properties in a table").click() page.once("dialog", lambda dialog: dialog.accept(prompt_text="newprop")) page.get_by_text("Add a new property").click() page.locator('input[name="newprop"]').fill("newvalue")