From c52fb7e24cd03c913d5759b3c5eae1870a13f1b5 Mon Sep 17 00:00:00 2001 From: Eric Bremner <ebremner@uwaterloo.ca> Date: Mon, 17 Mar 2025 15:56:59 -0400 Subject: [PATCH] ISTWCMS-7189: Update scripts to only have one that works now --- run_tests.sh | 185 +++++++++++++++++++++++++------------------ setup_codeception.sh | 2 - 2 files changed, 107 insertions(+), 80 deletions(-) diff --git a/run_tests.sh b/run_tests.sh index 80b1b7cb..8b97e620 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -1,103 +1,132 @@ -rm -rf tests/_output -rm -rf tests/_data - -codecoverage=0 -stepper=0 -debugger=0 -testname="" +# Set the variables to start. +endtoend=0; +stepper=0; +installsite=0; +testname=""; -cp tests/acceptance_norecorder.suite.yml tests/acceptance.suite.yml - -while getopts 'crsdt:' OPTION; do +# Get the options from the command line. +while getopts 'rsiet:' OPTION; do case "$OPTION" in r) cp tests/acceptance_recorder.suite.yml tests/acceptance.suite.yml ;; - c) - codecoverage=1 - ;; s) stepper=1 ;; - d) - debugger=1 + i) + installsite=1 + ;; + e) + endtoend=1 ;; t) testname=$OPTARG ;; ?) - echo "script usage: [-c] [-r] [-s] [-d] [-t] <TestName>" >&2 + echo "script usage: [-rsiet]" >&2 exit 1 ;; esac done -if [ $stepper == 0 ] && [ $codecoverage == 0 ]; then - if [ $debugger == 1 ]; then - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --fail-fast --debug - else - php vendor/bin/codecept run acceptance --fail-fast --debug - fi - else - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --fail-fast - else - php vendor/bin/codecept run acceptance --fail-fast - fi - fi +# Ensure that we have either end to end or specific test. +if [[ $endtoend == 0 ]] && [[ $testname == "" ]]; then + echo "You must specify a test if not using end to end tests"; + exit 1; +fi; + +# Remove all the old test data. +rm -rf tests/_output +rm -rf tests/_data + +# Ensure we are not using the recorder. +cp tests/acceptance_norecorder.suite.yml tests/acceptance.suite.yml + +if [[ $installsite == 1 ]]; then + # Generate a file name for the sql file. + sqlfile=$(cat /proc/sys/kernel/random/uuid) + sqlfile="$sqlfile.sql" + + # Install a site and get an sql file from site install. + echo "*********************************************************" + echo "Installing site ..." + drush si uw_base_profile --db-url=mysql://drupal:drupal@mariadb/drupal --account-name=wcmsadmin --account-pass=a --site-name="WCMS Test" -y + drush sql-dump > "$sqlfile" + echo "Done installing site." + echo "*********************************************************" fi -if [ $stepper == 1 ] && [ $codecoverage == 1 ]; then - if [ $debugger == 1 ]; then - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --steps --coverage-html --fail-fast --debug - else - php vendor/bin/codecept run acceptance --steps --coverage-html --fail-fast --debug - fi - else - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --steps --coverage-html --fail-fast - else - php vendor/bin/codecept run acceptance --steps --coverage-html --fail-fast - fi - fi -else - if [ $stepper == 1 ]; then - if [ $debugger == 1 ]; then - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --steps --fail-fast --debug - else - php vendor/bin/codecept run acceptance --steps --fail-fast --debug - fi - else - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --steps --fail-fast - else - php vendor/bin/codecept run acceptance --steps --fail-fast +if [[ $endtoend == 1 ]]; then + + # Directory to iterate through + directory="tests/acceptance" + + # Get the file names of the tests. + files=() + for file in "$directory"/*; do + if [[ -f "$file" ]]; then + file="${file//tests\/acceptance\//}" + file="${file//\.php/}" + files+=("$file") fi - fi + done +else + files=("$testname") +fi + +# Perform the tests using the files. +for value in "${files[@]}"; do + echo "*********************************************************" + echo "Current Test: $value" + echo "*********************************************************" + + if [[ $endtoend == 1 ]]; then + echo "Stopping chrome driver ..." + echo "*********************************************************" + pgrep chrome | xargs kill -9 fi - if [ $codecoverage == 1 ]; then - if [ $debugger == 1 ]; then - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --coverage-html --debug - else - php vendor/bin/codecept run acceptance --coverage-html --debug - fi - else - if [ $testname ]; then - php vendor/bin/codecept run acceptance $testname --coverage-html --fail-fast - else - php vendor/bin/codecept run acceptance --coverage-html --fail-fast - fi - fi + + if [[ $installsite == 1 ]]; then + echo "Dropping database ..." + echo "*********************************************************" + drush sql-drop -y + echo "Importing database ..." + echo "*********************************************************" + drush sql-cli < "$sqlfile" fi -fi -files=(tests/_output/*.fail.html) + if [[ $endtoend == 1 ]]; then + echo "Starting chrome driver ..." + echo "*********************************************************" + chromedriver --port=9515 --url-base=/wd/hub & + echo "Sleeping ..." + echo "*********************************************************" + sleep 15s + echo "" + fi -if [ -e "${files[0]}" ]; then - sed -i -- 's/link rel\=\"stylesheet\" media\=\"all\" href\=\"\/core/link rel\=\"stylesheet\" media\=\"all\" href\=\"\.\.\/\.\.\/web\/core/g' tests/_output/*.fail.html - sed -i -- 's/link rel\=\"stylesheet\" media\=\"all\" href\=\"\/profiles/link rel\=\"stylesheet\" media\=\"all\" href\=\"\.\.\/\.\.\/web\/profiles/g' tests/_output/*.fail.html -fi + echo "*********************************************************" + echo "Starting test ... $value" + echo "*********************************************************" + if [[ $stepper == 1 ]]; then + php vendor/bin/codecept run acceptance "$value" --fail-fast --steps + else + php vendor/bin/codecept run acceptance "$value" --fail-fast + fi + if [[ $installsite == 1 ]]; then + if [[ $? -ne 0 ]]; then + rm "$sqlfile" + echo "" + echo "*********************************************************" + echo "Test $value failed, done test." + echo "*********************************************************" + echo "" + break + fi + fi + echo "" + echo "*********************************************************" + echo "Done test $value." + echo "*********************************************************" + echo "" +done diff --git a/setup_codeception.sh b/setup_codeception.sh index 12ddf4b9..7d4a8128 100755 --- a/setup_codeception.sh +++ b/setup_codeception.sh @@ -3,6 +3,4 @@ cp tests/c3.php . cp tests/codeception.yml . cp tests/index.php web cp tests/run_tests.sh . -cp tests/run_groups.sh . -cp tests/run_files.sh . sed -i 's/self::COVERAGE_COOKIE,\s$value,\s$cookieParams/self::COVERAGE_COOKIE, $value/g' /var/www/html/vendor/codeception/codeception/src/Codeception/Coverage/Subscriber/LocalServer.php -- GitLab