Files
RosterChief/rosterchief/tests.py
Bernard Siebens 334c706aec Reload the browser on template and static changes in dev
Adds django-browser-reload: runserver already restarts on Python changes, but
the browser had to be refreshed by hand for every template or CSS edit. It also
watches static/, so a Tailwind rebuild now refreshes the page on its own.

Mounted only under DEBUG -- it injects a script into every HTML response and
serves an open event stream, neither of which belongs in production; a test
holds that line. Its endpoint is exempt from RequireMFAMiddleware, otherwise a
not-yet-enrolled staff user has the stream redirected away and live reload dies
on the MFA enrolment page, which is exactly a page we are restyling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 18:32:19 +02:00

31 lines
973 B
Python

import importlib
from django.test import SimpleTestCase, override_settings
from django.urls import Resolver404, clear_url_caches, resolve
from . import urls
class BrowserReloadUrlTests(SimpleTestCase):
"""django-browser-reload serves an open event stream and injects a script into
every HTML response, so it must never be mounted outside DEBUG."""
def reload_urlconf(self):
importlib.reload(urls)
clear_url_caches()
def tearDown(self):
self.reload_urlconf() # restore the real (DEBUG=False) urlconf
def test_the_reload_endpoint_is_mounted_in_debug(self):
with override_settings(DEBUG=True):
self.reload_urlconf()
self.assertEqual(resolve("/__reload__/events/").view_name, "django_browser_reload:events")
def test_the_reload_endpoint_is_absent_without_debug(self):
self.reload_urlconf()
with self.assertRaises(Resolver404):
resolve("/__reload__/events/")