> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/build/test-a-workflow.md).

# Test a Workflow

Test a Workflow on images, uploaded video files, or live camera previews before deploying it.

Click "Run" in the Workflow editor to open the run panel. Test with representative input before deploying a Workflow, and check both its visible output and its structured results.

## Web App

### Test an image

Select an image input, upload a JPG, PNG, or WEBP file, and click "Run". Images can run through the Cloud API, a Dedicated Deployment, or a self-hosted Inference Server, so check the selected runtime and required inputs first.

### Test a video file

Under "Media", select "File", upload a video, and click "Run". Follow [Run a Model on a Video](https://docs.roboflow.com/guides/run-a-model-on-a-video) for a sample detection, tracking, and counting Workflow. To test part of the file, click the gear control and set "Start (ms)" and "End (ms)".

### Test a live camera

Select a stream to start a [Cloud Streaming preview](https://docs.roboflow.com/deployment/roboflow-cloud/cloud-streaming/run-a-workflow#preview-a-draft) of your draft. Use a camera on the Video Connector or a temporary webcam or phone session; no Dedicated Deployment or self-hosted server is needed. Previews use credits. See [Workflow lifecycle](https://docs.roboflow.com/deployment/roboflow-cloud/cloud-streaming/run-a-workflow#workflow-lifecycle) for how previews, promotion, and restarts treat your draft and sinks.

Annotated video needs an image output; a JSON-only Workflow still runs and returns structured results. For continuous processing, use [Cloud Streaming deployment](https://docs.roboflow.com/deployment/roboflow-cloud/cloud-streaming/run-a-workflow); for your own hardware, use [self-hosted video processing](/workflows/deploy/video-processing.md).

### Test on Several Videos

If your Workflow has more than one image input (ex: one per camera), you can test it with one video per input. Give every image input a video file or an Asset Library video, up to four in total. The run reads the same frame number from each video and stops at the end of the shortest one, so use videos with the same frame rate. Block cache is off for these runs.

### Reuse Block Results

Turn on block caching to skip blocks whose settings and inputs have not changed since the last test run, which saves time and inference credits. Click the gear icon in the testing pane and check "Use Block Cache". The setting is saved per Workflow in your browser. A block shows "Cached" when a stored result matches its current setup and "Not Cached" when the next run computes it fresh. To make one block run every time, select it on the canvas and click "Uncache".

Caching applies only to test runs in the browser, not to deployed Workflows. Sink, notification, and secrets blocks, custom Python blocks, and disabled blocks always run.

### Run Sink Blocks

Sink blocks write data outside the Workflow (ex: Roboflow Dataset Upload, Webhook Sink) and run during test runs. To stop them, turn off the "Sinks" switch above "Run Workflow". One switch covers File, Webcam, and Stream inputs. The change applies to the next run and does not affect your saved Workflow, batch jobs, or API calls. Agent camera previews turn sinks off unless you turn them on.
