From 046688e35a1c043f8f0639365f30b9727abc2618 Mon Sep 17 00:00:00 2001 From: Masen Furer Date: Thu, 12 Dec 2024 12:57:34 -0800 Subject: [PATCH] raise_console_error during integration tests assert that the framework does not log at `console.error` during an integration test, this helps catch spurious issues that may arise which aren't being explicitly checked for and may not cause the test to fail otherwise. per-test opt out via `ignore_console_error` mark. --- tests/integration/conftest.py | 23 ++++++++++++++++++++ tests/integration/test_exception_handlers.py | 2 ++ 2 files changed, 25 insertions(+) diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py index f7b825f162..d11344903f 100644 --- a/tests/integration/conftest.py +++ b/tests/integration/conftest.py @@ -6,6 +6,7 @@ import pytest +import reflex.app from reflex.config import environment from reflex.testing import AppHarness, AppHarnessProd @@ -76,3 +77,25 @@ def app_harness_env(request): The AppHarness class to use for the test. """ return request.param + + +@pytest.fixture(autouse=True) +def raise_console_error(request, mocker): + """Spy on calls to `console.error` used by the framework. + + Help catch spurious error conditions that might otherwise go unnoticed. + + If a test is marked with `ignore_console_error`, the spy will be ignored + after the test. + + Args: + request: The pytest request object. + mocker: The pytest mocker object. + + Yields: + control to the test function. + """ + spy = mocker.spy(reflex.app.console, "error") + yield + if "ignore_console_error" not in request.keywords: + spy.assert_not_called() diff --git a/tests/integration/test_exception_handlers.py b/tests/integration/test_exception_handlers.py index 406c21e5d9..a645d1de6e 100644 --- a/tests/integration/test_exception_handlers.py +++ b/tests/integration/test_exception_handlers.py @@ -13,6 +13,8 @@ from reflex.testing import AppHarness, AppHarnessProd +pytestmark = [pytest.mark.ignore_console_error] + def TestApp(): """A test app for event exception handler integration."""