Back to Trigger

Replaying

docs/replaying.mdx

4.4.51.9 KB
Original Source

Replaying from the UI

<Tabs> <Tab title="From a run"> <Steps> <Step title="Click the Replay button in the top right"> ![Select a task, then in the bottom right click "Replay"](/images/replay-run-action.png) </Step> <Step title="Confirm replay settings"> You can edit the payload <Icon icon="circle-1" iconType="solid" size={20} color="F43F47" /> (if available) and choose the environment <Icon icon="circle-2" iconType="solid" size={20} color="F43F47" /> to replay the run in.
    ![Select a task, then in the bottom right
    click "Replay"](/images/replay-run-modal.png)
  </Step>
</Steps>
</Tab> <Tab title="Runs list"> <Steps> <Step title="Click the action button on a run"> ![On the runs page, press the triple dot button](/images/replay-runs-list.png) </Step> <Step title="Click replay">![Click replay](/images/replay-runs-list-popover.png)</Step> </Steps> </Tab> </Tabs>

Detecting replays in your task

You can check if a run is a replay using the context object:

ts
export const myTask = task({
  id: "my-task",
  run: async (payload, { ctx }) => {
    if (ctx.run.isReplay) {
      // This run is a replay of a previous run
    }
  },
});

Replaying using the SDK

You can replay a run using the SDK:

ts
const replayedRun = await runs.replay(run.id);

When you call trigger() or batchTrigger() on a task you receive back a run handle which has an id property. You can use that id to replay the run.

You can also access the run id from inside a run. You could write this to your database and then replay it later.

ts
export const simpleChildTask = task({
  id: "simple-child-task",
  run: async (payload, { ctx }) => {
    // the run ID (and other useful info) is in ctx
    const runId = ctx.run.id;
  },
});

Bulk replaying

See Bulk actions for more information.