How do I test a LangGraph agent that pauses for human approval?

Resume the paused graph with Command(resume=...) on the same thread_id the run paused under, and hand it the approve, edit, reject, or respond value your test wants instead of waiting for a person to click anything. LangGraph’s human-in-the-loop pattern treats that value the same way it treats any other resumed state: the graph picks up exactly where interrupt() left it, with your supplied decision standing in for whatever a person would have given it.

That turns every branch of an approval flow into something a test can drive directly: script an approve to check the happy path, a reject with a message to check how the agent handles pushback, or an edit to check whether it actually uses the changed value instead of the one it first proposed. It’s the same problem a CI gate has to solve for any check that would otherwise need a person watching, aimed at the one node built to wait for one.

sources

keep reading

More on this.

Two ways to run Tessary.

Tessary is an open-source agent reliability platform. Cloud and self-hosted run the same workflow on the OpenTelemetry traces your agent already emits.

Tessary Cloud

We host it for you. Send your first trace with nothing to deploy and no model key.

what's includedper organization
traces
10,000 per calendar month
stored trace data
1 GB
retention
30 days
model credit
$10, one-time, for triage and root-cause analysis
credit card
not required

Self-hosted Tessary

Run the open-source code on your own infrastructure with one command. Add your own model key for triage and root-cause analysis.

Self-host Tessary for me by following https://github.com/tessaryai/tessary/blob/main/setup.md

docker compose -f oci://docker.io/tessaryai/tessary:compose up -d -y