Rejeu des tests en échec à la fin d'une exécution
Info
Ce plugin est disponible uniquement dans la version Ultimate de Squash.
A partir de la version 5.1.0
, l'image Docker de Squash Orchestrator inclut le
plugin retryer
permettant de rejouer les cas de test en Ă©chec Ă la fin d'une
exécution. Cela peut être pratique quand une suite de tests automatisée contient des
tests instables.
Pour utiliser la fonctionnalité, il suffit de mettre en place un hook :
hooks:
- name: Retry Hook
events:
- channel: teardown
before:
- uses: tm.squashtest.org/retry@v1
with:
max-retry: 2
scope: test.technology == 'postman'
failure-status: ['FAIL']
Warning
L'action retry
peut être utilisée uniquement au niveau d'un teardown channel hook
qui est exécuté à la fin de chaque job.
Ce hook d'exemple rejoue deux fois, Ă la fin de chaque job du workflow,
tous les tests Postman dont le statut est FAIL
. Si Ă la fin du premier rejeu,
l'ensemble des tests en échec passe en succès, le deuxième rejeu n'est pas lancé.
Ce hook fait appel Ă l'action tm.squashtest.org/retry@v1
du plugin retryer
.
Cette action a trois paramètres optionnels :
max-retry
: le nombre de relances des tests en Ă©chec (1
par défaut)scope
: le filtre appliqué aux tests relancés ('true'
par défaut, c'est-à -dire que l'ensemble des tests exécutés sont pris en compte pour le rejeu)failure-status
: les statuts des tests considérés comme les tests en échec (['FAIL', 'ERROR']
par défaut)
Les valeurs possibles de failure-status
sont FAIL
, ERROR
, SKIPPED
et PASS
.
Le filtre (scope
) utilise les fonctions et les expressions qui sont décrites
dans la documentation d'OpenTestFactory. Il utilise le contexte test
de l'orchestrateur,
dont les properties sont détaillées dans la documentation de la Quality Gate.
Les actions de rejeu peuvent être enchaînées. Dans ce cas, chaque action retry
prend en compte les
résultats des actions précédentes. Supposons que la chaîne des actions définie ci-dessous est
appliquée à un workflow d'un seul job contenant des tests Postman et Cypress :
hooks:
- name: Chain Retry Hooks
events:
- channel: teardown
before:
- uses: tm.squashtest.org/retry@v1
with:
failure-status: ['FAIL']
- uses: tm.squashtest.org/retry@v1
with:
scope: test.technology == 'postman'
failure-status: ['FAIL', 'ERROR']
- uses: tm.squashtest.org/retry@v1
with:
max-retry: 2
scope: test.technology == 'postman' && test.importance == 'HIGH'
failure-status: ['FAIL', 'ERROR']
A la fin du workflow, la première action retry
rejoue l'ensemble des tests ayant le
statut FAIL
. La seconde relance les tests Postman dont le statut est resté en FAIL
après le premier rejeu, mais aussi tous les tests Postman en ERROR
qui ne rentraient pas dans le périmètre de la première action. Enfin, la troisième action
tentera de relancer deux fois tous les tests Postman d'importance haute dont le statut
n'a pas changé après le deuxième rejeu.