wip minified state integration test
This commit is contained in:
parent
7287c3a167
commit
215a8343f4
99
tests/integration/test_minified_states.py
Normal file
99
tests/integration/test_minified_states.py
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
"""Integration tests for minified state names."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import time
|
||||||
|
from typing import Generator, Type
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from selenium.webdriver.common.by import By
|
||||||
|
from selenium.webdriver.remote.webdriver import WebDriver
|
||||||
|
from selenium.webdriver.support import expected_conditions as EC
|
||||||
|
from selenium.webdriver.support.ui import WebDriverWait
|
||||||
|
|
||||||
|
from reflex.testing import AppHarness
|
||||||
|
|
||||||
|
|
||||||
|
def TestApp():
|
||||||
|
"""A test app for minified state names."""
|
||||||
|
import reflex as rx
|
||||||
|
|
||||||
|
class TestAppState(rx.State):
|
||||||
|
"""State for the TestApp app."""
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
app = rx.App()
|
||||||
|
|
||||||
|
@app.add_page
|
||||||
|
def index():
|
||||||
|
return rx.vstack(
|
||||||
|
rx.input(
|
||||||
|
value=TestAppState.router.session.client_token,
|
||||||
|
is_read_only=True,
|
||||||
|
id="token",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module")
|
||||||
|
def test_app(
|
||||||
|
app_harness_env: Type[AppHarness], tmp_path_factory: pytest.TempPathFactory
|
||||||
|
) -> Generator[AppHarness, None, None]:
|
||||||
|
"""Start TestApp app at tmp_path via AppHarness.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
app_harness_env: either AppHarness (dev) or AppHarnessProd (prod)
|
||||||
|
tmp_path_factory: pytest tmp_path_factory fixture
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
running AppHarness instance
|
||||||
|
|
||||||
|
"""
|
||||||
|
with app_harness_env.create(
|
||||||
|
root=tmp_path_factory.mktemp("test_app"),
|
||||||
|
app_name=f"testapp_{app_harness_env.__name__.lower()}",
|
||||||
|
app_source=TestApp, # type: ignore
|
||||||
|
) as harness:
|
||||||
|
yield harness
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def driver(test_app: AppHarness) -> Generator[WebDriver, None, None]:
|
||||||
|
"""Get an instance of the browser open to the test_app app.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
test_app: harness for TestApp app
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
WebDriver instance.
|
||||||
|
|
||||||
|
"""
|
||||||
|
assert test_app.app_instance is not None, "app is not running"
|
||||||
|
driver = test_app.frontend()
|
||||||
|
try:
|
||||||
|
yield driver
|
||||||
|
finally:
|
||||||
|
driver.quit()
|
||||||
|
|
||||||
|
|
||||||
|
def test_minified_states(
|
||||||
|
test_app: AppHarness,
|
||||||
|
driver: WebDriver,
|
||||||
|
) -> None:
|
||||||
|
"""Test minified state names.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
test_app: harness for TestApp
|
||||||
|
driver: WebDriver instance.
|
||||||
|
|
||||||
|
"""
|
||||||
|
assert test_app.app_instance is not None, "app is not running"
|
||||||
|
|
||||||
|
# get a reference to the connected client
|
||||||
|
token_input = driver.find_element(By.ID, "token")
|
||||||
|
assert token_input
|
||||||
|
|
||||||
|
# wait for the backend connection to send the token
|
||||||
|
token = test_app.poll_for_value(token_input)
|
||||||
|
assert token
|
Loading…
Reference in New Issue
Block a user