diff --git a/server/pruef-anruf.mjs b/server/pruef-anruf.mjs
index 188b8384..0300d83b 100644
--- a/server/pruef-anruf.mjs
+++ b/server/pruef-anruf.mjs
@@ -1015,12 +1015,37 @@ melde("=== 8. Zu dritt ===");
.map((m) => m.muted));
{
+ /* ==== JEDES GESPRAECH FAENGT LEISE AN (20.09.2026) ==========
+
+ Filipe: "es soll ohne lautsprecher anfangen das gespraech und
+ nur wenn man drauf klickt soll es laut werden ... es soll
+ nicht raushaengen oder so, das ist nicht cool."
+
+ Diese Pruefung stand hier genau ANDERSHERUM und ist beim
+ Umbau rot geworden -- richtig so, sie hat die Aenderung
+ bemerkt. Der Grund fuer die Umkehr steht bei `hoeren` in
+ anruf.js: Ein Anruf, der beim Annehmen sofort aus den
+ Lautsprechern kommt, ist im schlimmsten Fall fuer alle
+ Zuschauer zu hoeren, bevor jemand reagieren kann. Das laesst
+ sich nicht zurueckholen. */
const vorher = await stumm(a);
/* Die ANZAHL gehoert in die Bedingung: `every` ist auf einer
leeren Liste wahr, und dann waere diese Pruefung gruen,
ohne ein einziges Element gesehen zu haben. */
- ok(vorher.length >= 2 && vorher.every((m) => m === false),
- `vorher hoert DogFather beide (${vorher.length} Stroeme, keiner stumm)`);
+ ok(vorher.length >= 2 && vorher.every((m) => m === true),
+ `das Gespraech faengt LEISE an (${vorher.length} Stroeme, alle stumm)`);
+
+ /* UND MAN SIEHT ES. Leise anfangen ohne Hinweis waere die
+ naechste Sackgasse: "ich hoere nichts" ohne einen Grund und
+ ohne einen Weg. */
+ const balken = await a.se.evaluate(() => {
+ const b = document.getElementById("anruf-stumm");
+ return b ? { da: !b.hidden, text: b.textContent.trim(),
+ hoch: Math.round(b.getBoundingClientRect().height) } : null;
+ });
+ ok(balken?.da === true, `ein Hinweis sagt es ("${balken?.text}")`);
+ ok((balken?.hoch || 0) >= 44,
+ ` und er ist selbst antippbar (${balken?.hoch} px hoch)`);
const knopf = await a.se.evaluate(() => {
const k = document.getElementById("anruf-hoeren");
@@ -1032,26 +1057,31 @@ melde("=== 8. Zu dritt ===");
durchgestrichene Zeichen den Zustand und das Wort nur die
Sache. Geprueft wird deshalb aria-pressed; der Text bleibt
gleich und beweist nichts mehr. */
- ok(knopf?.an === "true",
- `der Lautsprecher-Knopf ist da und steht auf an („${knopf?.text}")`);
+ ok(knopf?.an === "false",
+ `der Lautsprecher-Knopf steht auf AUS ("${knopf?.text}")`);
+ /* ---- UND EIN DRUCK MACHT IHN LAUT ------------------------- */
await a.se.click("#anruf-hoeren");
await a.se.waitForTimeout(300);
const nachher = await stumm(a);
- ok(nachher.length >= 2 && nachher.every((m) => m === true),
- `nach dem Druecken ist ALLES stumm (${nachher.length} Stroeme)`);
+ ok(nachher.length >= 2 && nachher.every((m) => m === false),
+ `nach dem Druecken hoert er alle (${nachher.length} Stroeme, keiner stumm)`);
const knopf2 = await a.se.evaluate(() => {
const k = document.getElementById("anruf-hoeren");
- return { text: k.textContent.trim(), an: k.getAttribute("aria-pressed") };
+ const b = document.getElementById("anruf-stumm");
+ return { an: k.getAttribute("aria-pressed"), balken: b ? !b.hidden : null };
});
- ok(knopf2.an === "false",
- `und der Knopf steht auf aus (aria-pressed="${knopf2.an}")`);
+ ok(knopf2.an === "true",
+ `und der Knopf steht auf an (aria-pressed="${knopf2.an}")`);
+ ok(knopf2.balken === false,
+ "der Hinweis verschwindet in dem Moment, in dem er ueberfluessig wird");
/* NUR BEI IHM. Ein Schalter, der bei den anderen mitwirkt,
- waere kein Lautsprecher, sondern eine Fernbedienung. */
+ waere kein Lautsprecher, sondern eine Fernbedienung.
+ Bei ihr ist ALLES stumm -- sie hat ihren Ton nie angemacht. */
const beiB = await stumm(b);
- ok(beiB.length >= 2 && beiB.every((m) => m === false),
- `bei der rechten Hand aendert sich nichts (${beiB.length} Stroeme, keiner stumm)`);
+ ok(beiB.length >= 2 && beiB.every((m) => m === true),
+ `bei der rechten Hand aendert sich nichts (${beiB.length} Stroeme, alle noch stumm)`);
}
/* Einer legt auf -- fuer die anderen laeuft es weiter. */
@@ -1065,15 +1095,19 @@ melde("=== 8. Zu dritt ===");
`und bei DogFather ist genau ein Strom weniger (${zA.stroeme})`);
/* DIE FALLE: Die Runde hat sich geaendert, die Elemente wurden
- neu gebaut. Bliebe der Schalter dabei auf der Strecke, wuerde
- DogFather ploetzlich wieder mithoeren -- ohne dass irgendwo
- etwas anders aussieht. */
+ neu gebaut. Bliebe der Schalter dabei auf der Strecke, stuende
+ der Ton ploetzlich anders -- ohne dass irgendwo etwas anders
+ aussieht.
+
+ RICHTUNG UMGEDREHT AM 20.09.2026: DogFather hat den Ton oben
+ eingeschaltet, also muss er JETZT hoeren. Die Falle ist
+ dieselbe geblieben, nur der erwartete Zustand nicht. */
const nachWechsel = await stumm(a);
- ok(nachWechsel.length === 1 && nachWechsel[0] === true,
- `und der Lautsprecher bleibt aus, obwohl neu gezeichnet wurde (${nachWechsel.length} Strom)`);
+ ok(nachWechsel.length === 1 && nachWechsel[0] === false,
+ `und der eingeschaltete Ton ueberlebt das Neuzeichnen (${nachWechsel.length} Strom)`);
const knopfNoch = await a.se.evaluate(() =>
document.getElementById("anruf-hoeren")?.getAttribute("aria-pressed"));
- ok(knopfNoch === "false", "auch der Knopf steht noch richtig");
+ ok(knopfNoch === "true", "auch der Knopf steht noch richtig");
await a.se.click("#anruf-auflegen");
await b.se.click("#anruf-auflegen");
diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html
index 1d9df34a..1a95cc5c 100644
--- a/workspace/anruf-probe.html
+++ b/workspace/anruf-probe.html
@@ -16,15 +16,15 @@
verdeckt. Gefunden hat es pruef-struktur.
Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. -->
-
-
+
+
-
+