Lancer les tests behat par lots par un script

Récemment, j’ai dû mettre en place un script générique de lancement de tests behat via composer. En fait, la vraie raison de ce script est la possibilité de le lancer sur une CI et de n’afficher une erreur que si elle se produit, en lançant les tests par tag via le paramètre –tags=@maSuite

Sans plus attendre, voici le script exécuté par composer par la commande test:it (en local), ou test:it:ci (sur la ci), et qui s’appelle ainsi:

./tests/AppBundle/behat.sh -t tag1,tag2,tag3,tag4,tag5

ou

./tests/AppBundle/behat.sh -t tag1,tag2,tag3,tag4,tag5 -p ci -f progress -c no-colors

 

Voici le script, somme toute simple à comprendre:

#!/usr/bin/env bash

function showHelp
{
    echo "Help:"
    echo "-t tags"
    echo "-p profile (default or ci)"
    echo "-f format (pretty or progress)"
    echo "-c colors (colors or no-colors)"
    echo "-h display this help"
}

if [[ $# -eq 0 ]]; then
    echo "No arguments supplied"
    showHelp
    exit
fi

function createErrorFolder
{
    rm -rf ./var/reports && mkdir ./var/reports
}

function launchBehatTests
{
    IFS=',' read -r -a tagsArray <<< "$tags"
    total=${#tagsArray[*]}

    for (( i=0; i<${total}; i++ ))
		do
			./vendor/bin/behat --config app/config/behat.yml --tags='@'${tagsArray[i]} --profile=${profile} --format=${format} --${colors} -vvv
			result=$?

			if [[ result -eq 1 ]]; then
              exit 1
            fi
		done
}

tags=""
profile="default"
format="pretty"
colors="colors"

while getopts t:p:f:c:h opts; do
   case ${opts} in
      t ) tags=${OPTARG} ;;
      p ) profile=${OPTARG} ;;
      f ) format=${OPTARG} ;;
      c ) colors=${OPTARG} ;;
      h )
	  showHelp
          exit ;;
   esac
done

if [[ tags == "" || profile == "" || format == "" || colors == "" ]]; then
	echo "All arguments must be provided"
	showHelp
	exit 1;
fi

createErrorFolder
launchBehatTests

J’ai configuré behat pour que les captures d’écran des tests qui échouent se trouvent dans var/reports, d’où la création de répertoire.

Rédigé par

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.