- 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
The TablesDB index creation API requires 'columns' parameter, not
'attributes' (which is the collections API parameter). This caused
testDeleteIndexTablesAPI to always fail because the index was never
actually created.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add response status checks on all creation calls (database, table,
column, index) to catch silent failures early and provide diagnostic
info instead of mysterious 404s during polling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same issue as Sites - under CI parallel load the deployment builds
successfully but activation propagation takes longer than 100s.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Realtime test helpers used fragile sleep(5) for attribute/index
creation and had short polling timeouts (30s/60s) that fail under CI
parallel load. Replaced with assertEventually polling and increased
all timeouts to 120s.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Under parallel load in CI, attribute/index workers can take longer than
3 minutes to process. Increase all polling timeouts to 5 minutes to
reduce flaky failures from worker queue congestion.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prevents risky test warning where setupCollection makes assertions
before expectNotToPerformAssertions is called for server-side tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The cached token from setupMagicUrl may have been consumed by
setupMagicUrlSession in a previous test method in the same process,
causing a 401 when the test tries to create a session with it.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add MODEL_ATTRIBUTE_VARCHAR/TEXT/MEDIUMTEXT/LONGTEXT to Collection and
AttributeList models, fixing TypeError in Response::hasModel() that
caused 4974 server crashes when serializing collections with new
string attribute types
- Initialize $ruleType to null in Response::output() to prevent
undefined variable when no model condition matches
- Isolate testUniqueIndexDuplicate with its own collection to prevent
duplicate title interference from parallel tests in the same process
- Add retry mechanism to phone session creation for OTP token issues
- Increase GraphQL function build timeout from 30s to 120s
- Increase Sites deployment activation timeout from 100s to 200s
- Relax GraphQL bulk update row count assertion for parallel safety
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add response body to assertion messages for debugging 400/409 errors
- Re-add 409 handling for relationship creation (race condition in parallel mode)
- Use explicit fullName: null instead of empty data for null person documents
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- DatabasesBase: Wait for twoWayKey attribute on library collection in
setupOneToManyRelationship; use server API key headers for document creation
- DatabasesStringTypesTest: Add delays between attribute creation batches to
avoid overwhelming the database worker
- SchemaPolling: Improve waitForAllAttributes error messaging
- GraphQL UsersTest: Use fresh user in testDeleteUserSession to avoid
session conflicts
- Realtime: Increase WebSocket timeout to 120s and index polling to 60s
- Account: Add better error reporting for phone session creation failures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Set explicit twoWayKey in testOneToOneRelationship to avoid auto-generated ID
- Replace hardcoded person10/library10/11 IDs with ID::unique() in setupOneToManyRelationship
- Fix remaining datetime format comparison in testUpdateScheduledAt
- Use assertStringContainsString for Projects mock numbers excess items test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix Legacy DatabasesStringTypesTest with project-keyed setup cache
- Fix Account OTP test with unique email, phone session re-login
- Fix GraphQL setup methods with sleep, 409 handling, missing columns
- Fix Databases list/pagination tests with document ID filtering
- Fix Permissions tests with assertGreaterThanOrEqual for counts
- Fix Messaging scheduled tests to not depend on scheduler timing
- Increase Realtime WebSocket timeout to 60s and assertEventually to 30s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix missing return statement in DatabasesBase::testListDocuments
- Rewrite DatabasesStringTypesTest with project-keyed setup cache
- Use assertGreaterThanOrEqual in Functions testListDeployments
- Clean up OIDC provider after Account OAuth2 test
- Key all GraphQL static caches by project ID with unique IDs
- Replace sleep() with assertEventually in Realtime tests
- Increase Messaging scheduled message timeout to 180s
- Increase Sites deployment timeouts to 120s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- testListExecutions: Don't assume position in results list
- Use assertContains with array_column instead of position[0]
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- Use foreach loop to check all deployments instead of hardcoded indices
- Fix offset test to not assume exactly 1 function exists
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>