Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
6d79778
Move tracking opt-in to general settings and onboarding wizard
superdav42 Jan 25, 2026
c101dc4
better error logging and handling of user accounts unable to connect …
superdav42 Jan 25, 2026
0f94b89
add recommended html attr
superdav42 Jan 25, 2026
a1df46f
allow kses to be extended
superdav42 Jan 25, 2026
d0bc595
add settings api
superdav42 Jan 25, 2026
58d27e5
Fix problems with choosing country and state
superdav42 Jan 25, 2026
9998c00
Fix login redirect
superdav42 Jan 25, 2026
a5b944d
Add support for pay what you want prices
superdav42 Jan 29, 2026
ab41443
Add support for pay what you want prices
superdav42 Jan 29, 2026
e2bc76d
Add support for pay what you want prices
superdav42 Jan 29, 2026
a808f21
set duration for manually created memberships
superdav42 Jan 29, 2026
30f1ac2
add duration restrictions for discount codes
superdav42 Jan 29, 2026
af6276c
make yoursite translatable
superdav42 Jan 29, 2026
a8b1edb
let users change their email
superdav42 Jan 29, 2026
28692a2
let networks login
superdav42 Jan 29, 2026
d905829
fix error in multinetwork
superdav42 Jan 29, 2026
76e4874
fix extra chars
superdav42 Jan 29, 2026
f4ca4ec
Apply suggestion from @superdav42
superdav42 Jan 30, 2026
93dd859
Fix product tabs
superdav42 Feb 2, 2026
eb12793
Skip billing requirements for free trials, fix null product handling,…
superdav42 Feb 3, 2026
a3b1bfd
Skip billing validation when payment not required, code style fixes
superdav42 Feb 3, 2026
d181e94
Apply suggestion from @coderabbitai[bot]
superdav42 Feb 3, 2026
1d66ab8
Address CodeRabbit review feedback and refactor Settings API
superdav42 Feb 3, 2026
e4537be
Merge branch 'main' into tweask-again
superdav42 Feb 3, 2026
c65339c
Enforce a strong password
superdav42 Feb 3, 2026
a76cee6
Merge branch 'tweask-again' of github.com:Multisite-Ultimate/ultimate…
superdav42 Feb 3, 2026
e95460b
Restructure E2E tests with programmatic setup and working checkout flows
superdav42 Feb 3, 2026
4655401
Fix PHPCS violations in E2E PHP fixtures
superdav42 Feb 3, 2026
08f14d0
Fix e2e workflow: correct spec names, remove invalid CLI flags, fix e…
superdav42 Feb 4, 2026
0ba2b71
fix searches
superdav42 Feb 4, 2026
01cbcb6
Add the doc
superdav42 Feb 4, 2026
3a09c64
fix legacy
superdav42 Feb 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 13 additions & 69 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,66 +120,24 @@ jobs:
echo "Base URL: http://localhost:8889"
cat cypress.env.json 2>/dev/null || echo "❌ cypress.env.json not found"

- name: Run Setup Wizard Test (Must Run First)
- name: Run Setup Test (Must Run First)
id: setup-test
continue-on-error: true
run: |
echo "=== Starting Setup Wizard Test ==="

# Don't exit on errors - we want to capture the result
echo "=== Starting Setup Test ==="
npx cypress run \
--config-file cypress.config.test.js \
--spec "tests/e2e/cypress/integration/setup-wizard-complete.spec.js" \
--browser ${{ matrix.browser }} \
--reporter spec \
--reporter-options "verbose=true" \
--env "CYPRESS_CRASH_REPORTS=0" \
--record false \
--video true \
--screenshot-on-failure true

CYPRESS_EXIT_CODE=$?

if [ $CYPRESS_EXIT_CODE -eq 0 ]; then
echo "✅ Setup wizard test passed successfully"
echo "setup_success=true" >> $GITHUB_OUTPUT
else
echo "❌ Setup wizard test failed with exit code $CYPRESS_EXIT_CODE"
echo "Capturing detailed failure information..."
echo "=== WordPress State ==="
curl -I http://localhost:8889 || echo "WordPress not responding"
echo "=== Test Files ==="
ls -la tests/e2e/cypress/screenshots/ 2>/dev/null || echo "No screenshots directory"
ls -la tests/e2e/cypress/videos/ 2>/dev/null || echo "No videos directory"
echo "=== Docker Logs ==="
docker logs $(docker ps -q --filter "name=tests-wordpress") 2>&1 | tail -10 || echo "No Docker logs"
echo "=== File System ==="
ls -la tests/e2e/cypress/integration/setup-wizard-complete.spec.js || echo "Setup test file missing"
echo "setup_success=false" >> $GITHUB_OUTPUT
fi

- name: Verify Setup Completed Successfully
if: success()
run: |
echo "=== Verifying Setup Wizard Completion ==="
# Test for setup completion indicators
curl -s "http://localhost:8889/wp-admin/network/" | grep -i "ultimo\|dashboard" && echo "✅ Setup appears successful" || echo "⚠️ Setup verification unclear"
--spec "tests/e2e/cypress/integration/000-setup.spec.js" \
--browser ${{ matrix.browser }}

- name: Run Checkout Tests (After Setup)
if: always() # Run checkout tests regardless of setup wizard result for debugging
continue-on-error: true
id: checkout-tests
run: |
set +e
echo "=== Starting Checkout Tests ==="
echo "Setup wizard result: ${GITHUB_OUTPUT}"
echo "Setup success flag: ${{ steps.setup-test.outputs.setup_success }}"
echo "Running checkout test suite (setup wizard success not required for debugging)..."

# Run all checkout tests in sequence
CHECKOUT_TESTS=(
"tests/e2e/cypress/integration/checkout-registration.spec.js"
"tests/e2e/cypress/integration/checkout-validation.spec.js"
"tests/e2e/cypress/integration/checkout-scenarios.spec.js"
"tests/e2e/cypress/integration/checkout-confirmation.spec.js"
"tests/e2e/cypress/integration/010-manual-checkout-flow.spec.js"
"tests/e2e/cypress/integration/020-free-trial-flow.spec.js"
)

TOTAL_FAILURES=0
Expand All @@ -190,13 +148,7 @@ jobs:
npx cypress run \
--config-file cypress.config.test.js \
--spec "$TEST_SPEC" \
--browser ${{ matrix.browser }} \
--reporter spec \
--reporter-options "verbose=true" \
--env "CYPRESS_CRASH_REPORTS=0" \
--record false \
--video true \
--screenshot-on-failure true
--browser ${{ matrix.browser }}

CYPRESS_EXIT_CODE=$?

Expand All @@ -209,14 +161,12 @@ jobs:
done

if [ $TOTAL_FAILURES -gt 0 ]; then
echo "❌ $TOTAL_FAILURES checkout tests failed"
echo "Capturing failure information..."
ls -la tests/e2e/cypress/screenshots/ 2>/dev/null || echo "No screenshots"
ls -la tests/e2e/cypress/videos/ 2>/dev/null || echo "No videos"
else
echo "✅ All checkout tests passed successfully!"
echo "❌ $TOTAL_FAILURES checkout test(s) failed"
exit 1
fi

echo "✅ All checkout tests passed!"

- name: Fix permissions for Cypress output
if: always()
run: sudo chown -R $USER:$USER tests/e2e/cypress
Expand All @@ -237,12 +187,6 @@ jobs:
name: cypress-videos-${{ matrix.php }}-${{ matrix.browser }}
path: tests/e2e/cypress/videos

- name: Fail job if tests failed
if: failure()
run: |
echo "❌ One or more e2e tests failed."
exit 1

- name: Stop WordPress Environment
if: always()
run: npm run env:stop
12 changes: 8 additions & 4 deletions .wp-env.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@
"."
],
"mappings": {
"wp-content/mu-plugins/email-smtp-dev.php": "./mu-plugins/email-smtp-dev/email-smtp-dev.php"
"wp-content/mu-plugins/email-smtp-dev.php": "./mu-plugins/email-smtp-dev/email-smtp-dev.php",
"wp-content/sunrise.php": "./sunrise.php"
},
"config": {
"WP_DEBUG": true,
"WP_DEBUG_DISPLAY": true,
"WP_DEBUG_LOG": true,
"SCRIPT_DEBUG": true,
"WP_MEMORY_LIMIT": "256M",
"WP_MAX_MEMORY_LIMIT": "512M"
"WP_MAX_MEMORY_LIMIT": "512M",
"SUNRISE": true
}
},
"tests": {
Expand All @@ -24,15 +26,17 @@
"."
],
"mappings": {
"wp-content/mu-plugins/email-smtp-test.php": "./mu-plugins/email-smtp-test/email-smtp-test.php"
"wp-content/mu-plugins/email-smtp-test.php": "./mu-plugins/email-smtp-test/email-smtp-test.php",
"wp-content/sunrise.php": "./sunrise.php"
},
"config": {
"WP_DEBUG": true,
"WP_DEBUG_DISPLAY": false,
"WP_DEBUG_LOG": true,
"SCRIPT_DEBUG": true,
"WP_MEMORY_LIMIT": "256M",
"WP_MAX_MEMORY_LIMIT": "512M"
"WP_MAX_MEMORY_LIMIT": "512M",
"SUNRISE": true
}
}
}
Expand Down
Loading
Loading