Latest Results
fix(config): read the assigned config instead of a stand-in mid-import
The env/default stand-in returned while rxconfig.py imports gave wrong
values. rx.asset below `config = rx.Config(frontend_path=...)` lost the
frontend path, so `reflex export` baked an asset URL that 404s. Modules
that rxconfig.py imports, which read the real config on main, got the
stand-in too: no custom attributes, no plugins, no db_url.
A config read during the rxconfig.py import now:
- returns the `config` that rxconfig.py already assigned;
- raises ConfigError when rxconfig.py's own top-level code reads before
it assigns `config`, because every nested import would run that read
again and recurse forever;
- else imports rxconfig.py once more, nested, as on main. A module that
rxconfig.py imports does not run again, so the nested import ends.
No Config is built mid-import, so the state_auto_setters save/restore
and the get_config() no-cache branch go away.vjymisal0:fix/asset-in-rxconfig-recursion test: migrate integration tests to Playwright (#7697)
* test: migrate integration tests to Playwright
* test: restore coverage in Playwright migration
* test: address Playwright migration review feedback
* test: address PR 7697 review feedback
* test: wait for exact route event sequence
* test: await dynamic route 404 event
* test: allow optional 404 load event
* test: isolate lifespan harness and restore upload assertions
* fix: preserve AppHarness testing API
* test: migrate background task check to Playwright
* test: restore checks weakened in the Playwright migration
- test_lifespan: keep lifespan_app session-scoped. A per-test app stops
the backend inside the raise_console_error window, and on redis the
shutdown logs "Redis error deleting token", so the test fails at
teardown.
- test_dynamic_routes: render the event order on /404 and require its
on_load after the direct load and after the client-side link.
- test_input, test_form_submit: type key by key and press Enter instead
of fill().
- test_var_operations: match text with an anchored regex, because a
string match normalizes whitespace.
- test_computed_vars: fail on any change of count3.
- test_linked_state: restore the n-changes checks.
- test_media: anchor image src to the base64 data URI.
- test_upload: check the suggested download file name.
- test_client_storage: check that the default cookies are session
cookies.
- utils: give poll_assert_relative_event_order a 15 s default timeout.
- performance: move the large-state parametrization hook into its
module.
- CI: split the Playwright job in two and drop the split from the
non-browser job.
- Add Args sections to the test docstrings.
* test: restore the remaining Selenium-era checks
- test_large_state: fix the app template indent and give each size its
own app name. Before, every size above 1 was invalid Python, and the
harness silently reran the 1-var app from the first size (on main
too). The test now asserts that the app has var_count state vars.
- test_navigation: wait for the token before the first click, and check
an element that only the /internal page renders.
- test_upload: restore the #token hydration wait and the state-bound
disabled prop, check exact selected file names, clear 3 files, wait
for both streamed files to complete, download every attachment case
in the browser, and parse the on_drop file list as JSON.
- test_client_storage: read cookies for the current URL, so c5 is
absent at / and present at /foo/, and check the full c3 and c5
attributes.
- test_login_flow: check the exact index URL after login.
- test_server_side_event: check the starting values before the click.
- test_background_task: wait for a non-empty sid before reading it.
- test_dynamic_routes: check the exact index URL.
- test_linked_state: restore the n-changes checks after unlink/relink.
- Token waits: 30 s in background_task and computed_vars, 15 s in the
other migrated modules, as before the migration.
* test: disconnect the page before test_lifespan stops the backend
test_lifespan stopped the backend while its page was still connected.
The socket disconnect then spawned a token cleanup task. AppHarness had
already closed redis, so the task was still pending when the event loop
stopped, and its redis delete logged "Redis error deleting token". The
console-error check failed the test. With the session-scoped app, the
reruns then hit the stopped backend and failed too.
Close the page and wait until the server has dropped the token (and,
on redis, deleted its key) before stopping the backend.
* test: document the helpers added in the Playwright migration
---------
Co-authored-by: Farhan <www.mfarvirus@gmail.com> Latest Branches
0%
vjymisal0:fix/asset-in-rxconfig-recursion 0%
0%
farhan/amazing-bardeen-8ddaa1 © 2026 CodSpeed Technology