-
-
Notifications
You must be signed in to change notification settings - Fork 329
Expand file tree
/
Copy pathtest_components.py
More file actions
71 lines (50 loc) · 2.24 KB
/
test_components.py
File metadata and controls
71 lines (50 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from pathlib import Path
import pytest
import reactpy
from reactpy import html, pyscript_component
from reactpy.executors.asgi import ReactPy
from reactpy.testing import BackendFixture, DisplayFixture
from reactpy.testing.backend import root_hotswap_component
@pytest.fixture(scope="module")
async def display(browser):
"""Override for the display fixture that uses ReactPyMiddleware."""
app = ReactPy(root_hotswap_component, pyscript_setup=True)
async with BackendFixture(app) as server:
async with DisplayFixture(backend=server, browser=browser) as new_display:
yield new_display
async def test_pyscript_component(display: DisplayFixture):
@reactpy.component
def Counter():
return pyscript_component(
Path(__file__).parent / "pyscript_components" / "root.py",
initial=html.div({"id": "loading"}, "Loading..."),
)
await display.show(Counter)
await display.page.wait_for_selector("#loading")
await display.page.wait_for_selector("#incr")
await display.page.click("#incr")
await display.page.wait_for_selector("#incr[data-count='1']")
await display.page.click("#incr")
await display.page.wait_for_selector("#incr[data-count='2']")
await display.page.click("#incr")
await display.page.wait_for_selector("#incr[data-count='3']")
async def test_custom_root_name(display: DisplayFixture):
@reactpy.component
def CustomRootName():
return pyscript_component(
Path(__file__).parent / "pyscript_components" / "custom_root_name.py",
initial=html.div({"id": "loading"}, "Loading..."),
root="custom",
)
await display.show(CustomRootName)
await display.page.wait_for_selector("#loading")
await display.page.wait_for_selector("#incr")
await display.page.click("#incr")
await display.page.wait_for_selector("#incr[data-count='1']")
await display.page.click("#incr")
await display.page.wait_for_selector("#incr[data-count='2']")
await display.page.click("#incr")
await display.page.wait_for_selector("#incr[data-count='3']")
def test_bad_file_path():
with pytest.raises(ValueError):
pyscript_component(initial=html.div({"id": "loading"}, "Loading...")).render()