Test-Hook window.PULSE unverändert im Auslieferzustand enthalten #12
Labels
No labels
accessibility
bug
cleanup
consistency
crash
critical
game-feel
gameplay
high
input
level-generation
low
maintainability
medium
pause
physics
responsive
security
spec-gap
ui
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
gilli/pulse-sprint#12
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Test-Hook
window.PULSEunverändert im Auslieferzustand enthalten #12"By gilli — Closed
cleanup
low
maintainability
security
1 comments
Behoben in
fd0b86d(Doku-Nachtragb788ed7).Was geändert ist
index.htmllegt keinwindow.PULSEmehr an – und im Skriptblock steht gar keinewindow.<name> =-Zuweisung mehr. Das ausgelieferte Dokument öffnet damit keinen schreibbarenZugriff auf Simulation, Rekord oder Zustandsmaschine: Punkt 1–3 des Befunds sind gegenstandslos,
Punkt 4 (toter Code im ausgelieferten Spiel) ist weg.
/*__TEST_BRIDGE__*/– dieselbeKonvention wie
__CORE_START__/__CORE_END__.tests/testpage.pygebaute Testseite (tests/.tmp/, Dateiname nach Content-Hash): dort setztder Bridge – ein globales Objekt mit exakt den Namen des alten Hooks – an den Marker.
Die Suiten messen also dasselbe wie vorher, nur gegen eine Seite, die nicht ausgeliefert wird.
PULSE_HTML=…,z. B.
git show HEAD:index.html) ihren Hook noch selbst, gibt die Baustelle sie unverändertzurück – sonst stünde in einer Vergleichsmessung doppelt ein Hook. Fehlt der Marker in einer
Fassung ohne Hook, bricht die Baustelle mit klarer Meldung ab statt still eine Hook-leere Seite
zu liefern.
AGENTS.md(„Tragende Hooks“) undtests/README.md.Warum nicht der vorgeschlagene
?test=1-SchalterEin Schalter im Produkt hieße: der Hook bleibt samt seinem Inhalt in der ausgelieferten Datei,
jeder Nutzer schaltet ihn mit einer URL-Abfrage scharf, und Punkt 4 („toter Code im ausgelieferten
Spiel“) wäre nur versteckt statt behoben. Der Bauansatz hält die ausgelieferte Datei dagegen
wirklich frei – und der Bridge kann nicht versehentlich aktiv werden, weil es ihn dort nicht gibt.
Tests
node tests/issue12.mjs(neu, 13 Prüfungen): keinwindow.PULSEund keinewindow.<name> =-Zuweisung im Auslieferungsdokument, Marker genau einmal und im letztenSkriptblock nach
boot(), die gebaute Seite ist sonst bytegleich zum Auslieferungsdokument(der Bridge ersetzt nur den Marker), jeder Name des Bridge ist im Dokument tatsächlich deklariert
(umgetaufte Interna legen den Bridge nicht still), CORE-Extraktion bleibt möglich.
python3 tests/browser_smoke.py(vier Prüfungen ergänzt): das unveränderteindex.htmlperfile://–typeof window.PULSE === "undefined", keinwindow.PULSEauch als Text im DOM,Bühne vorhanden, die Menü-Demo bewegt sich ohne jeden Hook weiter, keine Konsolenfehler.
git show HEAD:index.htmlsindissue12.mjsmit 5 Prüfungenund
browser_smoke.pymit 1 Prüfung rot ({'hook': 'object', 'text': True}), gegen dieseFassung grün.
./tests/run-all.sh 1(alle Node- und Browser-Suiten inkl. Soak) komplett grün.