Referenz

Ausgabe und Tests

Wählen Sie zwischen PDF, Produkt-HTML und Debug-HTML, und testen Sie Ihre Dokumente in der CI mit Snapshot-Dateien statt mit PDF-Vergleichen.

Auf dieser Seite

Community

Drei Arten von Ausgabe

Ausgabe Befehl Stabil? Wofür
PDF brevier pdf … -o doc.pdf ja das Dokument, das Sie verschicken
Produkt-HTML brevier html … -o doc.html ja das Dokument in einem Webportal zeigen, und Snapshot-Tests
Debug-HTML brevier pdf … --debug nein herausfinden, warum eine Seite falsch aussieht

Produkt-HTML

brevier html schreibt das fertige Dokument als HTML. Seine Klassennamen gehören zum Vertrag von Brevier: Ein Update fügt Klassen hinzu, entfernt aber keine Klasse und ändert nicht, was sie auswählt. Gestalten Sie sie im CSS Ihres Portals. Heute gibt es eine:

Klasse An Bedeutung
brevier-page <body> Das ganze Dokument. Das Theme web stellt alle seine Regeln unter diese Klasse.

Brevier setzt keine weiteren eigenen Klassen. Eine Klasse, die Ihre Vorlage an eigene Elemente schreibt, gehört zu Ihrem Dokument und bleibt unverändert.

Debug-HTML

--debug legt .debug.html und .debug.css neben die Ausgabe. Sie zeigen genau, was die Engine bekommen hat. Sie können sich mit jedem Release ändern; bauen Sie also nicht darauf auf: Für die --debug-Ausgabe gibt es kein Stabilitätsversprechen.

Ein Unterschied zum Produkt-HTML: Das Debug-HTML schreibt jedes weiche Trennzeichen (U+00AD), das Brevier für die Silbentrennung eingefügt hat, als sichtbare Entität &shy;. Editoren und Diff-Werkzeuge zeigen das echte Zeichen als Nichts. Die Engine bekommt weiterhin das echte Zeichen. Nur die Kopie auf der Festplatte ändert sich.

Snapshot-Tests

Zwei PDFs zu vergleichen ist schwer. Zwei HTML-Dateien zu vergleichen ist ein Text-Diff. Testen Sie also das Produkt-HTML: Setzen Sie ein festes Beispiel und vergleichen Sie es mit einer Datei in Ihrem Repository.

test_invoice.py
from brevier.testing import assert_matches_snapshot


def test_invoice_snapshot():
    html = render_my_invoice()  # Ihr eigener Code, mit brevier html
    assert_matches_snapshot(html, "snapshots/invoice.html")
Fall Ergebnis
Das HTML passt zur Datei Der Test ist grün.
Das HTML weicht ab Der Test schlägt fehl und zeigt die geänderten Zeilen.
Noch keine Datei Der Test schlägt fehl und sagt, wie Sie sie anlegen.

Ist eine Änderung gewollt, schreiben Sie den neuen Snapshot, statt den Test zu ändern:

BREVIER_UPDATE_SNAPSHOTS=1 pytest test_invoice.py

Das schreibt jeden Snapshot, den der Lauf berührt, und schlägt nie fehl. Prüfen Sie die geänderten Snapshot-Dateien im Diff und lassen Sie die Tests dann ohne die Variable noch einmal laufen.

assert_matches_snapshot(html, path, update=True) tut dasselbe für einen einzelnen Aufruf, was auch die Umgebung sagt.