
Serpent Team

Andrew Hanna

Kurze Antwort: Auf jedem Pull Request laufen nur die schnellen, deterministischen Prüfungen: statische Analyse des Diffs, LWC-Jest und ein reines Validierungs-Deployment des Deltas, das ausschließlich die Apex-Tests für den geänderten Code ausführt. Alles Langsame oder Instabile, vollständige Testläufe, UI-Strecken und externe Integrationen, gehört in einen nächtlichen Job. Ziel ist ein Ergebnis in unter zehn Minuten, denn danach liest es niemand mehr.
Eine Regel bestimmt diese Liste: Alles am Pull-Request-Gate muss deterministisch sein. Ein einziger instabiler Test bringt dem Team bei, auf Wiederholen zu drücken, und ein Gate, das man bis Grün wiederholt, ist Dekoration.
Nächtliche Fehler werden beim Kaffee sortiert. Genau das ist der Zweck: Sie stehen nicht zwischen einer Entwicklerin und ihrem Merge.
Vier Level, und die Wahl je Stufe ist der größte Teil des Entwurfs (Metadata-API-Guide).
NoTestRun: in einer Scratch Org in Ordnung, nie auf einem Weg in die
Produktion.
RunSpecifiedTests: Ihr Pull-Request-Gate. Eine Falle sollte man kennen:
Auf diesem Level muss jede Klasse und jeder Trigger im Paket einzeln 75%
Abdeckung erreichen, je Komponente berechnet und nicht org-weit (Salesforce-Dokumentation).
RunLocalTests: alles außer Tests aus Managed Packages. Das führt ein
Produktions-Deployment mit Apex standardmäßig aus.
RunAllTestsInOrg: zusätzlich die Tests der Managed Packages. Selten
gewünscht und langsam.
Die Plattformregeln darunter bleiben gleich: Mindestens 75% Ihres Apex-Codes müssen abgedeckt sein, um in die Produktion zu deployen, jeder Trigger braucht mindestens eine abgedeckte Zeile, und jeder ausgeführte Test muss bestehen, unabhängig vom Prozentwert (Salesforce Help).
Nicht auf den Pull Request. UI-Tests sind das Langsamste und Sprödeste in einer Salesforce-Pipeline: Shadow DOM in Lightning-Komponenten, generierte Element-Ids und Login-Dialoge zerlegen Selektoren aus Gründen, die mit der geprüften Änderung nichts zu tun haben.
Praktikabel ist ein kleiner Smoke-Satz aus fünf bis zehn kritischen Strecken nach dem Merge in den Integrations-Branch und die vollständige Suite nachts. Faustregel: Fällt ein UI-Test zweimal aus anderen Gründen als dem Produkt aus, ist er eine Wartungsaufgabe und kein Gate.
Dieser Leitfaden ist Teil unserer Salesforce-DevOps-Guides.
Wie schnell sollte eine Salesforce-Pull-Request-Prüfung sein?
Unter zehn Minuten von Anfang bis Ende. Danach wechseln Entwickler den Kontext, lesen die Ausgabe nicht mehr, und die Prüfung ändert kein Verhalten mehr.
Sollen alle Apex-Tests auf jedem Pull Request laufen?
Nein. Führen Sie die Tests für die geänderten Klassen mit
RunSpecifiedTests aus und heben Sie den vollständigen lokalen Lauf für
die Nacht und die Release-Validierung auf.
Welche Abdeckung verlangt Salesforce wirklich?
75% Apex org-weit für ein Produktions-Deployment, mindestens eine abgedeckte Zeile pro
Trigger, und jeder ausgeführte Test muss bestehen. Bei
RunSpecifiedTests braucht jede Klasse und jeder Trigger im Paket 75% für
sich.
Brauchen LWC-Jest-Tests eine Salesforce-Org?
Nein. Sie laufen außerhalb der Plattform in Node, und genau deshalb gehören sie ans Pull-Request-Gate statt in den nächtlichen Job.
Wo sollten UI-Tests laufen?
Ein kleiner Smoke-Satz nach dem Merge, die vollständige Suite nachts. Sie auf den Pull Request zu setzen ist der schnellste Weg, einem Team beizubringen, einen roten Build zu ignorieren.
Unverbindlich.