feat(i18n): tools + landing page + doorstop generator in English
Validate / build-test (macos-latest) (push) Failing after 2s
Validate / build-test (windows-latest) (push) Failing after 16s
Validate / build-test (ubuntu-latest) (push) Successful in 18s
Validate / reports (push) Successful in 52s

Phase 1 of full English translation:
- generate_doorstop_items.py: all 55 items (SG/SYS/SWE/SA/SWA) rewritten in English
- generate_landing_page.py: full UI labels, KPI cards, section headings in English
- traceability.py: docstring, error messages, HTML headers in English
- generate_test_report.py: report content + table headers in English
- All 55 markdown items in safety/sg/, reqs/, arch/ regenerated in English

Still to come:
- demo-epb filled Word docs (PID, plans, safety, manuals, audit artefacts)
- Code comments + test names + CI workflow step names
- README + dev-process repo templates
This commit is contained in:
Stefan Lohmaier
2026-05-12 03:28:54 -07:00
parent 542a358abc
commit a47e0aed3e
61 changed files with 805 additions and 803 deletions
+11 -11
View File
@@ -2,7 +2,7 @@
"""
Erzeugt einen Test-Summary-Report aus dem Output unserer Unit-Tests.
Liest die Test-Output-Datei (build/test-output.txt) und erzeugt:
Reads the test-output file (build/test-output.txt) and produces:
- build/test-report.md
- build/test-report.html
@@ -67,7 +67,7 @@ def main() -> int:
output = TEST_OUTPUT.read_text()
results = parse_output(output)
if not results:
print("ERROR: keine Test-Suite im Output gefunden.")
print("ERROR: no test suite found in the output.")
return 1
total = sum(r["total"] for r in results)
@@ -77,11 +77,11 @@ def main() -> int:
# Markdown
md = [f"# demo-epb — Test Summary Report\n\n",
f"**Datum:** {now}\n\n",
f"**Gesamt:** {total} Tests, {passed} bestanden, {failed} fehlgeschlagen\n\n",
f"**Date:** {now}\n\n",
f"**Total:** {total} tests, {passed} passed, {failed} failed\n\n",
f"**Status:** {'PASS' if failed == 0 else 'FAIL'}\n\n",
"## Pro Test-Suite\n\n",
"| Suite | Anzahl | Bestanden | Fehlgeschlagen | Anforderungen |\n",
"## Per Test Suite\n\n",
"| Suite | Count | Passed | Failed | Requirements |\n",
"|-------|--------|-----------|-----------------|---------------|\n"]
for r in results:
reqs = ", ".join(reqs_for(r["binary"])) or ""
@@ -113,12 +113,12 @@ def main() -> int:
".pass-badge{background:#0a0}.fail-badge{background:#c00}",
"</style></head><body>",
"<h1>demo-epb — Test Summary Report</h1>",
f"<p><strong>Datum:</strong> {now}</p>",
f"<p><strong>Gesamt:</strong> {total} Tests, {passed} bestanden, {failed} fehlgeschlagen"
f"<p><strong>Date:</strong> {now}</p>",
f"<p><strong>Total:</strong> {total} tests, {passed} passed, {failed} failed"
f"<span class='badge {badge_cls}'>{badge_txt}</span></p>",
"<h2>Pro Test-Suite</h2>",
"<table><tr><th>Suite</th><th>Anzahl</th><th>Bestanden</th>"
"<th>Fehlgeschlagen</th><th>Anforderungen</th></tr>",
"<h2>Per Test Suite</h2>",
"<table><tr><th>Suite</th><th>Count</th><th>Passed</th>"
"<th>Failed</th><th>Requirements</th></tr>",
]
for r in results:
reqs = ", ".join(reqs_for(r["binary"])) or ""