Skip to content

Commit b50afd4

Browse files
committed
Fix test_router failures
1 parent eee3a87 commit b50afd4

File tree

3 files changed

+15
-24
lines changed

3 files changed

+15
-24
lines changed

src/reactpy_router/routers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def on_first_load(event: dict[str, Any]) -> None:
7474
"""Callback function used within the JavaScript `FirstLoad` component."""
7575
if first_load:
7676
set_first_load(False)
77-
on_history_change(event)
77+
on_history_change(event)
7878

7979
return ConnectionContext(
8080
History({"onHistoryChangeCallback": on_history_change}), # type: ignore[return-value]

src/reactpy_router/static/link.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@ document.querySelector(".UUID").addEventListener(
55
if (!event.ctrlKey) {
66
event.preventDefault();
77
let to = event.target.getAttribute("href");
8-
window.history.pushState({}, to, new URL(to, window.location));
8+
let new_url = new URL(to, window.location);
9+
10+
// Deduplication needed due to ReactPy rendering bug
11+
if (new_url.href !== window.location.href) {
12+
window.history.pushState({}, to, new URL(to, window.location));
13+
}
914
}
1015
},
1116
{ once: true },

tests/test_router.py

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from reactpy_router import browser_router, link, navigate, route, use_params, use_search_params
99

1010
GITHUB_ACTIONS = os.getenv("GITHUB_ACTIONS", "").lower() == "true"
11-
CLICK_DELAY = 400 if GITHUB_ACTIONS else 25 # Delay in miliseconds.
11+
CLICK_DELAY = 350 if GITHUB_ACTIONS else 25 # Delay in miliseconds.
1212

1313

1414
async def test_simple_router(display: DisplayFixture):
@@ -209,32 +209,18 @@ def sample():
209209

210210
await display.show(sample)
211211

212-
for link_selector in ["#root", "#a", "#b", "#c", "#d", "#e", "#f"]:
212+
selectors = ["#root", "#a", "#b", "#c", "#d", "#e", "#f"]
213+
214+
for link_selector in selectors:
213215
_link = await display.page.wait_for_selector(link_selector)
214216
await _link.click(delay=CLICK_DELAY)
215217

216218
await display.page.wait_for_selector("#default")
217219

218-
await display.page.go_back()
219-
await display.page.wait_for_selector("#f")
220-
221-
await display.page.go_back()
222-
await display.page.wait_for_selector("#e")
223-
224-
await display.page.go_back()
225-
await display.page.wait_for_selector("#d")
226-
227-
await display.page.go_back()
228-
await display.page.wait_for_selector("#c")
229-
230-
await display.page.go_back()
231-
await display.page.wait_for_selector("#b")
232-
233-
await display.page.go_back()
234-
await display.page.wait_for_selector("#a")
235-
236-
await display.page.go_back()
237-
await display.page.wait_for_selector("#root")
220+
selectors.reverse()
221+
for link_selector in selectors:
222+
await display.page.go_back()
223+
await display.page.wait_for_selector(link_selector)
238224

239225

240226
async def test_link_with_query_string(display: DisplayFixture):

0 commit comments

Comments
 (0)