
Serpent Team

Andrew Hanna

Réponse courte : sur chaque pull request, ne lancez que les contrôles rapides et déterministes : analyse statique du diff, LWC Jest, et un déploiement delta en validation seule qui n'exécute que les tests Apex couvrant le code modifié. Renvoyez tout ce qui est lent ou instable, exécutions complètes de tests, parcours UI et intégrations externes, vers un job nocturne. Visez un verdict en moins de dix minutes, au-delà plus personne ne le lit.
Une règle gouverne cette liste : tout ce qui est sur la porte de pull request doit être déterministe. Un seul test instable apprend à l'équipe à relancer, et une porte que l'on relance jusqu'au vert est un décor.
Les échecs nocturnes se trient au café. C'est précisément l'objectif : ils ne s'interposent pas entre un développeur et son merge.
Quatre niveaux, et le choix par étape constitue l'essentiel de la conception (guide Metadata API).
NoTestRun : acceptable dans une scratch org, jamais sur un chemin vers
la production.
RunSpecifiedTests : votre porte de pull request. Un piège à connaître :
à ce niveau, chaque classe et trigger du paquet doit atteindre 75% de couverture
individuellement, calculée par composant et non à l'échelle de l'org (documentation Salesforce).
RunLocalTests : tout sauf les tests des packages managés. C'est ce que
lance par défaut un déploiement en production contenant de l'Apex.
RunAllTestsInOrg : y ajoute les tests des packages managés. Rarement
souhaitable, et lent.
Les règles de la plateforme ne bougent pas : au moins 75% de votre Apex doit être couvert pour déployer en production, chaque trigger a besoin d'au moins une ligne couverte, et tout test exécuté doit passer, quel que soit le pourcentage (Salesforce Help).
Pas sur la pull request. Les tests UI sont l'élément le plus lent et le plus fragile d'un pipeline Salesforce : shadow DOM des composants Lightning, identifiants générés et écrans de connexion cassent les sélecteurs pour des raisons sans rapport avec le changement examiné.
Le placement viable : un petit ensemble de fumée de cinq à dix parcours critiques après la fusion vers la branche d'intégration, et la suite complète la nuit. Règle pratique : si un test UI échoue deux fois pour autre chose que le produit, c'est une tâche de maintenance, pas une porte.
Ce guide fait partie de nos guides DevOps Salesforce.
Quelle vitesse viser pour un contrôle de pull request Salesforce ?
Moins de dix minutes de bout en bout. Au-delà, les développeurs passent à autre chose, ne lisent plus la sortie, et le contrôle ne change plus aucun comportement.
Faut-il exécuter tous les tests Apex sur chaque pull request ?
Non. Exécutez les tests couvrant les classes modifiées avec
RunSpecifiedTests, et gardez l'exécution locale complète pour la nuit et
la validation de release.
Quelle couverture Salesforce exige-t-il réellement ?
75% d'Apex à l'échelle de l'org pour déployer en production, au moins une ligne
couverte par trigger, et tout test exécuté doit passer. Avec
RunSpecifiedTests, chaque classe et trigger du paquet doit atteindre 75%
seul.
Les tests Jest des LWC ont-ils besoin d'une org ?
Non. Ils tournent hors plateforme dans Node, et c'est exactement pour cela qu'ils ont leur place sur la porte de pull request.
Où exécuter les tests d'interface ?
Un petit ensemble de fumée après la fusion, la suite complète la nuit. Les mettre sur la pull request est le moyen le plus rapide d'apprendre à une équipe à ignorer un build rouge.
Sans engagement.