runtest.sh : ajout option timeout + peaufinage léger

This commit is contained in:
Jean-Christophe Engel 2024-10-14 10:07:24 +02:00
parent 48f9693ee1
commit bfcdfa00b7

View File

@ -1,36 +1,42 @@
#!/bin/bash #!/bin/bash
# TODO :
# - passer le nom du script selenium en argument
# - si zenity n'est pas disponible, faire un menu en mode texte
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
# exécuter le test et tuer le processus quand le message de fin apparait #
# ceci pour essayer de contourner le bug qui envoie le message ci-dessous : # Exécuter un ou plusieurs tests d'un fichier selenium
# au préalable :
# - convertir le fichier généré par l'IDE dans le format attendu par le runner
# - copier « au bon endroit » (/tmp) les fichiers pour les tests d'import
#
# Remarque : je tue le processus quand le message de fin apparait
# pour essayer de contourner le bug qui envoie le message ci-dessous :
# #
# Jest did not exit one second after the test run has completed. # Jest did not exit one second after the test run has completed.
#
# 'This usually means that there are asynchronous operations that # 'This usually means that there are asynchronous operations that
# weren't stopped in your tests. Consider running Jest with # weren't stopped in your tests. Consider running Jest with
# `--detectOpenHandles` to troubleshoot this issue. # `--detectOpenHandles` to troubleshoot this issue.
# voir aussi https://github.com/SeleniumHQ/selenium-ide/issues/1819 # voir aussi https://github.com/SeleniumHQ/selenium-ide/issues/1819
#
# TODO :
# - si zenity n'est pas disponible, faire un menu en mode texte
# voir du côté de jq (bôf)
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
aide() aide()
{ {
cat <<EOF cat <<EOF >& 2
Exécuter un, plusieurs ou tous les tests d'un fichier de test Selenium Exécuter un, plusieurs ou tous les tests d'un fichier de test Selenium
Appel : $(basename $0) [-f fichier] [-a] [-c] [-n] [-z répertoire] [-h] [test ..] Appel : $(basename $0) -f fichier [-a] [-c] [-n] [-v] [-z répertoire] [-h] [-t timeout] [test ..]
-f fichier : fichier de test (défaut : membres.side) -f fichier : fichier de test
-a : exécuter tous les tests du fichier -a : exécuter tous les tests du fichier
-c : afficher la fenêtre de chrome -c : afficher la fenêtre de chrome
-n : ne pas tuer le processus en fin de test -n : ne pas tuer le processus en fin de test
-v : afficher la ligne de commande -v : afficher la ligne de commande
-z répertoire : sauver une copie d'écran dans le répertoire indiqué -z répertoire : sauver une copie d'écran dans le répertoire en cas d'échec
-t timeout : définir une attente max (défaut : 200000 ms)
-h : afficher cette aide -h : afficher cette aide
test : nom (partiel ou complet) d'un test ou d'une suite à exécuter test : nom (partiel ou complet) d'un test ou d'une suite à exécuter
si absent, affiche un sélecteur pour choisir une des suites du fichier
EOF EOF
} }
@ -63,24 +69,23 @@ traiter_test()
# les constantes # les constantes
CHROME_OPTIONS=disable-search-engine-choice-screen,disable-infobars CHROME_OPTIONS=disable-search-engine-choice-screen,disable-infobars
JEST_OPTIONS='"\"--detectOpenHandles\""' JEST_OPTIONS='"\"--detectOpenHandles\""'
TIMEOUT=1000000 TIMEOUT=200000
# les options # les options
IMGDIR="" IMGDIR=""
KILL=1 KILL=1
TESTFILE=membres_v3.side declare -A options=(
declare -A options
options=(
[--jest-timeout]=${TIMEOUT} [--jest-timeout]=${TIMEOUT}
[--jest-options]=${JEST_OPTIONS} [--jest-options]=${JEST_OPTIONS}
) )
ARGS=""
# Traiter les arguments # Traiter les arguments
ARGS=""
while [[ $# -gt 0 ]] while [[ $# -gt 0 ]]
do do
case "$1" in case "$1" in
-f ) -f )
# nom du fichier de test
shift shift
TESTFILE="$1" TESTFILE="$1"
if if
@ -105,6 +110,12 @@ do
KILL=0 KILL=0
shift shift
;; ;;
-t )
# timeout
shift
TIMEOUT="$1"
shift
;;
-v ) -v )
# afficher la ligne de commande # afficher la ligne de commande
AFFCOMM=1 AFFCOMM=1
@ -121,6 +132,7 @@ do
exit exit
;; ;;
-* ) -* )
# autres arguments de selenium-side-runner (+-)
ARGS+=" $1" ARGS+=" $1"
shift shift
;; ;;
@ -131,6 +143,14 @@ do
esac esac
done done
# vérifier si on a un nom de fichier
if [[ -z "$TESTFILE" ]]
then
printf "\n*** Erreur : il manque le nom du fichier de test ***\n\n" >& 2
aide
exit
fi
if [[ -z "$CHROME" ]] if [[ -z "$CHROME" ]]
then then
CHROME_OPTIONS="${CHROME_OPTIONS},headless" CHROME_OPTIONS="${CHROME_OPTIONS},headless"
@ -142,6 +162,8 @@ then
options[-z]+=${IMGDIR} options[-z]+=${IMGDIR}
fi fi
options[--timeout]=${TIMEOUT}
# la commande # la commande
COMMANDE="selenium-side-runner $ARGS" COMMANDE="selenium-side-runner $ARGS"
for elem in ${!options[@]} for elem in ${!options[@]}
@ -158,8 +180,9 @@ fi
# copier les fichiers à envoyer dans /tmp # copier les fichiers à envoyer dans /tmp
rm -f Membres*.csv *membres.csv rm -f Membres*.csv *membres.csv
cp -p *.csv /tmp cp -p fichiers/* /tmp
cp -p cv*.pdf /tmp
# exécuter les tests
if [[ "$TESTS" == "tous" ]] if [[ "$TESTS" == "tous" ]]
then then