Re-enable WordPress Playground CI tests with v3.0.22
- Re-enable push/PR triggers for playground-tests.yml - Use @wp-playground/cli 3.0.22 with improved CI stability - Add better debug logging (server logs on failure) - Check for process death during startup - Use 127.0.0.1 instead of localhost for reliability - Reduce timeout to 120s (faster feedback) - Update package-lock.json with new dependencies
This commit is contained in:
82
.github/workflows/playground-tests.yml
vendored
82
.github/workflows/playground-tests.yml
vendored
@@ -1,15 +1,17 @@
|
|||||||
name: WordPress Playground Tests
|
name: WordPress Playground Tests
|
||||||
|
|
||||||
# DISABLED: WordPress Playground CLI doesn't work reliably in GitHub Actions CI environments
|
# Re-enabled with @wp-playground/cli v3.0.22 which has improved CI stability.
|
||||||
# The server fails to start within timeout periods. These tests should be run locally instead.
|
# Tests use continue-on-error: true so they won't block PRs if flaky.
|
||||||
# See: https://wordpress.github.io/wordpress-playground/developers/local-development
|
|
||||||
#
|
#
|
||||||
# To run locally:
|
# To run locally:
|
||||||
# npm run test:playground:single
|
# npm run playground:start
|
||||||
# npm run test:playground:multisite
|
# npm run playground:start:multisite
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# Disable automatic triggers - only run manually if needed for debugging
|
push:
|
||||||
|
branches: [ main, feature/* ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
debug:
|
debug:
|
||||||
@@ -17,12 +19,6 @@ on:
|
|||||||
required: false
|
required: false
|
||||||
default: 'false'
|
default: 'false'
|
||||||
|
|
||||||
# Commented out triggers that cause CI noise:
|
|
||||||
# push:
|
|
||||||
# branches: [ main, feature/* ]
|
|
||||||
# pull_request:
|
|
||||||
# branches: [ main ]
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
@@ -88,26 +84,41 @@ jobs:
|
|||||||
- name: Run tests with WordPress Playground
|
- name: Run tests with WordPress Playground
|
||||||
run: |
|
run: |
|
||||||
# Set base URL for Cypress
|
# Set base URL for Cypress
|
||||||
export CYPRESS_BASE_URL=http://localhost:8888
|
export CYPRESS_BASE_URL=http://127.0.0.1:8888
|
||||||
|
|
||||||
# Check if blueprint file exists
|
# Check if blueprint file exists
|
||||||
echo "Checking blueprint file..."
|
echo "Checking blueprint file..."
|
||||||
ls -la playground/
|
ls -la playground/
|
||||||
cat playground/blueprint.json
|
cat playground/blueprint.json
|
||||||
|
|
||||||
# Start WordPress Playground with our blueprint (using @wp-playground/cli 3.x syntax)
|
# Start WordPress Playground with our blueprint (using @wp-playground/cli 3.x)
|
||||||
echo "Starting WordPress Playground server..."
|
echo "Starting WordPress Playground server..."
|
||||||
npx @wp-playground/cli server --blueprint playground/blueprint.json --port 8888 --login &
|
npx @wp-playground/cli server \
|
||||||
|
--blueprint playground/blueprint.json \
|
||||||
|
--port 8888 \
|
||||||
|
--login \
|
||||||
|
--php 8.0 \
|
||||||
|
--verbosity normal \
|
||||||
|
2>&1 | tee playground-server.log &
|
||||||
SERVER_PID=$!
|
SERVER_PID=$!
|
||||||
|
|
||||||
# Wait for WordPress Playground to be ready (increased timeout to 180s)
|
# Wait for WordPress Playground to be ready
|
||||||
echo "Waiting for WordPress Playground to be ready..."
|
echo "Waiting for WordPress Playground to be ready..."
|
||||||
TIMEOUT=180
|
TIMEOUT=120
|
||||||
ELAPSED=0
|
ELAPSED=0
|
||||||
while ! curl -s http://localhost:8888 > /dev/null 2>&1; do
|
while ! curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8888 2>/dev/null | grep -q "200\|302"; do
|
||||||
if [ $ELAPSED -ge $TIMEOUT ]; then
|
if [ $ELAPSED -ge $TIMEOUT ]; then
|
||||||
echo "Timeout waiting for WordPress Playground to start"
|
echo "Timeout waiting for WordPress Playground to start"
|
||||||
kill $SERVER_PID || true
|
echo "=== Server log ==="
|
||||||
|
cat playground-server.log || true
|
||||||
|
kill $SERVER_PID 2>/dev/null || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Check if server process is still running
|
||||||
|
if ! kill -0 $SERVER_PID 2>/dev/null; then
|
||||||
|
echo "Server process died unexpectedly"
|
||||||
|
echo "=== Server log ==="
|
||||||
|
cat playground-server.log || true
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "Waiting... ($ELAPSED/$TIMEOUT seconds)"
|
echo "Waiting... ($ELAPSED/$TIMEOUT seconds)"
|
||||||
@@ -122,7 +133,7 @@ jobs:
|
|||||||
TEST_EXIT_CODE=$?
|
TEST_EXIT_CODE=$?
|
||||||
|
|
||||||
# Kill the server process
|
# Kill the server process
|
||||||
kill $SERVER_PID || true
|
kill $SERVER_PID 2>/dev/null || true
|
||||||
|
|
||||||
# Return the test exit code
|
# Return the test exit code
|
||||||
exit $TEST_EXIT_CODE
|
exit $TEST_EXIT_CODE
|
||||||
@@ -166,27 +177,42 @@ jobs:
|
|||||||
- name: Run tests with WordPress Playground
|
- name: Run tests with WordPress Playground
|
||||||
run: |
|
run: |
|
||||||
# Set base URL for Cypress
|
# Set base URL for Cypress
|
||||||
export CYPRESS_BASE_URL=http://localhost:8889
|
export CYPRESS_BASE_URL=http://127.0.0.1:8889
|
||||||
|
|
||||||
# Check if blueprint file exists
|
# Check if blueprint file exists
|
||||||
echo "Checking multisite blueprint file..."
|
echo "Checking multisite blueprint file..."
|
||||||
ls -la playground/
|
ls -la playground/
|
||||||
cat playground/multisite-blueprint.json
|
cat playground/multisite-blueprint.json
|
||||||
|
|
||||||
# Start WordPress Playground with our blueprint (using @wp-playground/cli 3.x syntax)
|
# Start WordPress Playground with our blueprint (using @wp-playground/cli 3.x)
|
||||||
# Use a different port for multisite to avoid conflicts with single site tests
|
# Use a different port for multisite to avoid conflicts with single site tests
|
||||||
echo "Starting WordPress Playground server for multisite..."
|
echo "Starting WordPress Playground server for multisite..."
|
||||||
npx @wp-playground/cli server --blueprint playground/multisite-blueprint.json --port 8889 --login &
|
npx @wp-playground/cli server \
|
||||||
|
--blueprint playground/multisite-blueprint.json \
|
||||||
|
--port 8889 \
|
||||||
|
--login \
|
||||||
|
--php 8.0 \
|
||||||
|
--verbosity normal \
|
||||||
|
2>&1 | tee playground-server.log &
|
||||||
SERVER_PID=$!
|
SERVER_PID=$!
|
||||||
|
|
||||||
# Wait for WordPress Playground to be ready (increased timeout to 180s)
|
# Wait for WordPress Playground to be ready
|
||||||
echo "Waiting for WordPress Playground to be ready..."
|
echo "Waiting for WordPress Playground to be ready..."
|
||||||
TIMEOUT=180
|
TIMEOUT=120
|
||||||
ELAPSED=0
|
ELAPSED=0
|
||||||
while ! curl -s http://localhost:8889 > /dev/null 2>&1; do
|
while ! curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8889 2>/dev/null | grep -q "200\|302"; do
|
||||||
if [ $ELAPSED -ge $TIMEOUT ]; then
|
if [ $ELAPSED -ge $TIMEOUT ]; then
|
||||||
echo "Timeout waiting for WordPress Playground to start"
|
echo "Timeout waiting for WordPress Playground to start"
|
||||||
kill $SERVER_PID || true
|
echo "=== Server log ==="
|
||||||
|
cat playground-server.log || true
|
||||||
|
kill $SERVER_PID 2>/dev/null || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Check if server process is still running
|
||||||
|
if ! kill -0 $SERVER_PID 2>/dev/null; then
|
||||||
|
echo "Server process died unexpectedly"
|
||||||
|
echo "=== Server log ==="
|
||||||
|
cat playground-server.log || true
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "Waiting... ($ELAPSED/$TIMEOUT seconds)"
|
echo "Waiting... ($ELAPSED/$TIMEOUT seconds)"
|
||||||
@@ -201,7 +227,7 @@ jobs:
|
|||||||
TEST_EXIT_CODE=$?
|
TEST_EXIT_CODE=$?
|
||||||
|
|
||||||
# Kill the server process
|
# Kill the server process
|
||||||
kill $SERVER_PID || true
|
kill $SERVER_PID 2>/dev/null || true
|
||||||
|
|
||||||
# Return the test exit code
|
# Return the test exit code
|
||||||
exit $TEST_EXIT_CODE
|
exit $TEST_EXIT_CODE
|
||||||
|
|||||||
2207
package-lock.json
generated
2207
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user