fix: cover admin controls in css themes

This commit is contained in:
3252a8
2026-06-03 12:36:17 +03:00
parent 1055e58d0e
commit 0a5575c1e6
9 changed files with 219 additions and 8 deletions
+18
View File
@@ -568,6 +568,24 @@ class WebAppAssetTests(unittest.IsolatedAsyncioTestCase):
self.assertIn("--home-logo-scale-mobile", base_css)
self.assertIn("--home-logo-scale-desktop", base_css)
def test_builtin_css_themes_cover_admin_range_and_sortable_controls(self):
theme_root = Path("backend/bot/app/web/themes")
required_selectors = (
"ui-range-input",
"ui-range-input__thumb",
"ui-sortable-item",
"ui-sortable-handle",
"is-drop-target",
)
for key in ("light", "ascii", "windows95"):
css = (theme_root / key / "style.css").read_text(encoding="utf-8")
for selector in required_selectors:
self.assertIn(selector, css, f"{key} theme must style {selector}")
windows95_css = (theme_root / "windows95" / "style.css").read_text(encoding="utf-8")
self.assertIn("lucide-grip-vertical", windows95_css)
def test_prune_unused_appearance_assets_keeps_only_referenced_logo_and_favicons(self):
with tempfile.TemporaryDirectory() as tmpdir:
root = Path(tmpdir)
+8 -5
View File
@@ -33,14 +33,14 @@ class WebappThemesConfigTests(unittest.TestCase):
self.assertEqual(win95.tokens.style_preset, "win95")
self.assertFalse(win95.use_primary_accent)
self.assertTrue(win95.use_in_admin)
self.assertEqual(win95.assets_version, 12)
self.assertEqual(cfg.theme_by_key("light").assets_version, 4)
self.assertEqual(win95.assets_version, 13)
self.assertEqual(cfg.theme_by_key("light").assets_version, 5)
ascii_theme = cfg.theme_by_key("ascii")
self.assertIsNotNone(ascii_theme)
self.assertEqual(ascii_theme.css_file, "style.css")
self.assertFalse(ascii_theme.use_primary_accent)
self.assertTrue(ascii_theme.use_in_admin)
self.assertEqual(ascii_theme.assets_version, 5)
self.assertEqual(ascii_theme.assets_version, 6)
def test_env_override_default_theme(self):
cfg = builtin_webapp_themes_config("#00fe7a")
@@ -391,7 +391,7 @@ class WebappThemesConfigTests(unittest.TestCase):
descriptor["assets_version"],
cfg.theme_by_key("windows95").assets_version,
)
self.assertEqual(descriptor["assets_version"], 12)
self.assertEqual(descriptor["assets_version"], 13)
self.assertIn("lucide-house", css)
self.assertIn("lucide-earth", css)
self.assertIn("lucide-circle-check", css)
@@ -404,6 +404,7 @@ class WebappThemesConfigTests(unittest.TestCase):
self.assertIn("lucide-qr-code", css)
self.assertIn("New webapp surfaces: support, purchase info, password login", css)
self.assertIn("Install guide theme surfaces", css)
self.assertIn("Admin controls: range sliders and sortable rows", css)
self.assertIn(
(
".theme-key-windows95 .support-list-card {\n"
@@ -445,6 +446,7 @@ class WebappThemesConfigTests(unittest.TestCase):
css = (stale_theme_dir / "style.css").read_text(encoding="utf-8")
self.assertIn(".theme-key-light.app-shell", css)
self.assertIn("Install guide theme surfaces", css)
self.assertIn("Admin controls: range sliders and sortable rows", css)
def test_resolved_refreshes_stale_builtin_ascii_assets(self):
with tempfile.TemporaryDirectory() as tmp:
@@ -477,6 +479,7 @@ class WebappThemesConfigTests(unittest.TestCase):
descriptor = json.loads((stale_theme_dir / "theme.json").read_text(encoding="utf-8"))
css = (stale_theme_dir / "style.css").read_text(encoding="utf-8")
self.assertEqual(descriptor["assets_version"], cfg.theme_by_key("ascii").assets_version)
self.assertEqual(descriptor["assets_version"], 5)
self.assertEqual(descriptor["assets_version"], 6)
self.assertIn("Console-style tables", css)
self.assertIn("Install guide theme surfaces", css)
self.assertIn("Admin controls: range sliders and sortable rows", css)