- Fix testPasswordRecoveryUrlParams: use URL-based probes instead of
userId-based probes to distinguish between test cases that share the
same user
- Enable functions.* webhook events in ProjectCustom for function
webhook tests that were silently passing by matching stale events
- Fix setupTeamMembership: add email address probe to getLastEmail to
prevent picking up wrong invitation email
- Fix getLastEmail multi-email race: assert count inside assertEventually
when requesting multiple emails
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add probe callback support to getLastEmail(), getLastEmailByAddress(),
and getLastRequest() to filter results by content before accepting
- Fix variable name typo in TeamsCustomClientTest ($email vs $lastEmail)
- Add event probes to all 56 webhook test getLastRequest() calls to
filter by specific event pattern (resource ID + action)
- Add email probes to Account OTP/recovery/magic-url tests to wait for
the correct email (security phrase, Password Reset subject, etc.)
- Add email probes to Projects tests for recovery email URL matching
- Increase FunctionsSchedule future time from 1min to 2min to avoid
timing issues when seconds are zeroed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Upgrade utopia-php/cli from 0.15 to 0.22
- Upgrade utopia-php/analytics from 0.10 to 0.15
- Upgrade utopia-php/orchestration from 0.9 to 0.19
- Use dev branches for utopia-php/framework and utopia-php/platform
- Remove utopia-php/swoole dependency (merged into framework)
- Migrate Utopia\CLI\Console to Utopia\Console across all files
- Migrate Utopia\Http to Utopia\Http\Http namespace
- Migrate Utopia\Swoole\Files to Utopia\Http\Files (now instance-based)
- Convert static CLI::setResource() calls to instance-based Dependency API
- Fix StatsResources task named parameter mismatch
- testDeleteUser: User is created with status=true, so assert that
- testUpdateUserStatus: Use probe to find correct webhook event
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Account: Use unique emails/phone numbers to avoid collisions
- Functions: Use flexible assertions for counts and search results
- GraphQL: Add better error handling and use unique IDs
- Projects: Use assertGreaterThanOrEqual for list counts
- Webhooks: Use probe to find specific delete webhook event
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- testCreateAttributes: Use $actorsId instead of undefined $data['actorsId']
- testCreateColumns: Use $actorsId instead of undefined $data['actorsId']
- testCreateAccountSession: Add assertion for account creation success
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update account name before testing to ensure webhook data has
expected 'New Name' value, regardless of test execution order.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update bucket name before deleting to ensure webhook data has
expected name, regardless of whether testUpdateStorageBucket ran.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Enables --functional mode for parallel test execution by:
- Adding helper methods for independent test setup
- Removing all #[Depends] annotations
- Using static caching for shared resources
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>