From 60b559a659da54f061332ef21d80938b1353f994 Mon Sep 17 00:00:00 2001 From: Paul Rastoin <45004772+prastoin@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:29:27 +0200 Subject: [PATCH] Provide custom workspace id while seeding (#21721) # Introduction Currently working on e2e test ci that will iterate over dedicated twenty instance. In order to allow multi concurrent tests to be performed we need to isolate testing context Allowing to provide custom workspaceId allow easy isolation and post test cleanup on aws related account close https://github.com/twentyhq/core-team-issues/issues/2556 Review in cubic --- .../dev-seeder/core/constants/seeder-workspaces.constant.ts | 5 ++++- .../dev-seeder/core/utils/generate-random-users.util.ts | 4 +++- .../event-logs/object-event-write.integration-spec.ts | 3 ++- .../suites/application/app-distribution.integration-spec.ts | 4 +++- ...ng-public-assets-controller-download.integration-spec.ts | 4 +++- .../marketplace-catalog-sync.integration-spec.ts | 4 +++- ...ul-public-assets-controller-download.integration-spec.ts | 4 +++- ...ad-application-file-svg-sanitization.integration-spec.ts | 4 +++- .../application/utils/setup-application-for-sync.util.ts | 4 +++- .../test/integration/oauth/suites/oauth.integration-spec.ts | 6 ++++-- 10 files changed, 31 insertions(+), 11 deletions(-) diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant.ts index 50f3c925ce..7e0f374945 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant.ts @@ -18,7 +18,10 @@ export type CreateWorkspaceInput = Pick< (typeof WORKSPACE_FIELDS_TO_SEED)[number] >; -export const SEED_APPLE_WORKSPACE_ID = '20202020-1c25-4d02-bf25-6aeccf7ea419'; +const DEFAULT_SEED_APPLE_WORKSPACE_ID = '20202020-1c25-4d02-bf25-6aeccf7ea419'; + +export const SEED_APPLE_WORKSPACE_ID = (process.env.E2E_SEED_WORKSPACE_ID ?? + DEFAULT_SEED_APPLE_WORKSPACE_ID) as typeof DEFAULT_SEED_APPLE_WORKSPACE_ID; export const SEED_YCOMBINATOR_WORKSPACE_ID = '3b8e6458-5fc1-4e63-8563-008ccddaa6db'; export const SEED_EMPTY_WORKSPACE_3_ID = '506915ec-21ca-431b-a04a-257eb216865e'; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/generate-random-users.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/generate-random-users.util.ts index cf07d01a14..559a387ac8 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/generate-random-users.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/generate-random-users.util.ts @@ -1,3 +1,5 @@ +import { SEED_APPLE_WORKSPACE_ID } from 'src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant'; + export type RandomUserData = { id: string; firstName: string; @@ -523,7 +525,7 @@ export function generateRandomUsers(): { userWorkspaces.push({ id: userWorkspaceId, userId, - workspaceId: '20202020-1c25-4d02-bf25-6aeccf7ea419', // SEED_APPLE_WORKSPACE_ID + workspaceId: SEED_APPLE_WORKSPACE_ID, }); workspaceMembers.push({ diff --git a/packages/twenty-server/test/integration/graphql/suites/event-logs/object-event-write.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/event-logs/object-event-write.integration-spec.ts index 7bc5083ea9..79ab16108b 100644 --- a/packages/twenty-server/test/integration/graphql/suites/event-logs/object-event-write.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/event-logs/object-event-write.integration-spec.ts @@ -8,6 +8,7 @@ import { import gql from 'graphql-tag'; import { OBJECT_RECORD_CREATED_EVENT } from 'src/engine/core-modules/event-logs/emit/events/object-event/object-record-created'; +import { SEED_APPLE_WORKSPACE_ID } from 'src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant'; import { PERSON_GQL_FIELDS } from 'test/integration/constants/person-gql-fields.constants'; import { createManyOperationFactory } from 'test/integration/graphql/utils/create-many-operation-factory.util'; @@ -20,7 +21,7 @@ import { deleteAllRecords } from 'test/integration/utils/delete-all-records'; describe('Object event write (integration)', () => { let clickHouseClient: ClickHouseClient; let personObjectMetadataId: string; - const testWorkspaceId = '20202020-1c25-4d02-bf25-6aeccf7ea419'; + const testWorkspaceId = SEED_APPLE_WORKSPACE_ID; beforeAll(async () => { jest.useRealTimers(); diff --git a/packages/twenty-server/test/integration/metadata/suites/application/app-distribution.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/application/app-distribution.integration-spec.ts index 09f8c7122a..17295e5855 100644 --- a/packages/twenty-server/test/integration/metadata/suites/application/app-distribution.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/application/app-distribution.integration-spec.ts @@ -8,7 +8,9 @@ import * as tar from 'tar'; import { type DataSource } from 'typeorm'; import { uploadAppTarball } from 'test/integration/metadata/suites/application/utils/upload-app-tarball.util'; -const TEST_WORKSPACE_ID = '20202020-1c25-4d02-bf25-6aeccf7ea419'; +import { SEED_APPLE_WORKSPACE_ID } from 'src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant'; + +const TEST_WORKSPACE_ID = SEED_APPLE_WORKSPACE_ID; const createTestTarball = async ( files: Record, diff --git a/packages/twenty-server/test/integration/metadata/suites/application/failing-public-assets-controller-download.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/application/failing-public-assets-controller-download.integration-spec.ts index e4b2c3dc60..e2077bc608 100644 --- a/packages/twenty-server/test/integration/metadata/suites/application/failing-public-assets-controller-download.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/application/failing-public-assets-controller-download.integration-spec.ts @@ -9,8 +9,10 @@ import { } from 'twenty-shared/testing'; import { v4 as uuidv4 } from 'uuid'; +import { SEED_APPLE_WORKSPACE_ID } from 'src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant'; + const TEST_APP_UID = uuidv4(); -const TEST_WORKSPACE_ID = '20202020-1c25-4d02-bf25-6aeccf7ea419'; +const TEST_WORKSPACE_ID = SEED_APPLE_WORKSPACE_ID; const UNKNOWN_WORKSPACE_ID = uuidv4(); const UNKNOWN_APPLICATION_ID = uuidv4(); diff --git a/packages/twenty-server/test/integration/metadata/suites/application/marketplace-catalog-sync.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/application/marketplace-catalog-sync.integration-spec.ts index 1647776340..6a2532fbb3 100644 --- a/packages/twenty-server/test/integration/metadata/suites/application/marketplace-catalog-sync.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/application/marketplace-catalog-sync.integration-spec.ts @@ -8,7 +8,9 @@ import * as tar from 'tar'; import { cleanupApplicationAndAppRegistration } from 'test/integration/metadata/suites/application/utils/cleanup-application-and-app-registration.util'; import { type DataSource } from 'typeorm'; -const TEST_WORKSPACE_ID = '20202020-1c25-4d02-bf25-6aeccf7ea419'; +import { SEED_APPLE_WORKSPACE_ID } from 'src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant'; + +const TEST_WORKSPACE_ID = SEED_APPLE_WORKSPACE_ID; const MARKETPLACE_QUERY = ` query { diff --git a/packages/twenty-server/test/integration/metadata/suites/application/successful-public-assets-controller-download.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/application/successful-public-assets-controller-download.integration-spec.ts index 6e4b621a81..cd9f8d2d86 100644 --- a/packages/twenty-server/test/integration/metadata/suites/application/successful-public-assets-controller-download.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/application/successful-public-assets-controller-download.integration-spec.ts @@ -4,8 +4,10 @@ import { setupApplicationForSync } from 'test/integration/metadata/suites/applic import { uploadApplicationFile } from 'test/integration/metadata/suites/application/utils/upload-application-file.util'; import { v4 as uuidv4 } from 'uuid'; +import { SEED_APPLE_WORKSPACE_ID } from 'src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant'; + const TEST_APP_UID = uuidv4(); -const TEST_WORKSPACE_ID = '20202020-1c25-4d02-bf25-6aeccf7ea419'; +const TEST_WORKSPACE_ID = SEED_APPLE_WORKSPACE_ID; const PUBLIC_ASSET_PATH = 'assets/logo.svg'; const PUBLIC_ASSET_CONTENT = ''; diff --git a/packages/twenty-server/test/integration/metadata/suites/application/successful-upload-application-file-svg-sanitization.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/application/successful-upload-application-file-svg-sanitization.integration-spec.ts index 5ca4449cc4..9fcf1d24bb 100644 --- a/packages/twenty-server/test/integration/metadata/suites/application/successful-upload-application-file-svg-sanitization.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/application/successful-upload-application-file-svg-sanitization.integration-spec.ts @@ -6,8 +6,10 @@ import { setupApplicationForSync } from 'test/integration/metadata/suites/applic import { uploadApplicationFile } from 'test/integration/metadata/suites/application/utils/upload-application-file.util'; import { v4 as uuidv4 } from 'uuid'; +import { SEED_APPLE_WORKSPACE_ID } from 'src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant'; + const TEST_APP_ID = uuidv4(); -const TEST_WORKSPACE_ID = '20202020-1c25-4d02-bf25-6aeccf7ea419'; +const TEST_WORKSPACE_ID = SEED_APPLE_WORKSPACE_ID; const STORAGE_LOCAL_PATH = join(process.cwd(), '.local-storage'); const MALICIOUS_SVG = ` diff --git a/packages/twenty-server/test/integration/metadata/suites/application/utils/setup-application-for-sync.util.ts b/packages/twenty-server/test/integration/metadata/suites/application/utils/setup-application-for-sync.util.ts index 8739965373..22c5a6e327 100644 --- a/packages/twenty-server/test/integration/metadata/suites/application/utils/setup-application-for-sync.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/application/utils/setup-application-for-sync.util.ts @@ -2,7 +2,9 @@ import crypto from 'crypto'; import { uploadApplicationFile } from 'test/integration/metadata/suites/application/utils/upload-application-file.util'; -const TEST_WORKSPACE_ID = '20202020-1c25-4d02-bf25-6aeccf7ea419'; +import { SEED_APPLE_WORKSPACE_ID } from 'src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant'; + +const TEST_WORKSPACE_ID = SEED_APPLE_WORKSPACE_ID; export const setupApplicationForSync = async ({ applicationUniversalIdentifier, diff --git a/packages/twenty-server/test/integration/oauth/suites/oauth.integration-spec.ts b/packages/twenty-server/test/integration/oauth/suites/oauth.integration-spec.ts index 2bf882ab9b..2953f05cb6 100644 --- a/packages/twenty-server/test/integration/oauth/suites/oauth.integration-spec.ts +++ b/packages/twenty-server/test/integration/oauth/suites/oauth.integration-spec.ts @@ -6,9 +6,11 @@ import { base64UrlEncode } from 'twenty-shared/utils'; import { type DataSource } from 'typeorm'; import { AppTokenType } from 'src/engine/core-modules/app-token/app-token.entity'; +import { SEED_APPLE_WORKSPACE_ID } from 'src/engine/workspace-manager/dev-seeder/core/constants/seeder-workspaces.constant'; +import { USER_DATA_SEED_IDS } from 'src/engine/workspace-manager/dev-seeder/core/utils/seed-users.util'; -const TEST_WORKSPACE_ID = '20202020-1c25-4d02-bf25-6aeccf7ea419'; -const TEST_USER_ID = '20202020-e6b5-4680-8a32-b8209737156b'; +const TEST_WORKSPACE_ID = SEED_APPLE_WORKSPACE_ID; +const TEST_USER_ID = USER_DATA_SEED_IDS.JANE; type TestRegistration = { id: string;