add integration test
This commit is contained in:
parent
323a5fe573
commit
de612dca50
88
tests/integration/test_extra_overlay_function.py
Normal file
88
tests/integration/test_extra_overlay_function.py
Normal file
@ -0,0 +1,88 @@
|
||||
"""Test case for displaying the connection banner when the websocket drops."""
|
||||
|
||||
from typing import Generator
|
||||
|
||||
import pytest
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
from reflex.testing import AppHarness, WebDriver
|
||||
|
||||
|
||||
def ExtraOverlay():
|
||||
import reflex as rx
|
||||
|
||||
# Simulate reflex cloud deploy
|
||||
rx.config.get_config().extra_overlay_function = "reflex.components.moment.moment"
|
||||
|
||||
def index():
|
||||
return rx.vstack(
|
||||
rx.el.input(
|
||||
id="token",
|
||||
value=rx.State.router.session.client_token,
|
||||
is_read_only=True,
|
||||
),
|
||||
rx.text(
|
||||
"Hello World",
|
||||
),
|
||||
)
|
||||
|
||||
app = rx.App(_state=rx.State)
|
||||
app.add_page(index)
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def extra_overlay(tmp_path_factory) -> Generator[AppHarness, None, None]:
|
||||
"""Start ExtraOverlay app at tmp_path via AppHarness.
|
||||
|
||||
Args:
|
||||
tmp_path_factory: pytest tmp_path_factory fixture
|
||||
|
||||
Yields:
|
||||
running AppHarness instance
|
||||
"""
|
||||
with AppHarness.create(
|
||||
root=tmp_path_factory.mktemp("extra_overlay"),
|
||||
app_source=ExtraOverlay,
|
||||
) as harness:
|
||||
assert harness.app_instance is not None, "app is not running"
|
||||
yield harness
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def driver(extra_overlay: AppHarness):
|
||||
"""Get an instance of the browser open to the extra overlay app.
|
||||
|
||||
Args:
|
||||
extra_overlay: harness for the ExtraOverlay app.
|
||||
|
||||
Yields:
|
||||
WebDriver instance.
|
||||
"""
|
||||
driver = extra_overlay.frontend()
|
||||
try:
|
||||
token_input = driver.find_element(By.ID, "token")
|
||||
assert token_input
|
||||
# wait for the backend connection to send the token
|
||||
token = extra_overlay.poll_for_value(token_input)
|
||||
assert token is not None
|
||||
|
||||
yield driver
|
||||
finally:
|
||||
driver.quit()
|
||||
|
||||
|
||||
def test_extra_overlay(driver: WebDriver, extra_overlay: AppHarness):
|
||||
"""Test the ExtraOverlay app.
|
||||
|
||||
Args:
|
||||
driver: WebDriver instance.
|
||||
extra_overlay: harness for the ExtraOverlay app.
|
||||
"""
|
||||
# Check that the text is displayed.
|
||||
text = driver.find_element(By.XPATH, "//*[contains(text(), 'Hello World')]")
|
||||
assert text
|
||||
assert text.text == "Hello World"
|
||||
|
||||
time = driver.find_element(By.TAG_NAME, "time")
|
||||
assert time
|
||||
assert time.text
|
Loading…
Reference in New Issue
Block a user