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>
The testListUsers function was using $totalUsers which was removed when
the test was refactored for parallel execution. Now uses $minUsers and
flexible assertions instead of position-based assertions.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Under high parallel load, authentication can transiently fail with 401.
Add retry logic with delays to handle these transient failures.
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>
- setupDatabase() now fetches existing database on conflict
- setupTable() now fetches existing tables on conflict
- Enables parallel test execution with fixed resource IDs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>