diff --git a/.changeset/spicy-swans-suffer.md b/.changeset/spicy-swans-suffer.md
new file mode 100644
index 000000000..f9a55daf3
--- /dev/null
+++ b/.changeset/spicy-swans-suffer.md
@@ -0,0 +1,5 @@
+---
+"@trigger.dev/sdk": patch
+---
+
+Added isTest to TriggerContext
diff --git a/apps/docs/reference/trigger.mdx b/apps/docs/reference/trigger.mdx
index 9c8fd5ec9..c8bd6a9b4 100644
--- a/apps/docs/reference/trigger.mdx
+++ b/apps/docs/reference/trigger.mdx
@@ -87,6 +87,10 @@ const trigger = new Trigger({
for more info.
+
+ Whether or not this trigger is being run as a test.
+
+
A function that can be used to send an event to trigger.dev. See the [Sending
Events](/functions/send-event) page for more info.
diff --git a/apps/webapp/app/services/messageBroker.server.ts b/apps/webapp/app/services/messageBroker.server.ts
index 189a5ff14..2a99648a3 100644
--- a/apps/webapp/app/services/messageBroker.server.ts
+++ b/apps/webapp/app/services/messageBroker.server.ts
@@ -664,6 +664,7 @@ function createTaskQueue() {
"x-env": run.environment.slug,
"x-workflow-run-id": run.id,
"x-ttl": run.workflow.triggerTtlInSeconds,
+ "x-is-test": run.isTest ? "true" : "false",
},
{
eventTimestamp: run.event.timestamp.getTime(),
diff --git a/apps/wss/src/runController.ts b/apps/wss/src/runController.ts
index 6070cd8bb..6a68016c7 100644
--- a/apps/wss/src/runController.ts
+++ b/apps/wss/src/runController.ts
@@ -24,6 +24,7 @@ export type WorkflowRunControllerOptions = {
environment: string;
apiKey: string;
organizationId: string;
+ isTest: boolean;
};
};
@@ -37,6 +38,7 @@ export class WorkflowRunController {
environment: string;
apiKey: string;
organizationId: string;
+ isTest: boolean;
};
#logger: Logger;
diff --git a/apps/wss/src/server.ts b/apps/wss/src/server.ts
index 32171bf28..5b72cf4fa 100644
--- a/apps/wss/src/server.ts
+++ b/apps/wss/src/server.ts
@@ -420,6 +420,10 @@ export class TriggerServer {
organizationId: properties["x-org-id"],
environment: properties["x-env"],
apiKey: properties["x-api-key"],
+ isTest:
+ typeof properties["x-is-test"] === "string"
+ ? properties["x-is-test"] === "true"
+ : false,
},
});
diff --git a/examples/fetch-playground/src/index.ts b/examples/fetch-playground/src/index.ts
index 9a2f2789f..fe37c774b 100644
--- a/examples/fetch-playground/src/index.ts
+++ b/examples/fetch-playground/src/index.ts
@@ -39,6 +39,10 @@ new Trigger({
wallTime: new Date(),
});
+ if (ctx.isTest) {
+ await ctx.logger.warn("This is only a test");
+ }
+
const response = await ctx.fetch("do-fetch", `${event.url}${event.path}`, {
method: event.method,
responseSchema: z.any(),
diff --git a/packages/internal-bridge/src/schemas/host.ts b/packages/internal-bridge/src/schemas/host.ts
index bec310e2d..2209197e7 100644
--- a/packages/internal-bridge/src/schemas/host.ts
+++ b/packages/internal-bridge/src/schemas/host.ts
@@ -14,6 +14,7 @@ export const HostRPCSchema = {
workflowId: z.string(),
organizationId: z.string(),
apiKey: z.string(),
+ isTest: z.boolean().default(false),
}),
}),
response: z.boolean(),
diff --git a/packages/internal-platform/src/messages/catalogs/triggers.ts b/packages/internal-platform/src/messages/catalogs/triggers.ts
index 057308d93..53a6d02fe 100644
--- a/packages/internal-platform/src/messages/catalogs/triggers.ts
+++ b/packages/internal-platform/src/messages/catalogs/triggers.ts
@@ -7,6 +7,7 @@ const Catalog = {
data: TriggerWorkflowMessageSchema,
properties: WorkflowRunEventPropertiesSchema.extend({
"x-ttl": z.coerce.number().optional(),
+ "x-is-test": z.string().default("false"),
}),
},
};
diff --git a/packages/trigger-sdk/src/client.ts b/packages/trigger-sdk/src/client.ts
index ae181af67..de8b6bad7 100644
--- a/packages/trigger-sdk/src/client.ts
+++ b/packages/trigger-sdk/src/client.ts
@@ -357,6 +357,7 @@ export class TriggerClient {
environment: data.meta.environment,
apiKey: data.meta.apiKey,
organizationId: data.meta.organizationId,
+ isTest: data.meta.isTest,
logger: new ContextLogger(async (level, message, properties) => {
await serverRPC.send("SEND_LOG", {
runId: data.id,
diff --git a/packages/trigger-sdk/src/types.ts b/packages/trigger-sdk/src/types.ts
index 075d94e71..a99abe055 100644
--- a/packages/trigger-sdk/src/types.ts
+++ b/packages/trigger-sdk/src/types.ts
@@ -62,6 +62,7 @@ export interface TriggerContext {
apiKey: string;
organizationId: string;
logger: TriggerLogger;
+ isTest: boolean;
sendEvent(key: string, event: TriggerCustomEvent): Promise;
waitFor(key: string, options: WaitForOptions): Promise;
waitUntil(key: string, date: Date): Promise;