0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 11:41:49 +02:00

feat: add rpc_widget e2e for all widgets

This commit is contained in:
2025-04-11 16:31:27 +02:00
committed by wakonig_k
parent db45f32cbf
commit 6366311456
6 changed files with 829 additions and 22 deletions

View File

@ -3,6 +3,10 @@
import random
import pytest
from bec_lib.client import BECClient
from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_lib.tests.utils import wait_for_empty_queue
from bec_widgets.cli.client_utils import BECGuiClient, _start_plot_process
from bec_widgets.utils import BECDispatcher
@ -44,14 +48,43 @@ def connected_client_gui_obj(gui_id, bec_client_lib):
@pytest.fixture(scope="session")
def connected_gui_with_scope_session(gui_id, bec_client_lib):
def bec_client_lib_with_demo_config_session(
bec_redis_fixture, bec_services_config_file_path, bec_servers
):
"""Session-scoped fixture to create a BECClient object with a demo configuration."""
config = ServiceConfig(bec_services_config_file_path)
bec = BECClient(config, RedisConnector, forced=True, wait_for_server=True)
bec.start()
bec.config.load_demo_config()
try:
yield bec
finally:
bec.shutdown()
@pytest.fixture(scope="session")
def bec_client_lib_session(bec_client_lib_with_demo_config_session):
"""Session-scoped fixture to create a BECClient object with a demo configuration."""
bec = bec_client_lib_with_demo_config_session
bec.queue.request_queue_reset()
bec.queue.request_scan_continuation()
wait_for_empty_queue(bec)
yield bec
@pytest.fixture(scope="session")
def connected_gui_and_bec_with_scope_session(bec_client_lib_session):
"""
Fixture to create a new BECGuiClient object and start a server in the background.
This fixture is scoped to the session, meaning it remains alive for all tests in the session.
We can use this fixture to create a gui object that is used across multiple tests, and
simulate a real-world scenario where the gui is not restarted for each test.
Returns:
The gui object as for the CLI and bec_client_lib object.
"""
gui_id = "GUIMainWindow_TEST"
gui = BECGuiClient(gui_id=gui_id)
try:
gui.start(wait=True)