@@ -202,3 +203,86 @@ export class BottomBar extends WithTemplate {
this.elements.filter.hidden = !showMenus || !this._umap.properties.facetKey
}
}
+
+const EDIT_BAR_TEMPLATE = `
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+`
+
+export class EditBar extends WithTemplate {
+ constructor(umap, leafletMap, parent) {
+ super()
+ this._umap = umap
+ this._leafletMap = leafletMap
+ this.loadTemplate(EDIT_BAR_TEMPLATE)
+ this.parent = parent
+ }
+
+ setup() {
+ this.parent.appendChild(this.element)
+ DomEvent.disableClickPropagation(this.element)
+ this._onClick('marker', () => this._leafletMap.editTools.startMarker())
+ this._onClick('polyline', () => this._leafletMap.editTools.startPolyline())
+ this._onClick('multiline', () => {
+ console.log('click click')
+ this._umap.editedFeature.ui.editor.newShape()
+ })
+ this._onClick('polygon', () => this._leafletMap.editTools.startPolygon())
+ this._onClick('multipolygon', () => this._umap.editedFeature.ui.editor.newShape())
+ this._onClick('caption', () => this._umap.editCaption())
+ this._onClick('import', () => this._umap.importer.open())
+ this._onClick('layers', () => this._umap.editDatalayers())
+ this._onClick('tiles', () => this._leafletMap.updateTileLayers())
+ this._onClick('center', () => this._umap.editCenter())
+ this._onClick('key', () => this._umap.permissions.edit())
+ this._onClick('settings', () => this._umap.edit())
+ this._addTitle('import', 'IMPORT_PANEL')
+ this._addTitle('marker', 'DRAW_MARKER')
+ this._addTitle('polyline', 'DRAW_LINE')
+ this._addTitle('polygon', 'DRAW_POLYGON')
+ this._leafletMap.on('seteditedfeature', () => this.redraw())
+ }
+
+ redraw() {
+ const editedFeature = this._umap.editedFeature
+ this.elements.multiline.hidden = !(editedFeature instanceof LineString)
+ this.elements.multipolygon.hidden = !(editedFeature instanceof Polygon)
+ this.elements.caption.hidden = this._umap.properties.editMode !== 'advanced'
+ this.elements.import.hidden = this._umap.properties.editMode !== 'advanced'
+ this.elements.layers.hidden = this._umap.properties.editMode !== 'advanced'
+ this.elements.tiles.hidden = this._umap.properties.editMode !== 'advanced'
+ this.elements.center.hidden = this._umap.properties.editMode !== 'advanced'
+ this.elements.key.hidden = this._umap.properties.editMode !== 'advanced'
+ this.elements.settings.hidden = this._umap.properties.editMode !== 'advanced'
+ }
+
+ _addTitle(ref, label) {
+ this.elements[ref].querySelector('button').title = this._umap.help.displayLabel(
+ label,
+ false
+ )
+ }
+
+ _onClick(ref, action) {
+ // Put the click on the button, not on the li, but keep the data-ref on the li
+ // so to hide/show it when needed.
+ this.elements[ref].querySelector('button').addEventListener('click', action)
+ }
+}
diff --git a/umap/static/umap/js/modules/umap.js b/umap/static/umap/js/modules/umap.js
index 4195c428..9d5926d3 100644
--- a/umap/static/umap/js/modules/umap.js
+++ b/umap/static/umap/js/modules/umap.js
@@ -13,7 +13,7 @@ import { LeafletMap } from './rendering/map.js'
import URLs from './urls.js'
import { Panel, EditPanel, FullPanel } from './ui/panel.js'
import Dialog from './ui/dialog.js'
-import { BottomBar, TopBar } from './ui/bar.js'
+import { BottomBar, TopBar, EditBar } from './ui/bar.js'
import Tooltip from './ui/tooltip.js'
import ContextMenu from './ui/contextmenu.js'
import { Request, ServerRequest } from './request.js'
@@ -92,7 +92,8 @@ export default class Umap extends ServerStored {
fullscreenControl !== undefined ? fullscreenControl : true
if (center) {
- this._leafletMap.options.center = this._leafletMap.latLng(center)
+ this._leafletMap.options.center = this.properties.center =
+ this._leafletMap.latLng(center)
}
// Needed to render controls
@@ -112,6 +113,11 @@ export default class Umap extends ServerStored {
this.slideshow,
this._leafletMap._controlContainer
)
+ this.editBar = new EditBar(
+ this,
+ this._leafletMap,
+ this._leafletMap._controlContainer
+ )
this.tooltip = new Tooltip(this._leafletMap._controlContainer)
this.contextmenu = new ContextMenu()
this.server = new ServerRequest()
@@ -131,6 +137,7 @@ export default class Umap extends ServerStored {
this.fullPanel = new FullPanel(this, this._leafletMap)
this._leafletMap.initEditTools()
this.topBar.setup()
+ this.editBar.setup()
}
this.datalayersFromQueryString = this.searchParams.get('datalayers')
@@ -761,6 +768,41 @@ export default class Umap extends ServerStored {
this.editPanel.open({ content: container })
}
+ editCenter() {
+ if (!this.editEnabled) return
+ if (this.properties.editMode !== 'advanced') return
+ const container = DomUtil.create('div', 'umap-edit-container')
+ const metadataFields = [
+ ['properties.zoom', { handler: 'IntInput', label: translate('Default zoom') }],
+ [
+ 'properties.center.lat',
+ { handler: 'FloatInput', label: translate('Default latitude') },
+ ],
+ [
+ 'properties.center.lng',
+ { handler: 'FloatInput', label: translate('Default longitude') },
+ ],
+ 'properties.defaultView',
+ ]
+
+ DomUtil.createTitle(container, translate('Edit map default view'), 'icon-zoom')
+ const builder = new MutatingForm(this, metadataFields, {
+ className: 'map-metadata',
+ umap: this,
+ })
+ const form = builder.build()
+ const button = Utils.loadTemplate(
+ `
`
+ )
+ button.addEventListener('click', () => {
+ this._setCenterAndZoom()
+ builder.fetchAll()
+ })
+ container.appendChild(form)
+ container.appendChild(button)
+ this.editPanel.open({ content: container })
+ }
+
_editControls(container) {
let UIFields = []
for (const name of this._leafletMap.HIDDABLE_CONTROLS) {
@@ -772,7 +814,6 @@ export default class Umap extends ServerStored {
'properties.miniMap',
'properties.scaleControl',
'properties.onLoadPanel',
- 'properties.defaultView',
'properties.displayPopupFooter',
'properties.captionBar',
'properties.captionMenus',
@@ -1236,6 +1277,7 @@ export default class Umap extends ServerStored {
}
enableEdit() {
+ this.editBar.redraw()
document.body.classList.add('umap-edit-enabled')
this.editEnabled = true
this.drop.enable()
diff --git a/umap/static/umap/js/umap.controls.js b/umap/static/umap/js/umap.controls.js
index 61c43413..472dd515 100644
--- a/umap/static/umap/js/umap.controls.js
+++ b/umap/static/umap/js/umap.controls.js
@@ -1,159 +1,3 @@
-U.BaseAction = L.ToolbarAction.extend({
- initialize: function (map) {
- this.map = map
- if (this.options.label) {
- this.options.tooltip = this.map._umap.help.displayLabel(
- this.options.label,
- (withKbdTag = false)
- )
- }
- this.options.toolbarIcon = {
- className: this.options.className,
- tooltip: this.options.tooltip,
- }
- L.ToolbarAction.prototype.initialize.call(this)
- if (this.options.helpMenu && !U.Help.MENU_ACTIONS[this.options.className])
- U.Help.MENU_ACTIONS[this.options.className] = this
- },
-})
-
-U.ImportAction = U.BaseAction.extend({
- options: {
- helpMenu: true,
- className: 'upload-data dark',
- label: 'IMPORT_PANEL',
- },
-
- addHooks: function () {
- this.map._umap.importer.open()
- },
-})
-
-U.EditLayersAction = U.BaseAction.extend({
- options: {
- helpMenu: true,
- className: 'umap-control-browse dark',
- tooltip: L._('Manage layers'),
- },
-
- addHooks: function () {
- this.map._umap.editDatalayers()
- },
-})
-
-U.EditCaptionAction = U.BaseAction.extend({
- options: {
- helpMenu: true,
- className: 'umap-control-caption dark',
- tooltip: L._('Edit map name and caption'),
- },
-
- addHooks: function () {
- this.map._umap.editCaption()
- },
-})
-
-U.EditPropertiesAction = U.BaseAction.extend({
- options: {
- helpMenu: true,
- className: 'update-map-settings dark',
- tooltip: L._('Map advanced properties'),
- },
-
- addHooks: function () {
- this.map._umap.edit()
- },
-})
-
-U.ChangeTileLayerAction = U.BaseAction.extend({
- options: {
- helpMenu: true,
- className: 'dark update-map-tilelayers',
- tooltip: L._('Change tilelayers'),
- },
-
- addHooks: function () {
- this.map.updateTileLayers()
- },
-})
-
-U.UpdateExtentAction = U.BaseAction.extend({
- options: {
- className: 'update-map-extent dark',
- tooltip: L._('Save this center and zoom'),
- },
-
- addHooks: function () {
- this.map._umap.setCenterAndZoom()
- },
-})
-
-U.UpdatePermsAction = U.BaseAction.extend({
- options: {
- className: 'update-map-permissions dark',
- tooltip: L._('Update permissions and editors'),
- },
-
- addHooks: function () {
- this.map._umap.permissions.edit()
- },
-})
-
-U.DrawMarkerAction = U.BaseAction.extend({
- options: {
- helpMenu: true,
- className: 'umap-draw-marker dark',
- label: 'DRAW_MARKER',
- },
-
- addHooks: function () {
- this.map.editTools.startMarker()
- },
-})
-
-U.DrawPolylineAction = U.BaseAction.extend({
- options: {
- helpMenu: true,
- className: 'umap-draw-polyline dark',
- label: 'DRAW_LINE',
- },
-
- addHooks: function () {
- this.map.editTools.startPolyline()
- },
-})
-
-U.DrawPolygonAction = U.BaseAction.extend({
- options: {
- helpMenu: true,
- className: 'umap-draw-polygon dark',
- label: 'DRAW_POLYGON',
- },
-
- addHooks: function () {
- this.map.editTools.startPolygon()
- },
-})
-
-U.AddPolylineShapeAction = U.BaseAction.extend({
- options: {
- className: 'umap-draw-polyline-multi dark',
- tooltip: L._('Add a line to the current multi'),
- },
-
- addHooks: function () {
- // FIXME: smells bad
- this.map._umap.editedFeature.ui.editor.newShape()
- },
-})
-
-U.AddPolygonShapeAction = U.AddPolylineShapeAction.extend({
- options: {
- className: 'umap-draw-polygon-multi dark',
- tooltip: L._('Add a polygon to the current multi'),
- },
-})
-
U.BaseFeatureAction = L.ToolbarAction.extend({
initialize: function (map, feature, latlng) {
this.map = map
diff --git a/umap/static/umap/map.css b/umap/static/umap/map.css
index 5670a1eb..6ca508f8 100644
--- a/umap/static/umap/map.css
+++ b/umap/static/umap/map.css
@@ -102,12 +102,12 @@ html[dir="rtl"] .leaflet-tooltip-pane > * {
.umap-control-more,
.umap-control-less {
background-image: url('./img/24-white.svg');
- background-position: -72px -366px;
+ background-position: -72px -402px;
text-indent: -9999px;
margin-bottom: 0;
}
.umap-control-less {
- background-position: -108px -366px;
+ background-position: -108px -402px;
}
.umap-more-controls .display-on-more,
.umap-more-controls .umap-control-less {
@@ -177,7 +177,6 @@ html[dir="rtl"] .leaflet-tooltip-pane > * {
line-height: var(--control-size);
display: block;
}
-.leaflet-control-toolbar .leaflet-toolbar-icon.dark:hover,
.edit-enable [type="button"]:hover {
background-color: #4d5759;
}
@@ -318,7 +317,6 @@ ul.photon-autocomplete {
.leaflet-editable-drawing {
cursor: crosshair;
}
-.leaflet-control-toolbar > li > .leaflet-toolbar-icon,
.umap-toolbar a,
.umap-toolbar a:hover {
height: var(--control-size);
@@ -332,9 +330,6 @@ ul.photon-autocomplete {
background-image: url('./img/24.svg');
background-size: auto auto;
}
-.leaflet-control-toolbar li .leaflet-toolbar-icon.dark {
- background-image: url('./img/24-white.svg');
-}
.umap-toolbar {
margin-top: 0;
}
@@ -381,7 +376,6 @@ ul.photon-autocomplete {
.umap-toolbar .umap-draw-polygon-multi {
background-position: 0 -108px;
}
-.umap-edit-enabled .leaflet-control-toolbar > li > .leaflet-toolbar-icon,
.umap-edit-enabled .umap-toolbar a {
display: block;
}
@@ -441,31 +435,8 @@ ul.photon-autocomplete {
border-top: 1px solid #aaa;
padding-top: 10px;
}
-.umap-edit-actions {
- padding-top: 5px;
- clear: both;
-}
-.umap-edit-actions li {
- height: var(--control-size);
- line-height: var(--control-size);
- cursor: pointer;
- margin-bottom: 5px;
- border-radius: 2px;
- border: 1px solid #222;
-}
-.umap-edit-actions li i {
- background-image: url('./img/24-white.svg');
- background-repeat: no-repeat;
- display: table-cell;
- width: var(--control-size);
- height: var(--control-size);
-}
-.umap-edit-actions li span {
- display: table-cell;
- vertical-align: middle;
-}
-.umap-edit-actions li:hover {
- background-color: #353c3e;
+.umap-getstarted button {
+ width: 100%;
}
.umap-help {
font-style: italic;
@@ -568,11 +539,11 @@ ul.photon-autocomplete {
/* ********************************* */
a.umap-control-browse,
.umap-control-browse [type="button"] {
- background-position: -36px -72px;
+ background-position: -144px -180px;
}
a.umap-control-caption,
.umap-control-caption [type="button"] {
- background-position: -72px -72px;
+ background-position: -144px -36px;
}
.leaflet-inplace-toolbar a {
background-repeat: no-repeat;
diff --git a/umap/tests/integration/test_anonymous_owned_map.py b/umap/tests/integration/test_anonymous_owned_map.py
index 85d71903..0ab2fc7e 100644
--- a/umap/tests/integration/test_anonymous_owned_map.py
+++ b/umap/tests/integration/test_anonymous_owned_map.py
@@ -234,7 +234,7 @@ def test_anonymous_owner_can_delete_the_map(anonymap, live_server, owner_session
assert Map.objects.count() == 1
owner_session.goto(f"{live_server.url}{anonymap.get_absolute_url()}")
owner_session.get_by_role("button", name="Edit").click()
- owner_session.get_by_role("link", name="Map advanced properties").click()
+ owner_session.get_by_role("button", name="Map advanced properties").click()
owner_session.get_by_text("Advanced actions").click()
expect(owner_session.get_by_role("button", name="Delete")).to_be_visible()
owner_session.get_by_role("button", name="Delete").click()
@@ -248,6 +248,6 @@ def test_non_owner_cannot_see_delete_button(anonymap, live_server, page):
anonymap.save()
page.goto(f"{live_server.url}{anonymap.get_absolute_url()}")
page.get_by_role("button", name="Edit").click()
- page.get_by_role("link", name="Map advanced properties").click()
+ page.get_by_role("button", name="Map advanced properties").click()
page.get_by_text("Advanced actions").click()
expect(page.get_by_role("button", name="Delete")).to_be_hidden()
diff --git a/umap/tests/integration/test_basics.py b/umap/tests/integration/test_basics.py
index edc5f546..aa89b2bc 100644
--- a/umap/tests/integration/test_basics.py
+++ b/umap/tests/integration/test_basics.py
@@ -26,10 +26,7 @@ def test_create_map_with_cursor(page, live_server, tilelayer):
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a marker button on a new map.
- create_marker_link = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a marker"
- )
- expect(create_marker_link).to_have_attribute("href", "#")
+ create_marker_link = page.locator(".umap-edit-bar ").get_by_title("Draw a marker")
create_marker_link.click()
# Check no marker is present by default.
@@ -56,7 +53,7 @@ def test_cannot_put_script_tag_in_datalayer_name_or_description(
):
page.goto(f"{live_server.url}{openmap.get_absolute_url()}")
page.get_by_role("button", name="Edit").click()
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.get_by_role("button", name="Add a layer").click()
page.locator('input[name="name"]').click()
page.locator('input[name="name"]').fill('')
diff --git a/umap/tests/integration/test_categorized_layer.py b/umap/tests/integration/test_categorized_layer.py
index c3c22641..96a36f01 100644
--- a/umap/tests/integration/test_categorized_layer.py
+++ b/umap/tests/integration/test_categorized_layer.py
@@ -51,8 +51,8 @@ def test_basic_categorized_map_with_custom_brewer(openmap, live_server, page):
expect(page.locator("path[stroke='#3288bd']")).to_have_count(7)
# Now change brewer from UI
- page.get_by_role("button", name="Edit").click()
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Edit", exact=True).click()
+ page.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit", exact=True).click()
page.get_by_text("Categorized: settings").click()
page.locator('select[name="brewer"]').select_option("Paired")
@@ -98,8 +98,8 @@ def test_basic_categorized_map_with_custom_categories(openmap, live_server, page
expect(page.locator("path[stroke='#f0027f']")).to_have_count(1)
# Now change categories from UI
- page.get_by_role("button", name="Edit").click()
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Edit", exact=True).click()
+ page.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit", exact=True).click()
page.get_by_text("Categorized: settings").click()
page.locator('input[name="categories"]').fill(
@@ -121,10 +121,6 @@ def test_basic_categorized_map_with_custom_categories(openmap, live_server, page
expect(page.locator("path[stroke='#f0027f']")).to_have_count(7)
# Now go back to automatic categories
- page.get_by_role("button", name="Edit").click()
- page.get_by_role("link", name="Manage layers").click()
- page.locator(".panel").get_by_title("Edit", exact=True).click()
- page.get_by_text("Categorized: settings").click()
page.get_by_text("Alphabetical").click()
# residential
diff --git a/umap/tests/integration/test_choropleth.py b/umap/tests/integration/test_choropleth.py
index 65ef4ddd..7a9e9372 100644
--- a/umap/tests/integration/test_choropleth.py
+++ b/umap/tests/integration/test_choropleth.py
@@ -48,7 +48,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.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit", exact=True).click()
page.get_by_text("Choropleth: settings").click()
page.locator('select[name="brewer"]').select_option("Greens")
diff --git a/umap/tests/integration/test_conditional_rules.py b/umap/tests/integration/test_conditional_rules.py
index 92c64702..e31a6480 100644
--- a/umap/tests/integration/test_conditional_rules.py
+++ b/umap/tests/integration/test_conditional_rules.py
@@ -252,7 +252,7 @@ def test_can_create_new_rule(live_server, page, openmap):
markers = page.locator(".leaflet-marker-icon .icon_container")
expect(markers).to_have_count(5)
page.get_by_role("button", name="Edit").click()
- page.get_by_role("link", name="Map advanced properties").click()
+ page.get_by_role("button", name="Map advanced properties").click()
page.get_by_text("Conditional style rules").click()
page.get_by_role("button", name="Add rule").click()
page.locator("input[name=condition]").click()
@@ -276,7 +276,7 @@ def test_can_deactive_rule_from_list(live_server, page, openmap):
colors = getColors(markers)
assert colors.count("rgb(240, 248, 255)") == 3
page.get_by_role("button", name="Edit").click()
- page.get_by_role("link", name="Map advanced properties").click()
+ page.get_by_role("button", name="Map advanced properties").click()
page.get_by_text("Conditional style rules").click()
page.get_by_role("button", name="Show/hide layer").click()
colors = getColors(markers)
@@ -289,7 +289,7 @@ def test_can_deactive_rule_from_list(live_server, page, openmap):
def test_autocomplete_datalist(live_server, page, openmap):
DataLayerFactory(map=openmap, data=DATALAYER_DATA1)
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit#6/48.948/1.670")
- page.get_by_role("link", name="Map advanced properties").click()
+ page.get_by_role("button", name="Map advanced properties").click()
page.locator("summary").filter(has_text="Conditional style rules").click()
page.get_by_role("button", name="Add rule").click()
panel = page.locator(".panel.right.on")
diff --git a/umap/tests/integration/test_draw_polygon.py b/umap/tests/integration/test_draw_polygon.py
index 0a5b05b1..33bd3753 100644
--- a/umap/tests/integration/test_draw_polygon.py
+++ b/umap/tests/integration/test_draw_polygon.py
@@ -10,10 +10,8 @@ def test_draw_polygon(page, live_server, tilelayer):
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a polygon button on a new map.
- create_line = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polygon"
- )
- create_line.click()
+ create_path = page.locator(".umap-edit-bar ").get_by_title("Draw a polygon")
+ create_path.click()
# Check no polygon is present by default.
# We target with the color, because there is also the drawing line guide (dash-array)
@@ -44,10 +42,8 @@ def test_clicking_esc_should_finish_polygon(page, live_server, tilelayer):
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a polygon button on a new map.
- create_line = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polygon"
- )
- create_line.click()
+ create_path = page.locator(".umap-edit-bar ").get_by_title("Draw a polygon")
+ create_path.click()
# Check no polygon is present by default.
# We target with the color, because there is also the drawing line guide (dash-array)
@@ -80,10 +76,8 @@ def test_clicking_esc_should_delete_polygon_if_empty(page, live_server, tilelaye
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a polygon button on a new map.
- create_line = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polygon"
- )
- create_line.click()
+ create_path = page.locator(".umap-edit-bar ").get_by_title("Draw a polygon")
+ create_path.click()
# Check no polygon is present by default.
# We target with the color, because there is also the drawing line guide (dash-array)
@@ -105,10 +99,8 @@ def test_clicking_esc_should_delete_polygon_if_invalid(page, live_server, tilela
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a polygon button on a new map.
- create_line = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polygon"
- )
- create_line.click()
+ create_path = page.locator(".umap-edit-bar ").get_by_title("Draw a polygon")
+ create_path.click()
# Check no polygon is present by default.
# We target with the color, because there is also the drawing line guide (dash-array)
diff --git a/umap/tests/integration/test_draw_polyline.py b/umap/tests/integration/test_draw_polyline.py
index ae10590f..d4f63dba 100644
--- a/umap/tests/integration/test_draw_polyline.py
+++ b/umap/tests/integration/test_draw_polyline.py
@@ -10,9 +10,7 @@ def test_draw_polyline(page, live_server, tilelayer):
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a line button on a new map.
- create_line = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polyline"
- )
+ create_line = page.locator(".umap-edit-bar ").get_by_title("Draw a polyline")
create_line.click()
# Check no line is present by default.
@@ -44,9 +42,7 @@ def test_clicking_esc_should_finish_line(page, live_server, tilelayer):
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a line button on a new map.
- create_line = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polyline"
- )
+ create_line = page.locator(".umap-edit-bar ").get_by_title("Draw a polyline")
create_line.click()
# Check no line is present by default.
@@ -80,9 +76,7 @@ def test_clicking_esc_should_delete_line_if_empty(page, live_server, tilelayer):
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a line button on a new map.
- create_line = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polyline"
- )
+ create_line = page.locator(".umap-edit-bar ").get_by_title("Draw a polyline")
create_line.click()
# Check no line is present by default.
@@ -109,9 +103,7 @@ def test_clicking_esc_should_delete_line_if_invalid(page, live_server, tilelayer
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a line button on a new map.
- create_line = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polyline"
- )
+ create_line = page.locator(".umap-edit-bar ").get_by_title("Draw a polyline")
create_line.click()
# Check no line is present by default.
diff --git a/umap/tests/integration/test_edit_datalayer.py b/umap/tests/integration/test_edit_datalayer.py
index a14c8764..7353d25d 100644
--- a/umap/tests/integration/test_edit_datalayer.py
+++ b/umap/tests/integration/test_edit_datalayer.py
@@ -59,7 +59,7 @@ def test_cancel_deleting_datalayer_should_restore(
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.get_by_role("button", name="Manage layers").click()
page.locator(".panel.right").get_by_title("Delete layer").click()
page.get_by_role("button", name="OK").click()
expect(markers).to_have_count(0)
@@ -77,7 +77,7 @@ def test_can_clone_datalayer(live_server, openmap, login, datalayer, page):
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.get_by_role("button", name="Manage layers").click()
page.locator(".panel.right").get_by_title("Edit", exact=True).click()
page.get_by_text("Advanced actions").click()
page.get_by_role("button", name="Clone").click()
@@ -99,7 +99,7 @@ def test_can_change_icon_class(live_server, openmap, page):
DataLayerFactory(map=openmap, data=data)
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit#6/45.3/1")
expect(page.locator(".umap-div-icon")).to_be_visible()
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
expect(page.locator(".umap-circle-icon")).to_be_hidden()
page.locator(".panel.right").get_by_title("Edit", exact=True).click()
page.get_by_text("Shape properties").click()
@@ -113,7 +113,7 @@ def test_can_change_name(live_server, openmap, page, datalayer):
page.goto(
f"{live_server.url}{openmap.get_absolute_url()}?edit&onLoadPanel=databrowser"
)
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").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()
@@ -143,7 +143,7 @@ def test_can_create_new_datalayer(live_server, openmap, page, datalayer):
page.goto(
f"{live_server.url}{openmap.get_absolute_url()}?edit&onLoadPanel=databrowser"
)
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.get_by_role("button", name="Add a layer").click()
page.locator('input[name="name"]').click()
page.locator('input[name="name"]').fill("Layer A")
@@ -155,7 +155,7 @@ def test_can_create_new_datalayer(live_server, openmap, page, datalayer):
assert saved.name == "Layer A"
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.get_by_role("button", name="Manage layers").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("Layer A with a new name")
@@ -179,7 +179,7 @@ def test_can_restore_version(live_server, openmap, page, datalayer):
with page.expect_response(re.compile(".*/datalayer/update/.*")):
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.get_by_role("button", name="Manage layers").click()
page.locator(".panel.right").get_by_title("Edit", exact=True).click()
page.get_by_text("Versions").click()
page.get_by_role("button", name="Restore this version").last.click()
@@ -201,7 +201,7 @@ def test_deleting_datalayer_should_remove_from_browser_and_layers_list(
panel = page.locator(".panel.left")
edit_panel = page.locator(".panel.right")
page.get_by_title("Open browser").click()
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
expect(panel.get_by_text("test datalayer")).to_be_visible()
expect(edit_panel.get_by_text("test datalayer")).to_be_visible()
page.locator(".panel.right").get_by_title("Delete layer").click()
@@ -216,7 +216,7 @@ def test_deleting_datalayer_should_remove_from_caption(
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit")
panel = page.locator(".panel.left")
page.get_by_role("button", name="About").click()
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
expect(panel.get_by_text("test datalayer")).to_be_visible()
page.locator(".panel.right").get_by_title("Delete layer").click()
page.get_by_role("button", name="OK").click()
@@ -225,7 +225,7 @@ def test_deleting_datalayer_should_remove_from_caption(
def test_can_edit_datalayer_name_in_list(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.get_by_role("button", name="Manage layers").click()
page.get_by_text("test datalayer").click()
page.get_by_text("test datalayer").fill("test datalayer foobar")
page.get_by_role("button", name="Open browser").click()
diff --git a/umap/tests/integration/test_edit_map.py b/umap/tests/integration/test_edit_map.py
index 5d7f6d57..78e87935 100644
--- a/umap/tests/integration/test_edit_map.py
+++ b/umap/tests/integration/test_edit_map.py
@@ -182,7 +182,7 @@ def test_sortkey_impacts_datalayerindex(map, live_server, page):
# Change the default sortkey to be "key"
page.get_by_role("button", name="Edit").click()
- page.get_by_role("link", name="Map advanced properties").click()
+ page.get_by_role("button", name="Map advanced properties").click()
page.get_by_text("Default properties").click()
# Click "define"
diff --git a/umap/tests/integration/test_edit_marker.py b/umap/tests/integration/test_edit_marker.py
index 5c91863f..0f419bda 100644
--- a/umap/tests/integration/test_edit_marker.py
+++ b/umap/tests/integration/test_edit_marker.py
@@ -43,7 +43,7 @@ def test_marker_style_should_have_precedence(live_server, openmap, page, bootstr
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit#6/48.5/19")
# Change colour at layer level
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit", exact=True).click()
page.get_by_text("Shape properties").click()
page.locator(".umap-field-color .define").click()
@@ -65,7 +65,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.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit", exact=True).click()
page.get_by_text("Shape properties").click()
page.locator(".umap-field-color input").click()
diff --git a/umap/tests/integration/test_edit_polygon.py b/umap/tests/integration/test_edit_polygon.py
index ec1ce7cc..bbfb7daf 100644
--- a/umap/tests/integration/test_edit_polygon.py
+++ b/umap/tests/integration/test_edit_polygon.py
@@ -57,7 +57,7 @@ def test_marker_style_should_have_precedence(live_server, openmap, page, bootstr
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit")
# Change colour at layer level
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit", exact=True).click()
page.get_by_text("Shape properties").click()
page.locator(".umap-field-color .define").click()
@@ -75,7 +75,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.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit", exact=True).click()
page.get_by_text("Shape properties").click()
page.locator(".umap-field-color input").click()
diff --git a/umap/tests/integration/test_features_id_generation.py b/umap/tests/integration/test_features_id_generation.py
index ca4558a5..1baa3188 100644
--- a/umap/tests/integration/test_features_id_generation.py
+++ b/umap/tests/integration/test_features_id_generation.py
@@ -6,9 +6,7 @@ def test_ids_generation(page, live_server, tilelayer):
page.goto(f"{live_server.url}/en/map/new/")
# Click on the Draw a line button on a new map.
- create_polyline = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polyline"
- )
+ create_polyline = page.locator(".umap-edit-bar ").get_by_title("Draw a polyline")
create_polyline.click()
map = page.locator("#map")
@@ -18,9 +16,7 @@ def test_ids_generation(page, live_server, tilelayer):
map.click(position={"x": 100, "y": 100})
# Click on the Draw a polygon button on a new map.
- create_polygon = page.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polygon"
- )
+ create_polygon = page.locator(".umap-edit-bar ").get_by_title("Draw a polygon")
create_polygon.click()
map = page.locator("#map")
diff --git a/umap/tests/integration/test_import.py b/umap/tests/integration/test_import.py
index 57e9b73a..449da6ad 100644
--- a/umap/tests/integration/test_import.py
+++ b/umap/tests/integration/test_import.py
@@ -17,15 +17,15 @@ pytestmark = pytest.mark.django_db
def test_layers_list_is_updated(live_server, tilelayer, page):
page.goto(f"{live_server.url}/map/new/")
modifier = "Cmd" if platform.system() == "Darwin" else "Ctrl"
- page.get_by_role("link", name=f"Import data ({modifier}+I)").click()
+ page.get_by_role("button", name=f"Import data ({modifier}+I)").click()
# Should work
page.locator("[name=layer-id]").select_option(label="Import in a new layer")
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.get_by_role("button", name="Add a layer").click()
page.locator('input[name="name"]').click()
page.locator('input[name="name"]').fill("foobar")
page.wait_for_timeout(300) # Time for the input debounce.
- page.get_by_role("link", name=f"Import data ({modifier}+I)").click()
+ page.get_by_role("button", name=f"Import data ({modifier}+I)").click()
# Should still work
page.locator("[name=layer-id]").select_option(label="Import in a new layer")
# Now layer should be visible in the options
@@ -571,14 +571,14 @@ def test_create_remote_data(page, live_server, tilelayer):
page.route("*/**/ajax-proxy/**", handle)
page.goto(f"{live_server.url}/map/new/")
expect(page.locator(".leaflet-marker-icon")).to_be_hidden()
- page.get_by_role("link", name="Import data").click()
+ page.get_by_role("button", name="Import data").click()
page.get_by_placeholder("Provide an URL here").click()
page.get_by_placeholder("Provide an URL here").fill("https://remote.org/data.json")
page.locator("[name=format]").select_option("geojson")
page.get_by_role("radio", name="Link to the layer as remote data").click()
page.get_by_role("button", name="Import data", exact=True).click()
expect(page.locator(".leaflet-marker-icon")).to_be_visible()
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.get_by_role("button", name="Edit", exact=True).click()
page.locator("summary").filter(has_text="Remote data").click()
expect(page.locator('.panel input[name="url"]')).to_have_value(
@@ -608,14 +608,14 @@ def test_import_geojson_from_url(page, live_server, tilelayer):
page.route("https://remote.org/data.json", handle)
page.goto(f"{live_server.url}/map/new/")
expect(page.locator(".leaflet-marker-icon")).to_be_hidden()
- page.get_by_role("link", name="Import data").click()
+ page.get_by_role("button", name="Import data").click()
page.get_by_placeholder("Provide an URL here").click()
page.get_by_placeholder("Provide an URL here").fill("https://remote.org/data.json")
page.locator("[name=format]").select_option("geojson")
page.get_by_role("radio", name="Copy into the layer").click()
page.get_by_role("button", name="Import data", exact=True).click()
expect(page.locator(".leaflet-marker-icon")).to_be_visible()
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.get_by_role("button", name="Edit", exact=True).click()
page.locator("summary").filter(has_text="Remote data").click()
expect(page.locator('.panel input[name="url"]')).to_have_value("")
@@ -626,7 +626,7 @@ def test_overpass_import_with_bbox(page, live_server, tilelayer, settings):
"overpass": {"url": "https://my.overpass.io/interpreter"}
}
page.goto(f"{live_server.url}/map/new/")
- page.get_by_role("link", name="Import data").click()
+ page.get_by_role("button", name="Import data").click()
page.get_by_role("button", name="Import helpers").click()
page.get_by_role("button", name="Overpass").click()
page.get_by_placeholder("amenity=drinking_water").fill("building")
@@ -677,7 +677,7 @@ def test_overpass_import_retains_boundary(page, live_server, tilelayer, settings
# Intercept the route
page.route(re.compile("https://foobar.io/api.*"), handle)
page.goto(f"{live_server.url}/map/new/")
- page.get_by_role("link", name="Import data").click()
+ page.get_by_role("button", name="Import data").click()
page.get_by_role("button", name="Import helpers").click()
page.get_by_role("button", name="Overpass").click()
page.get_by_placeholder("amenity=drinking_water").fill("building")
@@ -732,7 +732,7 @@ def test_import_from_datasets(page, live_server, tilelayer, settings):
page.route("https://remote.org/data.json", handle)
page.goto(f"{live_server.url}/map/new/")
expect(page.locator(".leaflet-marker-icon")).to_be_hidden()
- page.get_by_role("link", name="Import data").click()
+ page.get_by_title("Import data").click()
page.get_by_role("button", name="Import helpers").click()
page.get_by_role("button", name="Datasets").click()
page.get_by_role("dialog").get_by_role("combobox").select_option(
@@ -740,7 +740,7 @@ def test_import_from_datasets(page, live_server, tilelayer, settings):
)
page.get_by_role("button", name="Choose this dataset").click()
page.get_by_label("Copy into the layer").check()
- page.get_by_role("button", name="Import data").click()
+ page.get_by_role("button", name="Import data", exact=True).click()
expect(page.locator(".leaflet-marker-icon")).to_be_visible()
page.get_by_role("button", name="Open browser").click()
expect(page.locator("h5").get_by_text("Good data")).to_be_visible()
diff --git a/umap/tests/integration/test_owned_map.py b/umap/tests/integration/test_owned_map.py
index 2eaa9e6a..57ed5ca0 100644
--- a/umap/tests/integration/test_owned_map.py
+++ b/umap/tests/integration/test_owned_map.py
@@ -239,7 +239,7 @@ def test_can_delete_datalayer(live_server, map, login, 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.get_by_role("button", name="Manage layers").click()
page.locator(".panel.right").get_by_title("Delete layer").click()
page.get_by_role("button", name="OK").click()
with page.expect_response(re.compile(r".*/datalayer/delete/.*")):
diff --git a/umap/tests/integration/test_save.py b/umap/tests/integration/test_save.py
index 2ffdaa0e..bab3aa8e 100644
--- a/umap/tests/integration/test_save.py
+++ b/umap/tests/integration/test_save.py
@@ -5,7 +5,7 @@ def test_reseting_map_would_remove_from_save_queue(
live_server, openmap, page, datalayer
):
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit")
- page.get_by_role("link", name="Edit map name and caption").click()
+ page.get_by_role("button", name="Edit map name and caption").click()
requests = []
def register_request(request):
@@ -20,7 +20,7 @@ def test_reseting_map_would_remove_from_save_queue(
page.get_by_role("button", name="OK").click()
page.wait_for_timeout(500)
page.get_by_role("button", name="Edit").click()
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.get_by_role("button", name="Edit", exact=True).click()
page.locator('input[name="name"]').click()
page.locator('input[name="name"]').fill("new datalayer name")
diff --git a/umap/tests/integration/test_tableeditor.py b/umap/tests/integration/test_tableeditor.py
index 003a7504..54c22745 100644
--- a/umap/tests/integration/test_tableeditor.py
+++ b/umap/tests/integration/test_tableeditor.py
@@ -67,7 +67,7 @@ DATALAYER_DATA = {
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.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit properties in a table").click()
page.get_by_text("Add a new property").click()
page.locator("dialog").locator("input").fill("newprop")
@@ -89,7 +89,7 @@ def test_table_editor(live_server, openmap, datalayer, page):
def test_cannot_add_existing_property_name(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.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit properties in a table").click()
page.get_by_text("Add a new property").click()
page.locator("dialog").locator("input").fill("name")
@@ -102,7 +102,7 @@ def test_cannot_add_existing_property_name(live_server, openmap, datalayer, page
def test_cannot_add_property_with_a_dot(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.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit properties in a table").click()
page.get_by_text("Add a new property").click()
page.locator("dialog").locator("input").fill("foo.bar")
@@ -115,7 +115,7 @@ def test_cannot_add_property_with_a_dot(live_server, openmap, datalayer, page):
def test_rename_property(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.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit properties in a table").click()
expect(page.locator("table th button[data-property=name]")).to_have_count(1)
page.locator("thead button[data-property=name]").click()
@@ -129,7 +129,7 @@ def test_rename_property(live_server, openmap, datalayer, page):
def test_delete_selected_rows(live_server, openmap, page):
DataLayerFactory(map=openmap, data=DATALAYER_DATA)
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit#6/48.093/1.890")
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit properties in a table").click()
expect(page.locator("tbody tr")).to_have_count(4)
expect(page.locator(".leaflet-marker-icon")).to_have_count(4)
@@ -143,7 +143,7 @@ def test_delete_selected_rows(live_server, openmap, page):
def test_delete_all_rows(live_server, openmap, page):
DataLayerFactory(map=openmap, data=DATALAYER_DATA)
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit#6/48.093/1.890")
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit properties in a table").click()
expect(page.locator("tbody tr")).to_have_count(4)
expect(page.locator(".leaflet-marker-icon")).to_have_count(4)
@@ -159,7 +159,7 @@ def test_filter_and_delete_rows(live_server, openmap, page):
panel = page.locator(".panel.left.on")
table = page.locator(".panel.full table")
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit#6/48.093/1.890")
- page.get_by_role("link", name="Manage layers").click()
+ page.get_by_role("button", name="Manage layers").click()
page.locator(".panel").get_by_title("Edit properties in a table").click()
expect(table.locator("tbody tr")).to_have_count(4)
expect(page.locator(".leaflet-marker-icon")).to_have_count(4)
diff --git a/umap/tests/integration/test_websocket_sync.py b/umap/tests/integration/test_websocket_sync.py
index d0999cde..15e8673e 100644
--- a/umap/tests/integration/test_websocket_sync.py
+++ b/umap/tests/integration/test_websocket_sync.py
@@ -107,9 +107,7 @@ def test_websocket_connection_can_sync_polygons(context, asgi_live_server, tilel
b_map_el = peerB.locator("#map")
# Click on the Draw a polygon button on a new map.
- create_line = peerA.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polygon"
- )
+ create_line = peerA.locator(".umap-edit-bar ").get_by_title("Draw a polygon")
create_line.click()
a_polygons = peerA.locator(".leaflet-overlay-pane path[fill='DarkBlue']")
@@ -189,14 +187,14 @@ def test_websocket_connection_can_sync_map_properties(
peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit")
# Name change is synced
- peerA.get_by_role("link", name="Edit map name and caption").click()
+ peerA.get_by_role("button", name="Edit map name and caption").click()
peerA.locator('input[name="name"]').click()
peerA.locator('input[name="name"]').fill("it syncs!")
expect(peerB.locator(".map-name").last).to_have_text("it syncs!")
# Zoom control is synced
- peerB.get_by_role("link", name="Map advanced properties").click()
+ peerB.get_by_role("button", name="Map advanced properties").click()
peerB.locator("summary").filter(has_text="User interface options").click()
switch = peerB.locator("div.formbox").filter(
has_text=re.compile("Display the zoom control")
@@ -223,14 +221,14 @@ def test_websocket_connection_can_sync_datalayer_properties(
peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit")
# Layer addition, name and type are synced
- peerA.get_by_role("link", name="Manage layers").click()
+ peerA.get_by_role("button", name="Manage layers").click()
peerA.get_by_role("button", name="Add a layer").click()
peerA.locator('input[name="name"]').click()
peerA.locator('input[name="name"]').fill("synced layer!")
peerA.get_by_role("combobox").select_option("Choropleth")
peerA.locator("body").press("Escape")
- peerB.get_by_role("link", name="Manage layers").click()
+ peerB.get_by_role("button", name="Manage layers").click()
peerB.locator(".panel.right").get_by_role("button", name="Edit").first.click()
expect(peerB.locator('input[name="name"]')).to_have_value("synced layer!")
expect(peerB.get_by_role("combobox")).to_have_value("Choropleth")
@@ -254,9 +252,7 @@ def test_websocket_connection_can_sync_cloned_polygons(
b_map_el = peerB.locator("#map")
# Click on the Draw a polygon button on a new map.
- create_line = peerA.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polygon"
- )
+ create_line = peerA.locator(".umap-edit-bar ").get_by_title("Draw a polygon")
create_line.click()
a_polygons = peerA.locator(".leaflet-overlay-pane path[fill='DarkBlue']")
@@ -324,9 +320,7 @@ def test_websocket_connection_can_sync_late_joining_peer(
peerA.wait_for_timeout(300)
# Add a polygon from peer A
- create_polygon = peerA.locator(".leaflet-control-toolbar ").get_by_title(
- "Draw a polygon"
- )
+ create_polygon = peerA.locator(".umap-edit-bar ").get_by_title("Draw a polygon")
create_polygon.click()
a_map_el.click(position={"x": 200, "y": 200})
@@ -377,7 +371,7 @@ def test_should_sync_datalayers(new_page, asgi_live_server, tilelayer):
peerB.goto(f"{asgi_live_server.url}{map.get_absolute_url()}?edit")
# Create a new layer from peerA
- peerA.get_by_role("link", name="Manage layers").click()
+ peerA.get_by_role("button", name="Manage layers").click()
peerA.get_by_role("button", name="Add a layer").click()
# Check layer has been sync to peerB
@@ -385,7 +379,7 @@ def test_should_sync_datalayers(new_page, asgi_live_server, tilelayer):
expect(peerB.get_by_text("Layer 1")).to_be_visible()
# Draw a marker in layer 1 from peerA
- peerA.get_by_role("link", name="Draw a marker (Ctrl+M)").click()
+ peerA.get_by_role("button", name="Draw a marker (Ctrl+M)").click()
peerA.locator("#map").click()
# Check marker is visible from peerB
@@ -398,9 +392,9 @@ def test_should_sync_datalayers(new_page, asgi_live_server, tilelayer):
assert DataLayer.objects.count() == 1
# Create another layer from peerA and draw a marker on it (without saving to server)
- peerA.get_by_role("link", name="Manage layers").click()
+ peerA.get_by_role("button", name="Manage layers").click()
peerA.get_by_role("button", name="Add a layer").click()
- peerA.get_by_role("link", name="Draw a marker (Ctrl+M)").click()
+ peerA.get_by_role("button", name="Draw a marker (Ctrl+M)").click()
peerA.locator("#map").click()
# Make sure this new marker is in Layer 2 for peerB
@@ -411,7 +405,7 @@ def test_should_sync_datalayers(new_page, asgi_live_server, tilelayer):
expect(peerB.locator(".leaflet-marker-icon")).to_be_visible()
# Now draw a marker from peerB
- peerB.get_by_role("link", name="Draw a marker (Ctrl+M)").click()
+ peerB.get_by_role("button", name="Draw a marker (Ctrl+M)").click()
peerB.locator("#map").click()
peerB.locator('input[name="name"]').fill("marker from peerB")
@@ -503,15 +497,15 @@ def test_create_and_sync_map(new_page, asgi_live_server, tilelayer, login, user)
# Create a syncable map with peerA
peerA = login(user, prefix="Page A")
peerA.goto(f"{asgi_live_server.url}/en/map/new/")
- peerA.get_by_role("link", name="Map advanced properties").click()
+ peerA.get_by_role("button", name="Map advanced properties").click()
expect(peerA.get_by_text("Real-time collaboration", exact=True)).to_be_hidden()
with peerA.expect_response(re.compile("./map/create/.*")):
peerA.get_by_role("button", name="Save Draft").click()
- peerA.get_by_role("link", name="Map advanced properties").click()
+ peerA.get_by_role("button", name="Map advanced properties").click()
expect(peerA.get_by_text("Real-time collaboration", exact=True)).to_be_visible()
peerA.get_by_text("Real-time collaboration", exact=True).click()
peerA.get_by_text("Enable real-time").click()
- peerA.get_by_role("link", name="Update permissions and editors").click()
+ peerA.get_by_role("button", name="Update permissions and editors").click()
peerA.locator('select[name="share_status"]').select_option(str(Map.PUBLIC))
with peerA.expect_response(re.compile("./update/settings/.*")):
peerA.get_by_role("button", name="Save").click()