diff --git a/scripts/patch_dashboard_modular.py b/scripts/patch_dashboard_modular.py index 451ae44..ae5eb72 100644 --- a/scripts/patch_dashboard_modular.py +++ b/scripts/patch_dashboard_modular.py @@ -199,11 +199,11 @@ text = text.replace( root.appendChild(sidebar); setupMobileNav(root, sidebar); } + root.appendChild(main); const shellHeader = document.createElement('div'); shellHeader.id = 'db-shell-header-slot'; renderSlot('shell:header', shellHeader); - if (shellHeader.children.length) root.insertBefore(shellHeader, main); - root.appendChild(main);""", + if (shellHeader.children.length) root.insertBefore(shellHeader, main);""", ) # 6) selectPage toolbar diff --git a/tests/unit/test_dashboard_shell_order.py b/tests/unit/test_dashboard_shell_order.py index aac79ab..0d96c6c 100644 --- a/tests/unit/test_dashboard_shell_order.py +++ b/tests/unit/test_dashboard_shell_order.py @@ -13,11 +13,12 @@ from __future__ import annotations import re from pathlib import Path +ROOT = Path(__file__).resolve().parents[2] FRONTEND = ( - Path(__file__).resolve().parents[2] - / "src" / "praisonaiui" / "templates" / "frontend" / "plugins" + ROOT / "src" / "praisonaiui" / "templates" / "frontend" / "plugins" ) DASHBOARD_JS = FRONTEND / "dashboard.js" +GENERATOR = ROOT / "scripts" / "patch_dashboard_modular.py" class TestDashboardShellOrder: @@ -48,3 +49,17 @@ class TestDashboardShellOrder: body, ) assert m, "shellHeader insert must be guarded by children.length" + + def test_generator_emits_main_before_insert_before(self): + src = GENERATOR.read_text() + append_idx = src.find("root.appendChild(main);\n const shellHeader") + insert_idx = src.find("root.insertBefore(shellHeader, main)") + assert append_idx != -1, ( + "generator must emit root.appendChild(main) before shellHeader" + ) + assert insert_idx != -1, ( + "generator must emit root.insertBefore(shellHeader, main)" + ) + assert append_idx < insert_idx, ( + "generator must append main to root before insertBefore references it" + )