@@ -49,16 +49,12 @@ jobs:
4949 e2e :
5050 name : E2E Tests (WordPress ${{ matrix.wordpress-version }})
5151 runs-on : ubuntu-latest
52+ timeout-minutes : 10 # Жёсткий таймаут — не более 10 минут
5253 strategy :
5354 fail-fast : false
5455 matrix :
5556 php-version : [ "8.3" ]
5657 wordpress-version : [ "latest", "6.7" ]
57- include :
58- - wordpress-version : latest
59- wp-version-string : " latest"
60- - wordpress-version : " 6.7"
61- wp-version-string : " 6.7"
6258
6359 services :
6460 mysql :
7066 MYSQL_PASSWORD : wordpress
7167 ports :
7268 - 3306:3306
73- options : --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
69+ options : --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=3s --health-retries=5
7470
7571 steps :
7672 - name : Checkout
8177 with :
8278 php-version : ${{ matrix.php-version }}
8379 extensions : mysqli, pdo_mysql
84- coverage : pcov
80+ coverage : none # Отключаем coverage для E2E — ускоряет тесты
8581 tools : composer:v2, wp-cli
82+ ini-values : memory_limit=512M
8683
8784 - name : Cache Composer dependencies
8885 uses : actions/cache@v4
@@ -92,56 +89,70 @@ jobs:
9289 restore-keys : |
9390 ${{ runner.os }}-php-${{ matrix.php-version }}-composer-
9491
92+ - name : Cache WordPress
93+ uses : actions/cache@v4
94+ with :
95+ path : /tmp/wordpress
96+ key : wordpress-${{ matrix.wordpress-version }}-v1
97+ restore-keys : |
98+ wordpress-${{ matrix.wordpress-version }}-
99+
95100 - name : Install dependencies
96- run : composer install --no-interaction --no-progress --prefer-dist
101+ run : composer install --no-interaction --no-progress --prefer-dist --no-dev
97102
98103 - name : Setup WordPress
99104 run : |
100- mkdir -p /tmp/wordpress
101- cd /tmp/wordpress
102-
103- # Download WordPress
104- if [ "${{ matrix.wordpress-version }}" = "latest" ]; then
105- wp core download --version=latest --allow-root
105+ # Проверяем, есть ли WordPress в кэше
106+ if [ ! -f /tmp/wordpress/wp-load.php ]; then
107+ echo "Downloading WordPress..."
108+ mkdir -p /tmp/wordpress
109+ cd /tmp/wordpress
110+
111+ if [ "${{ matrix.wordpress-version }}" = "latest" ]; then
112+ wp core download --version=latest --allow-root
113+ else
114+ wp core download --version=${{ matrix.wordpress-version }} --allow-root
115+ fi
106116 else
107- wp core download --version=${{ matrix.wordpress-version }} --allow-root
117+ echo "Using cached WordPress"
108118 fi
109119
110- # Configure WordPress
120+ cd /tmp/wordpress
121+
122+ # Конфигурация (всегда пересоздаём — БД новая)
111123 wp config create \
112124 --dbname=wordpress_test \
113125 --dbuser=wordpress \
114126 --dbpass=wordpress \
115127 --dbhost=127.0.0.1 \
128+ --force \
116129 --allow-root
117130
118- # Install WordPress
131+ # Установка WordPress
119132 wp core install \
120133 --url=http://localhost:8080 \
121134 --title="WP Queue Test" \
122135 --admin_user=admin \
123136 --admin_password=admin \
124137 --admin_email=admin@example.com \
138+ --skip-email \
125139 --allow-root
126140
127- # Create uploads directory
128141 mkdir -p wp-content/uploads
129142 chmod 755 wp-content/uploads
130143
131144 - name : Install Plugin
132145 run : |
133146 cd /tmp/wordpress
147+ rm -rf wp-content/plugins/wp-queue 2>/dev/null || true
134148 ln -s ${{ github.workspace }} wp-content/plugins/wp-queue
135-
136- # Activate plugin
137149 wp plugin activate wp-queue --allow-root
138150
139151 - name : Run E2E tests
152+ timeout-minutes : 5 # Таймаут на сами тесты
140153 run : |
141154 cd ${{ github.workspace }}
142- WP_TESTS_DIR=/tmp/wordpress-tests-lib \
143- WP_CORE_DIR=/tmp/wordpress \
144- ./vendor/bin/pest tests/Feature --configuration=phpunit-e2e.xml
155+ ./vendor/bin/pest tests/Feature --configuration=phpunit-e2e.xml --stop-on-failure --no-coverage
145156 env :
146157 WP_TESTS_DIR : /tmp/wordpress-tests-lib
147158 WP_CORE_DIR : /tmp/wordpress
0 commit comments