Programme an rauchtest.de anbinden
rauchtest.de öffnet Ihre Programme regelmäßig in einem echten Browser (Chromium), füllt Formulare aus, klickt und prüft, ob das Erwartete erscheint. Damit rauchtest.de weiß, was es prüfen soll, beschreibt jedes Programm seine wichtigsten Funktionen selbst: in einer Datei, dem Manifest. rauchtest.de holt sie täglich ab und legt daraus Prüfungen an. Scheitert eine, sieht es der Betreiber sofort in der Übersicht.
Diese Seite richtet sich an alle, die ein Programm betreuen – Menschen wie KI-Assistenten. Maschinenlesbar gibt es dasselbe als JSON-Schema und als Beispiel. Ganz unten steht ein fertiger Auftrag zum Kopieren.
In drei Schritten
- Manifest ablegen. Das Programm liefert unter https://ihre-domain/.well-known/rauchtest.json eine JSON-Datei aus: öffentlich, ohne Anmeldung, mit Status 200 und ohne Weiterleitung.
- Beim Betreiber melden. Wer das Programm betreut, nennt dem Betreiber von rauchtest.de die Domain. Er gibt sie frei und meldet das Programm unter „Programme“ an. rauchtest.de holt das Manifest sofort und zeigt, ob es durchgeht – samt Fehlermeldungen, falls nicht.
- Fertig. Jeden Tag um 5:30 Uhr holt rauchtest.de das Manifest erneut; scheitert ein Abruf, versucht es rauchtest.de stündlich wieder. Wer das Manifest ändert, ändert damit die Prüfungen – ohne weitere Meldung. Die Prüfungen laufen nach ihrem Zeitplan.
Das Manifest
{
"$schema": "https://intern.rauchtest.de/anbindung/manifest.schema.json",
"version": 1,
"programm": "GMB-Tracker",
"beschreibung": "Rank-Tracking für Google-Unternehmensprofile",
"kontakt": "info@alpha-digital.de",
"pruefungen": [
{
"schluessel": "anmeldung",
"name": "Anmeldeseite lädt",
"zeitplan": "0 6 * * *",
"rezept": {
"start": "https://gmb.alpha-digital.de/anmelden",
"schritte": [
{ "erwarteSichtbar": "input[type=password]" },
{ "erwarteText": "Anmelden" }
]
}
}
]
}
| Feld | Pflicht | Bedeutung |
|---|---|---|
| version | ja | Immer 1. |
| programm | ja | Name des Programms, höchstens 60 Zeichen. Steht vor jedem Prüfungsnamen, etwa „GMB-Tracker: Anmeldeseite lädt“. |
| beschreibung | nein | Ein Satz, was das Programm tut, höchstens 300 Zeichen. |
| kontakt | nein | Wer es betreut, höchstens 200 Zeichen. |
| pruefungen | ja | 1 bis 20 Prüfungen, siehe unten. |
| $schema | nein | Verweis auf das JSON-Schema, damit Editoren beim Schreiben helfen. |
Eine Prüfung
| Feld | Pflicht | Bedeutung |
|---|---|---|
| schluessel | ja | Kleinbuchstaben, Ziffern, Bindestrich, höchstens 40 Zeichen, etwa kontaktformular. Stabil halten: Daran erkennt rauchtest.de die Prüfung beim nächsten Abruf wieder, ihr Verlauf bleibt erhalten. Ein neuer Schlüssel ist eine neue Prüfung. |
| name | ja | Was geprüft wird, höchstens 80 Zeichen. |
| zeitplan | nein | Cron-Ausdruck in deutscher Zeit (Europe/Berlin), höchstens stündlich. Fehlt er, läuft die Prüfung täglich um 6 Uhr. null heißt: nur von Hand. Beispiele: "0 6 * * *" täglich 6 Uhr, "0 8 * * 1-5" werktags 8 Uhr, "0 * * * *" stündlich. |
| aktiv | nein | false schaltet die Prüfung ab, ohne sie zu entfernen. Vorgabe: true. |
| rezept | ja | Was der Browser tut, siehe nächster Abschnitt. |
Das Rezept: was der Browser tut
Ein Rezept hat eine Einstiegsadresse und eine Liste von Schritten, höchstens 50:
{ "start": "https://…", "captcha": "durchlassen", "schritte": [ … ] }
Die Grundprüfung gilt immer, auch mit leerer Schrittliste. Rot wird eine Prüfung, wenn die Startseite mit einem HTTP-Fehler (ab 400) antwortet oder nicht erreichbar ist, wenn ein Schritt scheitert oder wenn die Seite auf eine Domain außerhalb der eigenen weiterleitet. Als Warnung festgehalten werden JavaScript-Fehler und eigene Dateien, die mit einem Fehler nachladen. Konsolenmeldungen erscheinen als Hinweis.
| Schritt | Was er tut |
|---|---|
| {"oeffne": "/preise"} | Adresse aufrufen, absolut oder als Pfad. |
| {"cookieBanner": "ablehnen"} | Einwilligungsbanner wegklicken. Bekannte Anbieter und Knöpfe wie „Nur notwendige“ werden erkannt; sonst hilft "selektor": "#ablehnen". |
| {"fuelle": "E-Mail", "mit": "{{postfach}}"} | Feld ausfüllen. |
| {"waehle": "Anliegen", "mit": "Frage"} | Eintrag in einer Auswahlliste wählen. |
| {"haken": "Datenschutz"} | Kontrollkästchen setzen; mit "setzen": false entfernen. |
| {"klicke": "Absenden"} | Schaltfläche oder Link über den sichtbaren Text anklicken. |
| {"erwarteText": "Vielen Dank"} | Dieser Text muss auf der Seite erscheinen. |
| {"erwarteUrl": "/danke"} | Die Adresse muss diesen Text enthalten. |
| {"erwarteSichtbar": "#erfolg"} | Ein Element muss sichtbar werden: CSS-Selektor oder Text. |
| {"erwarteMail": {"betreffEnthaelt": "Anfrage", "binnenMinuten": 5}} | Eine Mail an {{postfach}} muss ankommen, 1 bis 60 Minuten. Nur als letzter Schritt und nur, wenn vorher ein Feld mit {{postfach}} gefüllt wurde. |
| {"erwarteRaetsel": true} | Nur mit "captcha": "raetsel", als letzter Schritt: Das CAPTCHAme-Rätsel muss erscheinen. |
| {"warte": 1000} | Notlösung, höchstens 10 000 ms. Die Erwartungen warten ohnehin selbst, bis zu 15 Sekunden je Schritt. |
Wie Felder und Knöpfe gefunden werden
Ziele werden so gesucht, wie ein Mensch sie sieht – über die Beschriftung, nicht über den Seitenaufbau. Dadurch übersteht ein Rezept Umbauten am HTML.
- Felder (fuelle, waehle, haken): zuerst die genaue Beschriftung, dann der Platzhaltertext, dann das name-Attribut, zuletzt ein Wortanfang in Beschriftung oder Platzhalter – „Nachricht“ findet also auch „Ihre Nachricht*“.
- Klicks: Schaltfläche mit genau diesem Text, dann Link, dann ein Absende-Knopf mit diesem value, dann Schaltflächen und Links, deren Text so beginnt.
- Beginnt ein Ziel mit #, ., [, css= oder sieht aus wie input[…], gilt es als CSS-Selektor. Achtung: Das trifft auch Texte mit Punkt oder Doppelpunkt direkt nach dem ersten Wort – "Name:" oder "Dr. Müller" würden als Selektor gelesen. Beschriftungen deshalb ohne Satzzeichen angeben: "Name" findet auch „Name:“.
Tipp für Programme: Jedes Feld mit einem echten <label> versehen und Knöpfe eindeutig beschriften. Das hilft rauchtest.de, Screenreadern und Menschen gleichermaßen.
Testdaten
Werte für mit dürfen diese Platzhalter enthalten. Eigene Testdaten gehen auch, aber die Platzhalter kennzeichnen jede Einsendung eindeutig als Test:
| {{name}} | Rauchtest |
| {{vorname}} {{nachname}} | Rauchtest Automatisch |
| {{postfach}} | lauf-123@rauchtest.de – je Lauf eindeutig; nur darüber lässt sich eine Mail nachweisen |
| {{nachricht}} | „[Rauchtest] Automatischer Funktionstest von rauchtest.de – bitte ignorieren. Lauf 123.“ |
| {{firma}} | rauchtest.de |
| {{telefon}} | +49 30 0000000 |
| {{strasse}} {{plz}} {{ort}} | Teststraße 1, 10115 Berlin |
| {{lauf}} | die Nummer des Laufs |
CAPTCHAme
"captcha": "durchlassen" (Vorgabe): rauchtest.de meldet sich bei CAPTCHAme als angemeldeter Prüfdienst, und CAPTCHAme stellt kein Rätsel – geprüft wird das Formular. Das wirkt nur, wenn im CAPTCHAme-Dashboard beim Projekt „Rauchtests durchlassen“ eingeschaltet ist. "captcha": "raetsel" prüft das Gegenteil: dass ein Automat das Rätsel bekommt (letzter Schritt {"erwarteRaetsel": true}).
Regeln, die rauchtest.de durchsetzt
- Nur die eigene Domain. Der Start jeder Prüfung und jedes absolute oeffne müssen unter derselben freigegebenen Domain liegen wie das Manifest. Ein Manifest auf gmb.alpha-digital.de darf alpha-digital.de und deren Subdomains prüfen, nichts anderes.
- Alles oder nichts. Ist eine Prüfung fehlerhaft, übernimmt rauchtest.de das ganze Manifest nicht, und alles bleibt wie beim letzten Mal. Die Fehler stehen beim Betreiber unter „Programme“.
- Höchstens 20 Prüfungen, höchstens stündlich. Der Browser teilt sich den Server mit anderen Diensten.
- Entfernen heißt abschalten. Fehlt eine Prüfung im Manifest, wird sie abgeschaltet, nicht gelöscht; ihre bisherigen Läufe bleiben lesbar. Taucht der Schlüssel wieder auf, läuft sie weiter.
- Das Manifest bestimmt. In der Oberfläche von rauchtest.de lassen sich solche Prüfungen nur lesen und von Hand starten. Geändert wird im Manifest.
- Der Abruf ist ein einfaches GET mit dem Absender Rauchtest/1.0 (+https://rauchtest.de/bot): nur https, höchstens 256 KB, 10 Sekunden, nur Status 200, keine Weiterleitungen, keine internen Adressen. Die Datei darf application/json oder Text sein.
Das Manifest ist öffentlich. Keine Passwörter, keine Tokens, keine internen Adressen, keine Kundendaten hineinschreiben. Es beschreibt nur, was ohnehin jeder Besucher sehen kann.
Testbesuche erkennen und richtig behandeln
rauchtest.de tarnt sich nie. Ein Testbesuch ist erkennbar an:
- dem Browserkennzeichen, das auf Rauchtest/1.0 (+https://rauchtest.de/bot) endet;
- den Testdaten oben: Name „Rauchtest“, Firma „rauchtest.de“, E-Mail lauf-…@rauchtest.de, Nachricht mit „[Rauchtest]“ am Anfang;
- bei CAPTCHAme an "rauchtest": true in der Antwort von siteverify.
So sollten Programme damit umgehen: Eine Testeinsendung durchläuft denselben Weg wie eine echte – sonst prüft der Test nichts. Erst die letzte Wirkung nach außen entfällt oder wird gekennzeichnet: keine Mail an Kunden, kein Auftrag, keine Rechnung, kein CRM-Eintrag, der Arbeit auslöst. Nichts, was sich nicht rückgängig machen lässt. Eine Bestätigungsmail an den Absender darf ruhig raus: Sie landet im Postfach von rauchtest.de und lässt sich mit erwarteMail nachweisen.
Was sich (noch) nicht prüfen lässt
Funktionen hinter einer Anmeldung. rauchtest.de meldet sich derzeit nirgends an und speichert keine Zugangsdaten – ein Passwort gehört auch nicht ins öffentliche Manifest. Prüfbar sind:
- die Anmeldeseite selbst: Sie lädt, das Formular ist da;
- öffentliche Seiten und Formulare;
- eine Statusseite, die das Programm selbst bereitstellt.
Empfehlung: eine Statusseite für das Innere
Programme, deren Wichtigstes hinter der Anmeldung liegt (Verwaltung, Tracker, Kommandozentrale …), prüfen sich am besten selbst und zeigen nur das Ergebnis öffentlich an. Etwa unter /rauchtest-status:
Datenbank: ok Warteschlange: ok Letzter Nachtlauf: ok Google-Schnittstelle: ok Gesamtzustand: ok
rauchtest.de prüft das mit einem einzigen Schritt, {"erwarteText": "Gesamtzustand: ok"}, und wird rot, sobald dort etwas anderes steht. Dabei gilt:
- Nur „ok“ oder „gestört“ je Punkt – keine Zahlen, keine Namen, keine Fehlermeldungen, keine Pfade. Die Einzelheiten gehören ins Protokoll des Programms.
- Echt prüfen, nicht nur „läuft“ melden: eine Datenbankabfrage, das Alter des letzten Nachtlaufs (älter als 25 Stunden = gestört), ein Aufruf der fremden Schnittstelle.
- Teure Prüfungen zwischenspeichern, etwa eine Minute lang – die Seite ist öffentlich, jeder kann sie aufrufen.
- Die Seite verändert nichts. Nur lesen.
Geplant: ein Rauchtest-Zugang für Funktionen hinter der Anmeldung, über eine signierte Kopfzeile wie beim CAPTCHAme-Durchlass. Er ist noch nicht verfügbar. Bauen Sie dafür bitte vorerst nichts, sondern nutzen Sie die Statusseite.
Außerdem nicht prüfbar: Adressen im internen Netz (localhost, private Adressbereiche) und Seiten ohne https. Ein Programm muss so erreichbar sein, wie seine Nutzer es erreichen.
Wenn der Betreiber einen Fehler meldet
| Meldung | Ursache und Abhilfe |
|---|---|
| „Weiterleitung nach …“ | Die Datei liegt nicht direkt unter der angemeldeten Adresse, etwa wegen www oder eines abschließenden Schrägstrichs. Der Betreiber meldet die Zieladresse an. |
| „HTTP 404 statt 200“ | Die Datei ist nicht ausgeliefert. Manche Server sperren Pfade mit Punkt – in nginx etwa location ~ /\. { deny all; }. Für /.well-known/ eine Ausnahme vorsehen. |
| „Kein gültiges JSON“ | Syntaxfehler, oft ein Komma zu viel. Mit dem JSON-Schema im Editor prüfen. |
| „… liegt nicht unter …“ | Eine Prüfung zielt auf eine fremde Domain. |
| „Höchstens alle 60 Minuten …“ | Der Zeitplan ist zu dicht. |
| „Prüfung „x“: Schritt 3: …“ | Ein Rezeptfehler; die Meldung nennt Prüfung und Schritt. |
| „… zeigt auf eine interne Adresse“ | Die Domain löst auf eine private Adresse auf. |
Scheitert ein Lauf, zeigt rauchtest.de dem Betreiber jeden Schritt, die Befunde, ein Bildschirmfoto und bei Fehlern eine Aufzeichnung des Browsers. Nennen Sie ihm für die Fehlersuche den Namen der Prüfung.
Auftrag zum Kopieren
Für die Entwicklungssitzung eines Programms, etwa einen KI-Assistenten im Projektordner:
Bitte binden Sie dieses Programm an rauchtest.de an. Die Anleitung steht unter https://intern.rauchtest.de/anbindung, das Schema unter https://intern.rauchtest.de/anbindung/manifest.schema.json. 1. Bestimmen Sie die 3 bis 8 wichtigsten Funktionen, deren Ausfall sofort auffallen muss. Öffentlich Erreichbares prüft rauchtest.de direkt. Für Funktionen hinter der Anmeldung bauen Sie eine Statusseite nach dem Abschnitt „Statusseite“ (nur ok/gestört, echte Prüfungen, zwischengespeichert, nichts verändernd). 2. Schreiben Sie das Manifest und liefern Sie es öffentlich unter /.well-known/rauchtest.json aus: Status 200, ohne Weiterleitung, ohne Anmeldung. Keine Geheimnisse hinein, Schlüssel stabil halten. 3. Prüfen Sie jedes Rezept gegen die echte Seite: Gibt es die Beschriftungen und Knöpfe genau so? Erscheint der erwartete Text wirklich nur bei Erfolg? 4. Sorgen Sie dafür, dass Testeinsendungen (Kennzeichen im Abschnitt „Testbesuche erkennen“) denselben Weg nehmen wie echte, am Ende aber nichts auslösen, was Arbeit macht oder nicht rückgängig zu machen ist. 5. Liefern Sie aus und nennen Sie dem Betreiber von rauchtest.de die Domain, damit er das Programm unter „Programme“ anmeldet. Seine Rückmeldung zeigt, ob das Manifest durchgeht.
rauchtest.de – Rauchtests für eigene Programme der Alpha Digitalagentur GmbH. Manifest-Version 1. Stand: 29.09.2026.