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.

Commentaires