From 4cc9540119f67877f44dc74dbd1ecae83b6a1c1b Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Thu, 26 Dec 2024 15:13:38 +0100 Subject: [PATCH] wip: use django channels in playwright tests --- umap/consumers.py | 4 ++-- umap/static/umap/js/modules/sync/engine.js | 2 +- umap/tests/integration/conftest.py | 13 +++++++++++++ umap/tests/integration/test_websocket_sync.py | 16 ++++++++-------- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/umap/consumers.py b/umap/consumers.py index 2c4a14e7c..d30f253c8 100644 --- a/umap/consumers.py +++ b/umap/consumers.py @@ -4,11 +4,11 @@ from .websocket_server import ( JoinRequest, JoinResponse, + ListPeersResponse, OperationMessage, + PeerMessage, Request, ValidationError, - PeerMessage, - ListPeersResponse, ) diff --git a/umap/static/umap/js/modules/sync/engine.js b/umap/static/umap/js/modules/sync/engine.js index 3a465ce60..4f5a9efa6 100644 --- a/umap/static/umap/js/modules/sync/engine.js +++ b/umap/static/umap/js/modules/sync/engine.js @@ -76,7 +76,7 @@ export class SyncEngine { start(authToken) { this.transport = new WebSocketTransport( - this._umap.properties.websocketURI, + Utils.template(this._umap.properties.websocketURI, { id: this._umap.id }), authToken, this ) diff --git a/umap/tests/integration/conftest.py b/umap/tests/integration/conftest.py index 4601a7093..620ab5ece 100644 --- a/umap/tests/integration/conftest.py +++ b/umap/tests/integration/conftest.py @@ -5,6 +5,7 @@ from pathlib import Path import pytest +from channels.testing import ChannelsLiveServerTestCase from playwright.sync_api import expect from ..base import mock_tiles @@ -87,3 +88,15 @@ def websocket_server(): yield ds_proc # Shut it down at the end of the pytest session ds_proc.terminate() + + +@pytest.fixture(scope="function") +def channels_live_server(request, settings): + server = ChannelsLiveServerTestCase() + server.serve_static = False + server._pre_setup() + settings.WEBSOCKET_FRONT_URI = f"{server.live_server_ws_url}/ws/sync/{{id}}/" + + yield server + + server._post_teardown() diff --git a/umap/tests/integration/test_websocket_sync.py b/umap/tests/integration/test_websocket_sync.py index c5e56e893..17a994365 100644 --- a/umap/tests/integration/test_websocket_sync.py +++ b/umap/tests/integration/test_websocket_sync.py @@ -12,7 +12,7 @@ @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_markers( - new_page, live_server, websocket_server, tilelayer + new_page, live_server, channels_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -80,7 +80,7 @@ def test_websocket_connection_can_sync_markers( @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_polygons( - context, live_server, websocket_server, tilelayer + context, live_server, channels_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -164,7 +164,7 @@ def test_websocket_connection_can_sync_polygons( @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_map_properties( - new_page, live_server, websocket_server, tilelayer + new_page, live_server, channels_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -196,7 +196,7 @@ def test_websocket_connection_can_sync_map_properties( @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_datalayer_properties( - new_page, live_server, websocket_server, tilelayer + new_page, live_server, channels_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -225,7 +225,7 @@ def test_websocket_connection_can_sync_datalayer_properties( @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_cloned_polygons( - context, live_server, websocket_server, tilelayer + context, live_server, channels_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -288,7 +288,7 @@ def test_websocket_connection_can_sync_cloned_polygons( @pytest.mark.xdist_group(name="websockets") def test_websocket_connection_can_sync_late_joining_peer( - new_page, live_server, websocket_server, tilelayer + new_page, live_server, channels_live_server, tilelayer ): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True @@ -349,7 +349,7 @@ def test_websocket_connection_can_sync_late_joining_peer( @pytest.mark.xdist_group(name="websockets") -def test_should_sync_datalayers(new_page, live_server, websocket_server, tilelayer): +def test_should_sync_datalayers(new_page, live_server, channels_live_server, tilelayer): map = MapFactory(name="sync", edit_status=Map.ANONYMOUS) map.settings["properties"]["syncEnabled"] = True map.save() @@ -422,7 +422,7 @@ def test_should_sync_datalayers(new_page, live_server, websocket_server, tilelay @pytest.mark.xdist_group(name="websockets") def test_create_and_sync_map( - new_page, live_server, websocket_server, tilelayer, login, user + new_page, live_server, channels_live_server, tilelayer, login, user ): # Create a syncable map with peerA peerA = login(user, prefix="Page A")