Skip to content

fix(cli): keep negative numeric values attached to their flag #1827

fix(cli): keep negative numeric values attached to their flag

fix(cli): keep negative numeric values attached to their flag #1827

Triggered via pull request October 28, 2026 18:32
Status Failure
Total duration 7m 5s
Artifacts –

test.yml

on: pull_request
Matrix: test
Fit to window
Zoom out
Zoom in

Annotations

20 errors, 11 warnings, and 10 notices
src/(ee)/__tests__/workflow-cancel-execution.test.ts > cancelWorkflowExecution > should cancel a waiting execution and clean up timeout scheduler: apps/api/src/(ee)/__tests__/workflow-cancel-execution.test.ts#L342
Error: Failed query: insert into "workflow_execution" ("id", "workflow_id", "contact_id", "organization_id", "allow_reentry", "status", "current_step_id", "definition_snapshot", "context", "trigger_event_id", "trigger_data", "waiting_for_event", "waiting_for_conditions", "wait_timeout_at", "wait_timeout_scheduler_name", "next_step_scheduled_at", "delay_scheduler_name", "error", "error_step_id", "retry_count", "started_at", "completed_at", "created_at", "updated_at") values ($1, $2, $3, $4, default, $5, $6, default, default, default, default, default, default, default, $7, default, default, default, default, default, $8, default, default, default) returning "id", "workflow_id", "contact_id", "organization_id", "allow_reentry", "status", "current_step_id", "definition_snapshot", "context", "trigger_event_id", "trigger_data", "waiting_for_event", "waiting_for_conditions", "wait_timeout_at", "wait_timeout_scheduler_name", "next_step_scheduled_at", "delay_scheduler_name", "error", "error_step_id", "retry_count", "started_at", "completed_at", "created_at", "updated_at" params: e5d5f6d9-6f3b-4e96-a0b4-11e540a06ca7,api-wf-exec-cancel-workflow-1,api-wf-exec-cancel-contact-1,api-wf-exec-cancel-org-1,waiting,wait1,wraps-wf-timeout-api-wf-exec-cancel,2026-10-28T18:37:12.908Z ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/node-postgres/session.ts:154:18 ❯ src/(ee)/__tests__/workflow-cancel-execution.test.ts:342:20 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "workflow_execution" ("id", "workflow_id", "contact_id", "organization_id", "allow_reentry", "status", "current_step_id", "definition_snapshot", "context", "trigger_event_id", "trigger_data", "waiting_for_event", "waiting_for_conditions", "wait_timeout_at", "wait_timeout_scheduler_name", "next_step_scheduled_at", "delay_scheduler_name", "error", "error_step_id", "retry_count", "started_at", "completed_at", "created_at", "updated_at") values ($1, $2, $3, $4, default, $5, $6, default, default, default, default, default, default, default, $7, default, default, default, default, default, $8, default, default, default) returning "id", "workflow_id", "contact_id", "organization_id", "allow_reentry", "status", "current_step_id", "definition_snapshot", "context", "trigger_event_id", "trigger_data", "waiting_for_event", "waiting_for_conditions", "wait_timeout_at", "wait_timeout_scheduler_name", "next_step_scheduled_at", "delay_scheduler_name", "error", "error_step_id", "retry_count", "started_at", "completed_at", "created_at", "updated_at"', params: [ 'e5d5f6d9-6f3b-4e96-a0b4-11e540a06ca7', 'api-wf-exec-cancel-workflow-1', 'api-wf-exec-cancel-contact-1', 'api-wf-exec-cancel-org-1', 'waiting', 'wait1', 'wraps-wf-timeout-api-wf-exec-cancel', '2026-10-28T18:37:12.908Z' ] } Caused by: Caused by: error: duplicate key value violates unique constraint "workflow_execution_no_reentry_idx" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:124:18 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:117:22 ❯ src/(ee)/__tests__/workflow-cancel-execution.test.ts:342:20 ⎯⎯⎯
src/(ee)/__tests__/workflow-cancel-execution.test.ts > cancelWorkflowExecution > should cancel an active execution: apps/api/src/(ee)/__tests__/workflow-cancel-execution.test.ts#L289
AssertionError: expected false to be true // Object.is equality - Expected + Received - true + false ❯ src/(ee)/__tests__/workflow-cancel-execution.test.ts:289:28
src/__tests__/event-limit.test.ts > event limit enforcement (real middleware, real DB) > the free plan is metered, not gated > blocks well over the allowance (8259 scenario): apps/api/src/__tests__/event-limit.test.ts#L375
AssertionError: expected 200 to be 429 // Object.is equality - Expected + Received - 429 + 200 ❯ src/__tests__/event-limit.test.ts:375:26
src/__tests__/batch-sender-audience-snapshot.test.ts > legacy batches (NULL audienceSnapshotAt) > a batch with NULL snapshot and chunkIndex > 0 still sends unbounded — no crash, no empty result: apps/api/src/__tests__/batch-sender-audience-snapshot.test.ts#L140
Error: Failed query: insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing params: bs-audience-snapshot-db-legacy-0,bs-audience-snapshot-db-org,bs-audience-snapshot-db-legacy-0@example.com,bs-audience-snapshot-db-legacy-0-hash,active,Recipient,2026-10-28T18:37:02.681Z,2026-10-28T18:37:02.681Z,active ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:411:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing', params: [ 'bs-audience-snapshot-db-legacy-0', 'bs-audience-snapshot-db-org', 'bs-audience-snapshot-db-legacy-0@example.com', 'bs-audience-snapshot-db-legacy-0-hash', 'active', 'Recipient', '2026-10-28T18:37:02.681Z', '2026-10-28T18:37:02.681Z', 'active' ] } Caused by: Caused by: error: insert or update on table "contact" violates foreign key constraint "contact_organization_id_organization_id_fk" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:113:20 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:411:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length:
src/__tests__/batch-sender-audience-snapshot.test.ts > getContactsChunk bound by createdBefore > BEHAVIORAL: a contact created after chunk 0's snapshot is never returned by a later chunk, even when its id sorts after the cursor: apps/api/src/__tests__/batch-sender-audience-snapshot.test.ts#L140
Error: Failed query: insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing params: bs-audience-snapshot-db-a,bs-audience-snapshot-db-org,bs-audience-snapshot-db-a@example.com,bs-audience-snapshot-db-a-hash,active,Recipient,2026-10-28T18:37:02.586Z,2026-10-28T18:37:02.586Z,active ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:370:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing', params: [ 'bs-audience-snapshot-db-a', 'bs-audience-snapshot-db-org', 'bs-audience-snapshot-db-a@example.com', 'bs-audience-snapshot-db-a-hash', 'active', 'Recipient', '2026-10-28T18:37:02.586Z', '2026-10-28T18:37:02.586Z', 'active' ] } Caused by: Caused by: error: insert or update on table "contact" violates foreign key constraint "contact_organization_id_organization_id_fk" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:113:20 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:370:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 335, severity: 'ERROR', code: '23503', de
src/__tests__/batch-sender-audience-snapshot.test.ts > getContactsChunk bound by createdBefore > excludes a contact created after the snapshot: apps/api/src/__tests__/batch-sender-audience-snapshot.test.ts#L140
Error: Failed query: insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing params: bs-audience-snapshot-db-before,bs-audience-snapshot-db-org,bs-audience-snapshot-db-before@example.com,bs-audience-snapshot-db-before-hash,active,Recipient,2026-10-28T18:36:02.495Z,2026-10-28T18:36:02.495Z,active ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:337:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing', params: [ 'bs-audience-snapshot-db-before', 'bs-audience-snapshot-db-org', 'bs-audience-snapshot-db-before@example.com', 'bs-audience-snapshot-db-before-hash', 'active', 'Recipient', '2026-10-28T18:36:02.495Z', '2026-10-28T18:36:02.495Z', 'active' ] } Caused by: Caused by: error: insert or update on table "contact" violates foreign key constraint "contact_organization_id_organization_id_fk" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:113:20 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:337:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 335, severi
src/__tests__/batch-sender-audience-snapshot.test.ts > audience snapshot (chunk 0 stamp + recount) > does not re-stamp or change audienceSnapshotAt on a later chunk: apps/api/src/__tests__/batch-sender-audience-snapshot.test.ts#L140
Error: Failed query: insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing params: bs-audience-snapshot-db-c0,bs-audience-snapshot-db-org,bs-audience-snapshot-db-c0@example.com,bs-audience-snapshot-db-c0-hash,active,Recipient,2026-10-28T18:37:02.404Z,2026-10-28T18:37:02.404Z,active ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:313:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing', params: [ 'bs-audience-snapshot-db-c0', 'bs-audience-snapshot-db-org', 'bs-audience-snapshot-db-c0@example.com', 'bs-audience-snapshot-db-c0-hash', 'active', 'Recipient', '2026-10-28T18:37:02.404Z', '2026-10-28T18:37:02.404Z', 'active' ] } Caused by: Caused by: error: insert or update on table "contact" violates foreign key constraint "contact_organization_id_organization_id_fk" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:113:20 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:313:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 335, severity: 'ERROR', code: '2350
src/__tests__/batch-sender-audience-snapshot.test.ts > audience snapshot (chunk 0 stamp + recount) > stamps a non-null audienceSnapshotAt and rewrites totalRecipients from the bounded count: apps/api/src/__tests__/batch-sender-audience-snapshot.test.ts#L140
Error: Failed query: insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing params: bs-audience-snapshot-db-c0,bs-audience-snapshot-db-org,bs-audience-snapshot-db-c0@example.com,bs-audience-snapshot-db-c0-hash,active,Recipient,2026-10-28T18:37:02.286Z,2026-10-28T18:37:02.286Z,active ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:296:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "contact" ("id", "organization_id", "email", "email_hash", "email_status", "email_verified_at", "email_unsubscribed_at", "email_bounced_at", "email_complained_at", "email_suppressed_at", "last_email_sent_at", "last_email_opened_at", "last_email_clicked_at", "emails_sent", "emails_opened", "emails_clicked", "phone", "phone_hash", "sms_status", "sms_consented_at", "sms_opted_out_at", "sms_invalid_at", "last_sms_sent_at", "last_sms_clicked_at", "sms_sent", "sms_clicked", "first_name", "last_name", "company", "job_title", "preferred_channel", "properties", "external_id", "last_activity_at", "created_at", "updated_at", "created_by", "status", "confirmed_at", "unsubscribed_at", "bounced_at", "complained_at") values ($1, $2, $3, $4, $5, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, default, $6, default, default, default, default, default, default, default, $7, $8, default, $9, default, default, default, default) on conflict do nothing', params: [ 'bs-audience-snapshot-db-c0', 'bs-audience-snapshot-db-org', 'bs-audience-snapshot-db-c0@example.com', 'bs-audience-snapshot-db-c0-hash', 'active', 'Recipient', '2026-10-28T18:37:02.286Z', '2026-10-28T18:37:02.286Z', 'active' ] } Caused by: Caused by: error: insert or update on table "contact" violates foreign key constraint "contact_organization_id_organization_id_fk" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:113:20 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ insertContact src/__tests__/batch-sender-audience-snapshot.test.ts:140:3 ❯ src/__tests__/batch-sender-audience-snapshot.test.ts:296:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 335, severity: 'ERROR', code: '2350
[shared-fixtures] src/app/api/__tests__/brand-kits.test.ts > Brand Kits API - POST /api/[orgSlug]/brand-kits > should trim whitespace from name: apps/web/src/app/api/__tests__/brand-kits.test.ts#L455
AssertionError: expected 500 to be 201 // Object.is equality - Expected + Received - 201 + 500 ❯ src/app/api/__tests__/brand-kits.test.ts:455:29
[shared-fixtures] src/app/api/__tests__/brand-kits.test.ts > Brand Kits API - POST /api/[orgSlug]/brand-kits > should allow setting new brand kit as default: apps/web/src/app/api/__tests__/brand-kits.test.ts#L399
Error: Failed query: insert into "brand_kit" ("id", "organization_id", "name", "logo_url", "primary_color", "secondary_color", "background_color", "text_color", "font_family", "heading_font_family", "button_style", "button_radius", "company_name", "company_address", "social_links", "source_domain", "auto_extracted", "is_default", "created_at", "updated_at") values ($1, $2, $3, default, $4, default, default, default, default, default, default, default, default, default, default, default, default, $5, default, default) params: test-first-kit,test-brandkits-org-1,First Kit,#5046e5,true ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ src/app/api/__tests__/brand-kits.test.ts:399:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "brand_kit" ("id", "organization_id", "name", "logo_url", "primary_color", "secondary_color", "background_color", "text_color", "font_family", "heading_font_family", "button_style", "button_radius", "company_name", "company_address", "social_links", "source_domain", "auto_extracted", "is_default", "created_at", "updated_at") values ($1, $2, $3, default, $4, default, default, default, default, default, default, default, default, default, default, default, default, $5, default, default)', params: [ 'test-first-kit', 'test-brandkits-org-1', 'First Kit', '#5046e5', true ] } Caused by: Caused by: error: insert or update on table "brand_kit" violates foreign key constraint "brand_kit_organization_id_organization_id_fk" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:113:20 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ src/app/api/__tests__/brand-kits.test.ts:399:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 336, severity: 'ERROR', code: '23503', detail: 'Key (organization_id)=(test-brandkits-org-1) is not present in table "organization".', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'brand_kit', dataType: undefined, constraint: 'brand_kit_organization_id_organization_id_fk', file: 'ri_triggers.c', routine: 'ri_ReportViolation' }
[shared-fixtures] src/app/api/__tests__/brand-kits.test.ts > Brand Kits API - POST /api/[orgSlug]/brand-kits > should not set subsequent brand kits as default unless specified: apps/web/src/app/api/__tests__/brand-kits.test.ts#L367
Error: Failed query: insert into "brand_kit" ("id", "organization_id", "name", "logo_url", "primary_color", "secondary_color", "background_color", "text_color", "font_family", "heading_font_family", "button_style", "button_radius", "company_name", "company_address", "social_links", "source_domain", "auto_extracted", "is_default", "created_at", "updated_at") values ($1, $2, $3, default, $4, default, default, default, default, default, default, default, default, default, default, default, default, $5, default, default) params: test-first-kit,test-brandkits-org-1,First Kit,#5046e5,true ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ src/app/api/__tests__/brand-kits.test.ts:367:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "brand_kit" ("id", "organization_id", "name", "logo_url", "primary_color", "secondary_color", "background_color", "text_color", "font_family", "heading_font_family", "button_style", "button_radius", "company_name", "company_address", "social_links", "source_domain", "auto_extracted", "is_default", "created_at", "updated_at") values ($1, $2, $3, default, $4, default, default, default, default, default, default, default, default, default, default, default, default, $5, default, default)', params: [ 'test-first-kit', 'test-brandkits-org-1', 'First Kit', '#5046e5', true ] } Caused by: Caused by: error: insert or update on table "brand_kit" violates foreign key constraint "brand_kit_organization_id_organization_id_fk" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:113:20 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ src/app/api/__tests__/brand-kits.test.ts:367:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 336, severity: 'ERROR', code: '23503', detail: 'Key (organization_id)=(test-brandkits-org-1) is not present in table "organization".', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'brand_kit', dataType: undefined, constraint: 'brand_kit_organization_id_organization_id_fk', file: 'ri_triggers.c', routine: 'ri_ReportViolation' }
[shared-fixtures] src/app/api/__tests__/brand-kits.test.ts > Brand Kits API - POST /api/[orgSlug]/brand-kits > should set first brand kit as default: apps/web/src/app/api/__tests__/brand-kits.test.ts#L361
AssertionError: expected 500 to be 201 // Object.is equality - Expected + Received - 201 + 500 ❯ src/app/api/__tests__/brand-kits.test.ts:361:29
[shared-fixtures] src/app/api/__tests__/brand-kits.test.ts > Brand Kits API - POST /api/[orgSlug]/brand-kits > should default name to 'Untitled Brand Kit' if not provided: apps/web/src/app/api/__tests__/brand-kits.test.ts#L338
AssertionError: expected 500 to be 201 // Object.is equality - Expected + Received - 201 + 500 ❯ src/app/api/__tests__/brand-kits.test.ts:338:29
[shared-fixtures] src/app/api/__tests__/brand-kits.test.ts > Brand Kits API - POST /api/[orgSlug]/brand-kits > should create brand kit with custom values: apps/web/src/app/api/__tests__/brand-kits.test.ts#L309
AssertionError: expected 500 to be 201 // Object.is equality - Expected + Received - 201 + 500 ❯ src/app/api/__tests__/brand-kits.test.ts:309:29
[shared-fixtures] src/app/api/__tests__/brand-kits.test.ts > Brand Kits API - POST /api/[orgSlug]/brand-kits > should create a new brand kit with defaults: apps/web/src/app/api/__tests__/brand-kits.test.ts#L271
AssertionError: expected 500 to be 201 // Object.is equality - Expected + Received - 201 + 500 ❯ src/app/api/__tests__/brand-kits.test.ts:271:29
[shared-fixtures] src/app/api/__tests__/brand-kits.test.ts > Brand Kits API - GET /api/[orgSlug]/brand-kits > should order brand kits with default first: apps/web/src/app/api/__tests__/brand-kits.test.ts#L215
Error: Failed query: insert into "brand_kit" ("id", "organization_id", "name", "logo_url", "primary_color", "secondary_color", "background_color", "text_color", "font_family", "heading_font_family", "button_style", "button_radius", "company_name", "company_address", "social_links", "source_domain", "auto_extracted", "is_default", "created_at", "updated_at") values ($1, $2, $3, default, $4, default, default, default, default, default, default, default, default, default, default, default, default, $5, default, default), ($6, $7, $8, default, $9, default, default, default, default, default, default, default, default, default, default, default, default, $10, default, default) params: test-brandkit-nondefault,test-brandkits-org-1,Non-Default Kit,#ff0000,false,test-brandkit-default,test-brandkits-org-1,Default Kit,#00ff00,true ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ src/app/api/__tests__/brand-kits.test.ts:215:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "brand_kit" ("id", "organization_id", "name", "logo_url", "primary_color", "secondary_color", "background_color", "text_color", "font_family", "heading_font_family", "button_style", "button_radius", "company_name", "company_address", "social_links", "source_domain", "auto_extracted", "is_default", "created_at", "updated_at") values ($1, $2, $3, default, $4, default, default, default, default, default, default, default, default, default, default, default, default, $5, default, default), ($6, $7, $8, default, $9, default, default, default, default, default, default, default, default, default, default, default, default, $10, default, default)', params: [ 'test-brandkit-nondefault', 'test-brandkits-org-1', 'Non-Default Kit', '#ff0000', false, 'test-brandkit-default', 'test-brandkits-org-1', 'Default Kit', '#00ff00', true ] } Caused by: Caused by: error: insert or update on table "brand_kit" violates foreign key constraint "brand_kit_organization_id_organization_id_fk" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:113:20 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ src/app/api/__tests__/brand-kits.test.ts:215:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 336, severity: 'ERROR', code: '23503', detail: 'Key (organization_id)=(test-brandkits-org-1) is not present in table "organization".', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'brand_kit', dataType: undefined, constraint: 'brand_kit_organization_id_organization_id_fk', file: 'ri_triggers.c', routine: 'ri_ReportViolation' }
[shared-fixtures] src/app/api/__tests__/brand-kits.test.ts > Brand Kits API - GET /api/[orgSlug]/brand-kits > should return brand kits for authorized user: apps/web/src/app/api/__tests__/brand-kits.test.ts#L188
Error: Failed query: insert into "brand_kit" ("id", "organization_id", "name", "logo_url", "primary_color", "secondary_color", "background_color", "text_color", "font_family", "heading_font_family", "button_style", "button_radius", "company_name", "company_address", "social_links", "source_domain", "auto_extracted", "is_default", "created_at", "updated_at") values ($1, $2, $3, default, $4, default, default, default, default, default, default, default, default, default, default, default, default, $5, default, default) params: test-brandkit-1,test-brandkits-org-1,Test Brand Kit,#5046e5,true ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/src/pg-core/session.ts:73:10 ❯ src/app/api/__tests__/brand-kits.test.ts:188:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { query: 'insert into "brand_kit" ("id", "organization_id", "name", "logo_url", "primary_color", "secondary_color", "background_color", "text_color", "font_family", "heading_font_family", "button_style", "button_radius", "company_name", "company_address", "social_links", "source_domain", "auto_extracted", "is_default", "created_at", "updated_at") values ($1, $2, $3, default, $4, default, default, default, default, default, default, default, default, default, default, default, default, $5, default, default)', params: [ 'test-brandkit-1', 'test-brandkits-org-1', 'Test Brand Kit', '#5046e5', true ] } Caused by: Caused by: error: insert or update on table "brand_kit" violates foreign key constraint "brand_kit_organization_id_organization_id_fk" ❯ ../../node_modules/.pnpm/pg-pool@3.14.0_pg@8.22.0/node_modules/pg-pool/index.js:45:11 ❯ ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/node-postgres/session.js:113:20 ❯ NodePgPreparedQuery.queryWithCache ../../node_modules/.pnpm/drizzle-orm@0.45.2_@neondatabase+serverless@1.1.0_@opentelemetry+api@1.9.0_@types+pg@8.20.0_kysely@0.29.4_pg@8.22.0/node_modules/drizzle-orm/pg-core/session.js:39:16 ❯ src/app/api/__tests__/brand-kits.test.ts:188:5 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Serialized Error: { length: 336, severity: 'ERROR', code: '23503', detail: 'Key (organization_id)=(test-brandkits-org-1) is not present in table "organization".', hint: undefined, position: undefined, internalPosition: undefined, internalQuery: undefined, where: undefined, schema: 'public', table: 'brand_kit', dataType: undefined, constraint: 'brand_kit_organization_id_organization_id_fk', file: 'ri_triggers.c', routine: 'ri_ReportViolation' }
[shared-fixtures] src/app/api/__tests__/aws-validate.test.ts > AWS Validation API - POST /api/[orgSlug]/aws/validate > should update existing AWS account connection: apps/web/src/app/api/__tests__/aws-validate.test.ts#L259
AssertionError: expected +0 to be 1 // Object.is equality - Expected + Received - 1 + 0 ❯ src/app/api/__tests__/aws-validate.test.ts:259:29
test-db
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
baseline
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-scripts
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-auth
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-packages
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
lint
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (24.x)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
selfhost-smoke
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test (22.x)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-api
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-web
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test-db
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
baseline
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test-scripts
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test-auth
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test-packages
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
lint
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (24.x)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
selfhost-smoke
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test (22.x)
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"
test-api
"The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see https://github.com/actions/runner-images/issues/14748"