Skip to content

Commit 79692e9

Browse files
committed
fix: use direct return pattern for navigate in tests to avoid empty button content
When navigate() was rendered as a child of html.button(), the Navigate component's JS null-render left the button with empty text. Changed tests to return navigate() at the component level instead.
1 parent f048639 commit 79692e9

1 file changed

Lines changed: 29 additions & 16 deletions

File tree

tests/test_router.py

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -364,18 +364,24 @@ async def test_navigate_component_go_back(display: DisplayFixture):
364364
def nav_btn():
365365
nav, set_nav = use_state("")
366366

367+
if nav:
368+
return navigate(nav)
369+
367370
return html.button(
368-
{"onClick": lambda _: set_nav("/a")},
369-
navigate(nav) if nav else "Go to A",
371+
{"onClick": lambda _: set_nav("/a"), "id": "nav-to-a"},
372+
"Go to A",
370373
)
371374

372375
@component
373376
def back_btn():
374377
delta, set_delta = use_state("")
375378

379+
if isinstance(delta, int):
380+
return navigate(delta)
381+
376382
return html.button(
377-
{"onClick": lambda _: set_delta(-1)},
378-
navigate(delta) if isinstance(delta, int) else "Go back",
383+
{"onClick": lambda _: set_delta(-1), "id": "go-back"},
384+
"Go back",
379385
)
380386

381387
@component
@@ -387,19 +393,20 @@ def sample():
387393

388394
await display.show(sample)
389395

390-
# Navigate to /a using the link
391-
btn = await display.page.wait_for_selector("button")
392-
assert await btn.text_content() == "Go to A"
393-
await btn.click()
396+
# Navigate to /a
397+
await display.page.wait_for_selector("#nav-to-a")
398+
await display.page.click("#nav-to-a")
399+
400+
# Wait for the go-back button to appear on route /a
401+
await display.page.wait_for_selector("#go-back")
402+
assert await display.page.text_content("#go-back") == "Go back"
394403

395404
# Go back using navigate(-1)
396-
btn = await display.page.wait_for_selector("button")
397-
assert await btn.text_content() == "Go back"
398-
await btn.click()
405+
await display.page.click("#go-back")
399406

400407
# Verify we're back at the root route
401-
btn = await display.page.wait_for_selector("button")
402-
assert await btn.text_content() == "Go to A"
408+
await display.page.wait_for_selector("#nav-to-a")
409+
assert await display.page.text_content("#nav-to-a") == "Go to A"
403410

404411

405412
async def test_navigate_component_go_forward(display: DisplayFixture):
@@ -409,18 +416,24 @@ async def test_navigate_component_go_forward(display: DisplayFixture):
409416
def forward_btn():
410417
delta, set_delta = use_state("")
411418

419+
if isinstance(delta, int):
420+
return navigate(delta)
421+
412422
return html.button(
413423
{"onClick": lambda _: set_delta(1), "id": "go-forward"},
414-
navigate(delta) if isinstance(delta, int) else "Go forward",
424+
"Go forward",
415425
)
416426

417427
@component
418428
def back_btn():
419429
delta, set_delta = use_state("")
420430

431+
if isinstance(delta, int):
432+
return navigate(delta)
433+
421434
return html.button(
422435
{"onClick": lambda _: set_delta(-1), "id": "go-back"},
423-
navigate(delta) if isinstance(delta, int) else "Go back",
436+
"Go back",
424437
)
425438

426439
@component
@@ -434,9 +447,9 @@ def sample():
434447

435448
# Navigate to /a via full page load (builds forward history entry)
436449
await display.goto("/a")
437-
await display.page.wait_for_selector("#go-back")
438450

439451
# Go back to / via navigate(-1)
452+
await display.page.wait_for_selector("#go-back")
440453
await display.page.click("#go-back")
441454

442455
# Should now be at / with the "Go forward" button

0 commit comments

Comments
 (0)