diff --git a/docs/src/reference/template-tag.md b/docs/src/reference/template-tag.md
index 952d3571..146dae4c 100644
--- a/docs/src/reference/template-tag.md
+++ b/docs/src/reference/template-tag.md
@@ -159,7 +159,7 @@ This template tag can be used to insert any number of **client-side** ReactPy co
By default, the only [available dependencies](./template-tag.md#pyscript-setup) are the Python standard library, `pyscript`, `pyodide`, `reactpy` core.
-The entire file path provided is loaded directly into the browser, and must have a `#!python def root()` component to act as the entry point.
+Your Python component file will be directly loaded into the browser. It must have a `#!python def root()` component to act as the entry point.
diff --git a/tests/test_app/components.py b/tests/test_app/components.py
index c505b3f6..bcdf8276 100644
--- a/tests/test_app/components.py
+++ b/tests/test_app/components.py
@@ -222,8 +222,7 @@ async def async_get_or_create_relational_parent():
async def async_get_relational_parent_query():
- # Sleep to avoid race conditions in the test
- # Also serves as a good way of testing whether things are truly async
+ # This sleep helps test whether queries are run asynchronously.
await asyncio.sleep(3)
return await async_get_or_create_relational_parent()
diff --git a/tests/test_app/prerender/components.py b/tests/test_app/prerender/components.py
index 9dbfeb8a..adfdf2fb 100644
--- a/tests/test_app/prerender/components.py
+++ b/tests/test_app/prerender/components.py
@@ -16,6 +16,7 @@ def prerender_string():
if scope.get("type") == "http":
return "prerender_string: Prerendered"
+ # Simulate a processing delay to mimic the behavior of a slow application
sleep(SLEEP_TIME)
return "prerender_string: Fully Rendered"
diff --git a/tests/test_app/templates/async_event_form.html b/tests/test_app/templates/async_event_form.html
index ac98ade6..af77e5c1 100644
--- a/tests/test_app/templates/async_event_form.html
+++ b/tests/test_app/templates/async_event_form.html
@@ -19,7 +19,7 @@
ReactPy Async Event Form Test Page
- {% component "test_app.forms.components.async_event_form" %}
+ {% component "test_app.forms.components.async_event_form" prerender="false" %}
diff --git a/tests/test_app/templates/bootstrap_form.html b/tests/test_app/templates/bootstrap_form.html
index e9e6738d..0ef218db 100644
--- a/tests/test_app/templates/bootstrap_form.html
+++ b/tests/test_app/templates/bootstrap_form.html
@@ -21,7 +21,7 @@
ReactPy Bootstrap Form Test Page
- {% component "test_app.forms.components.bootstrap_form" %}
+ {% component "test_app.forms.components.bootstrap_form" prerender="false" %}
diff --git a/tests/test_app/templates/form.html b/tests/test_app/templates/form.html
index 749564b3..ecffc1ac 100644
--- a/tests/test_app/templates/form.html
+++ b/tests/test_app/templates/form.html
@@ -19,7 +19,7 @@
ReactPy Form Test Page
- {% component "test_app.forms.components.basic_form" %}
+ {% component "test_app.forms.components.basic_form" prerender="false" %}
diff --git a/tests/test_app/templates/model_form.html b/tests/test_app/templates/model_form.html
index 560452e0..3c28eb07 100644
--- a/tests/test_app/templates/model_form.html
+++ b/tests/test_app/templates/model_form.html
@@ -19,7 +19,7 @@
ReactPy Model Form Test Page
- {% component "test_app.forms.components.database_backed_form" %}
+ {% component "test_app.forms.components.database_backed_form" prerender="false" %}
diff --git a/tests/test_app/templates/sync_event_form.html b/tests/test_app/templates/sync_event_form.html
index 49badba2..c22955d1 100644
--- a/tests/test_app/templates/sync_event_form.html
+++ b/tests/test_app/templates/sync_event_form.html
@@ -19,7 +19,7 @@
ReactPy Sync Event Form Test Page
- {% component "test_app.forms.components.sync_event_form" %}
+ {% component "test_app.forms.components.sync_event_form" prerender="false" %}
diff --git a/tests/test_app/tests/test_components.py b/tests/test_app/tests/test_components.py
index 4978c236..9f4fc495 100644
--- a/tests/test_app/tests/test_components.py
+++ b/tests/test_app/tests/test_components.py
@@ -2,7 +2,6 @@
# ruff: noqa: RUF012, N802
import os
import socket
-from time import sleep
from uuid import uuid4
import pytest
@@ -314,11 +313,12 @@ def test_component_use_user_data_with_default(self):
# Attempt to clear data
clear.click(delay=CLICK_DELAY)
- sleep(0.25)
user_data_div = self.page.wait_for_selector(
"#use-user-data-with-default[data-fetch-error=false][data-mutation-error=false][data-loading=false][data-username=user_3]"
)
- assert "Data: {'default1': 'value', 'default2': 'value2', 'default3': 'value3'}" in user_data_div.text_content()
+ expect(self.page.locator("#use-user-data-with-default")).to_contain_text(
+ "Data: {'default1': 'value', 'default2': 'value2', 'default3': 'value3'}"
+ )
@navigate_to_page("/")
def test_component_use_auth(self):
@@ -407,25 +407,20 @@ def test_prerender(self):
use_user_ws = self.page.locator("#use-user-ws[data-success=true]")
# Check if the prerender occurred properly
- string.wait_for()
- vdom.wait_for()
- component.wait_for()
- use_root_id_http.wait_for()
+ expect(string).to_have_text("prerender_string: Prerendered")
+ expect(vdom).to_have_text("prerender_vdom: Prerendered")
+ expect(component).to_have_text("prerender_component: Prerendered")
use_user_http.wait_for()
- assert string.all_inner_texts() == ["prerender_string: Prerendered"]
- assert vdom.all_inner_texts() == ["prerender_vdom: Prerendered"]
- assert component.all_inner_texts() == ["prerender_component: Prerendered"]
- root_id_value = use_root_id_http.get_attribute("data-value")
- assert len(root_id_value) == 36
+ root_id = use_root_id_http.get_attribute("data-value")
+ assert len(use_root_id_http.get_attribute("data-value")) == 36
# Check if the full render occurred
- sleep(2)
- assert string.all_inner_texts() == ["prerender_string: Fully Rendered"]
- assert vdom.all_inner_texts() == ["prerender_vdom: Fully Rendered"]
- assert component.all_inner_texts() == ["prerender_component: Fully Rendered"]
+ expect(string).to_have_text("prerender_string: Fully Rendered")
+ expect(vdom).to_have_text("prerender_vdom: Fully Rendered")
+ expect(component).to_have_text("prerender_component: Fully Rendered")
use_root_id_ws.wait_for()
use_user_ws.wait_for()
- assert use_root_id_ws.get_attribute("data-value") == root_id_value
+ expect(use_root_id_ws).to_have_attribute("data-value", root_id)
###############
# Error Tests #
@@ -729,8 +724,6 @@ def test_form_basic(self):
self.page.wait_for_selector("#id_password_field")
self.page.wait_for_selector("#id_model_choice_field")
self.page.wait_for_selector("#id_model_multiple_choice_field")
-
- sleep(1)
self.page.wait_for_selector("input[type=submit]").click(delay=CLICK_DELAY)
self.page.wait_for_selector(".errorlist")
@@ -801,8 +794,6 @@ def test_form_bootstrap(self):
self.page.wait_for_selector("#id_boolean_field")
self.page.wait_for_selector("#id_char_field")
self.page.wait_for_selector("#id_choice_field")
-
- sleep(1)
self.page.wait_for_selector("button[type=submit]").click(delay=CLICK_DELAY)
self.page.wait_for_selector(".invalid-feedback")
@@ -827,8 +818,6 @@ def test_form_bootstrap(self):
def test_form_orm_model(self):
uuid = uuid4().hex
self.page.wait_for_selector("form")
-
- sleep(1)
self.page.wait_for_selector("input[type=submit]").click(delay=CLICK_DELAY)
self.page.wait_for_selector(".errorlist")
@@ -872,7 +861,6 @@ def test_form_orm_model(self):
# self.page.wait_for_selector("#change[data-value='false']")
# # Submit empty the form
- # sleep(1)
# self.page.wait_for_selector("input[type=submit]").click(delay=CLICK_DELAY)
# # The empty form was submitted, should result in an error
@@ -902,7 +890,6 @@ def test_form_orm_model(self):
# self.page.wait_for_selector("#change[data-value='false']")
# # Submit empty the form
- # sleep(1)
# self.page.wait_for_selector("input[type=submit]").click(delay=CLICK_DELAY)
# # The empty form was submitted, should result in an error