@@ -16,7 +16,7 @@ printSummary() {
1616 echo " Container runtime: ${CONTAINER_BIN} " >&2
1717 echo " Container suffix: ${SUFFIX} "
1818 echo " PHP: ${PHP_VERSION} " >&2
19- if [[ ${TEST_SUITE} =~ ^(functional| acceptance)$ ]]; then
19+ if [[ ${TEST_SUITE} =~ ^(functional| acceptance| acceptanceComposer )$ ]]; then
2020 case " ${DBMS} " in
2121 mariadb|mysql|postgres)
2222 echo " DBMS: ${DBMS} version ${DBMS_VERSION} driver ${DATABASE_DRIVER} " >&2
@@ -155,7 +155,8 @@ Usage: $0 [options] [file]
155155Options:
156156 -s <...>
157157 Specifies the test suite to run
158- - acceptance: backend acceptance tests
158+ - acceptance: backend acceptance tests (classic mode, fixture-based instance)
159+ - acceptanceComposer: backend acceptance tests against a real composer-installed TYPO3 instance
159160 - cgl: test and fix all core php files
160161 - composer: "composer" command dispatcher, to execute various composer commands
161162 - composerInstall: "composer install", handy if host has no PHP, uses composer cache of users home
@@ -194,7 +195,7 @@ Options:
194195 - pdo_mysql
195196
196197 -d <sqlite|mariadb|mysql|postgres>
197- Only with -s functional|functionalDeprecated|acceptance|acceptanceInstall
198+ Only with -s functional|functionalDeprecated|acceptance|acceptanceComposer| acceptanceInstall
198199 Specifies on which DBMS tests are performed
199200 - sqlite: (default): use sqlite
200201 - mariadb: use mariadb
@@ -233,12 +234,12 @@ Options:
233234 - 16 maintained until 2028-11-09
234235
235236 -g
236- Only with -s acceptance
237+ Only with -s acceptance|acceptanceComposer
237238 Activate selenium grid as local port to watch browser clicking around. Can be surfed using
238239 http://localhost:7900/. A browser tab is opened automatically if xdg-open is installed.
239240
240241 -x
241- Only with -s functional|unit|acceptance
242+ Only with -s functional|unit|acceptance|acceptanceComposer
242243 Send information to host instance for test or system under test break points. This is especially
243244 useful if a local PhpStorm instance is listening on default xdebug port 9003. A different port
244245 can be selected with -y
@@ -564,6 +565,71 @@ case ${TEST_SUITE} in
564565 ;;
565566 esac
566567 ;;
568+ acceptanceComposer)
569+ rm -rf " ${CORE_ROOT} /.Build/Web/typo3temp/var/tests/acceptance-composer" " ${CORE_ROOT} /.Build/Web/typo3temp/var/tests/AcceptanceReports"
570+
571+ PREPAREPARAMS=" "
572+ TESTPARAMS=" "
573+ case ${DBMS} in
574+ mariadb)
575+ ${CONTAINER_BIN} run --rm ${CI_PARAMS} --name mariadb-ac-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=acp -e MYSQL_DATABASE=ac_test --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MARIADB} > /dev/null
576+ waitFor mariadb-ac-${SUFFIX} 3306
577+ PREPAREPARAMS=" -e TYPO3_DB_DRIVER=mysqli -e TYPO3_DB_DBNAME=ac_test -e TYPO3_DB_USERNAME=root -e TYPO3_DB_PASSWORD=acp -e TYPO3_DB_HOST=mariadb-ac-${SUFFIX} -e TYPO3_DB_PORT=3306"
578+ TESTPARAMS=" -e typo3DatabaseName=ac_test -e typo3DatabaseUsername=root -e typo3DatabasePassword=acp -e typo3DatabaseHost=mariadb-ac-${SUFFIX} "
579+ ;;
580+ mysql)
581+ ${CONTAINER_BIN} run --rm ${CI_PARAMS} --name mysql-ac-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=acp -e MYSQL_DATABASE=ac_test --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MYSQL} > /dev/null
582+ waitFor mysql-ac-${SUFFIX} 3306
583+ PREPAREPARAMS=" -e TYPO3_DB_DRIVER=mysqli -e TYPO3_DB_DBNAME=ac_test -e TYPO3_DB_USERNAME=root -e TYPO3_DB_PASSWORD=acp -e TYPO3_DB_HOST=mysql-ac-${SUFFIX} -e TYPO3_DB_PORT=3306"
584+ TESTPARAMS=" -e typo3DatabaseName=ac_test -e typo3DatabaseUsername=root -e typo3DatabasePassword=acp -e typo3DatabaseHost=mysql-ac-${SUFFIX} "
585+ ;;
586+ postgres)
587+ ${CONTAINER_BIN} run --rm ${CI_PARAMS} --name postgres-ac-${SUFFIX} --network ${NETWORK} -d -e POSTGRES_DB=ac_test -e POSTGRES_PASSWORD=acp -e POSTGRES_USER=ac_test --tmpfs /var/lib/postgresql/data:rw,noexec,nosuid ${IMAGE_POSTGRES} > /dev/null
588+ waitFor postgres-ac-${SUFFIX} 5432
589+ PREPAREPARAMS=" -e TYPO3_DB_DRIVER=postgres -e TYPO3_DB_DBNAME=ac_test -e TYPO3_DB_USERNAME=ac_test -e TYPO3_DB_PASSWORD=acp -e TYPO3_DB_HOST=postgres-ac-${SUFFIX} -e TYPO3_DB_PORT=5432"
590+ TESTPARAMS=" -e typo3DatabaseDriver=pdo_pgsql -e typo3DatabaseName=ac_test -e typo3DatabaseUsername=ac_test -e typo3DatabasePassword=acp -e typo3DatabaseHost=postgres-ac-${SUFFIX} "
591+ ;;
592+ sqlite)
593+ PREPAREPARAMS=" -e TYPO3_DB_DRIVER=sqlite"
594+ TESTPARAMS=" -e typo3DatabaseDriver=pdo_sqlite"
595+ ;;
596+ esac
597+
598+ ${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name acceptance-composer-prepare-${SUFFIX} ${XDEBUG_MODE} -e COMPOSER_CACHE_DIR=${CORE_ROOT} /.cache/composer -e COMPOSER_ROOT_VERSION=${COMPOSER_ROOT_VERSION} -e XDEBUG_CONFIG=" ${XDEBUG_CONFIG} " -e TYPO3=${TYPO3} ${PREPAREPARAMS} ${IMAGE_PHP} " ${CORE_ROOT} /Build/Scripts/setupAcceptanceComposer.sh" " .Build/Web/typo3temp/var/tests/acceptance-composer"
599+ SUITE_EXIT_CODE=$?
600+ if [[ ${SUITE_EXIT_CODE} -eq 0 ]]; then
601+ CODECEPION_ENV=" --env ci,composer"
602+ if [ " ${ACCEPTANCE_HEADLESS} " -eq 1 ]; then
603+ CODECEPION_ENV=" --env ci,composer,headless"
604+ fi
605+ COMMAND=(.Build/vendor/codeception/codeception/codecept run Backend -d -c Tests/codeception.yml ${CODECEPION_ENV} " $@ " --html reports.html)
606+ SELENIUM_GRID=" "
607+ if [ " ${ACCEPTANCE_HEADLESS} " -eq 0 ]; then
608+ SELENIUM_GRID=" -p 7900:7900 -e SE_VNC_NO_PASSWORD=1 -e VNC_NO_PASSWORD=1"
609+ fi
610+ APACHE_OPTIONS=" -e APACHE_RUN_USER=#${HOST_UID} -e APACHE_RUN_SERVERNAME=web -e APACHE_RUN_GROUP=#${HOST_PID} -e APACHE_RUN_DOCROOT=${CORE_ROOT} /.Build/Web/typo3temp/var/tests/acceptance-composer/public -e PHPFPM_HOST=phpfpm -e PHPFPM_PORT=9000"
611+ ${CONTAINER_BIN} run --rm ${CI_PARAMS} -d ${SELENIUM_GRID} --name ac-chrome-${SUFFIX} --network ${NETWORK} --network-alias chrome --tmpfs /dev/shm:rw,nosuid,nodev,noexec ${IMAGE_SELENIUM} > /dev/null
612+ if [ ${CONTAINER_BIN} = " docker" ]; then
613+ ${CONTAINER_BIN} run --rm -d --name ac-phpfpm-${SUFFIX} --network ${NETWORK} --network-alias phpfpm --add-host " ${CONTAINER_HOST} :host-gateway" ${USERSET} -e PHPFPM_USER=${HOST_UID} -e PHPFPM_GROUP=${HOST_PID} -v ${CORE_ROOT} :${CORE_ROOT} ${IMAGE_PHP} php-fpm ${PHP_FPM_OPTIONS} > /dev/null
614+ ${CONTAINER_BIN} run --rm -d --name ac-web-${SUFFIX} --network ${NETWORK} --network-alias web --add-host " ${CONTAINER_HOST} :host-gateway" -v ${CORE_ROOT} :${CORE_ROOT} ${APACHE_OPTIONS} ${IMAGE_APACHE} > /dev/null
615+ else
616+ ${CONTAINER_BIN} run --rm ${CI_PARAMS} -d --name ac-phpfpm-${SUFFIX} --network ${NETWORK} --network-alias phpfpm ${USERSET} -e PHPFPM_USER=0 -e PHPFPM_GROUP=0 -v ${CORE_ROOT} :${CORE_ROOT} ${IMAGE_PHP} php-fpm -R ${PHP_FPM_OPTIONS} > /dev/null
617+ ${CONTAINER_BIN} run --rm ${CI_PARAMS} -d --name ac-web-${SUFFIX} --network ${NETWORK} --network-alias web -v ${CORE_ROOT} :${CORE_ROOT} ${APACHE_OPTIONS} ${IMAGE_APACHE} > /dev/null
618+ fi
619+ waitFor chrome 4444
620+ if [ " ${ACCEPTANCE_HEADLESS} " -eq 0 ]; then
621+ waitFor chrome 7900
622+ fi
623+ waitFor web 80
624+ if [ " ${ACCEPTANCE_HEADLESS} " -eq 0 ] && type " xdg-open" > /dev/null; then
625+ xdg-open http://localhost:7900/? autoconnect=1 > /dev/null
626+ elif [ " ${ACCEPTANCE_HEADLESS} " -eq 0 ] && type " open" > /dev/null; then
627+ open http://localhost:7900/? autoconnect=1 > /dev/null
628+ fi
629+ ${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name ac-${DBMS} -composer-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG=" ${XDEBUG_CONFIG} " ${TESTPARAMS} ${IMAGE_PHP} " ${COMMAND[@]} "
630+ SUITE_EXIT_CODE=$?
631+ fi
632+ ;;
567633 cgl)
568634 # Active dry-run for cgl needs not "-n" but specific options
569635 if [ -n " ${CGLCHECK_DRY_RUN} " ]; then
0 commit comments