Unify Settings Layouts and Add Coverage

This commit is contained in:
2026-09-08 21:22:52 +02:00
parent 989821b7c4
commit 4a4d615c59
7 changed files with 295 additions and 43 deletions
+7
View File
@@ -10,6 +10,10 @@ import re
import shlex
import subprocess
import tempfile
import sys
sys.dont_write_bytecode = True
from layout import check_layout, check_browser_layout
HERE = Path(__file__).resolve().parent
ROOT = HERE.parents[1]
@@ -90,6 +94,9 @@ esp_err_t httpd_resp_send(httpd_req_t *, const char *, ssize_t);
assert 'no private-key upload, export or SSH host management' in rendered['html']
for forbidden in ('localStorage', 'sessionStorage', 'document.cookie', 'console.log', 'innerHTML', 'Authorization', 'clipboard', 'pushState', 'replaceState'):
assert forbidden not in rendered['script'] + rendered['loader'], forbidden
check_layout(rendered['html'])
if os.environ.get('WEB_UI_CHROMIUM'):
check_browser_layout(rendered['html'], tmp, os.environ['WEB_UI_CHROMIUM'])
(tmp / 'rendered.json').write_text(json.dumps(rendered))
subprocess.run(['node', str(HERE / 'browser.cjs'), str(tmp / 'rendered.json')], check=True, timeout=30)
print('PASS C/HTML: all resource headers/failures, no-store app/document, exact loader CSP, safe fallback')