The browser editor has a real debugger. You set breakpoints in your source, start a run, and the worker stops on them — with a call stack, the variables in scope, and stepping.
It is not a simulation. The run happens on the platform, in the same kind of worker a deployment uses, so what you observe is what actually happens.
Set a breakpoint by clicking the gutter beside a line, then start the debugger from the editor's Debug action in the title bar, or press F5.
A debug run takes the same configuration as an ordinary test run: the payload you supply, the step scope, and the parameter values from the Parameters ▸ Values view. Running and debugging are the same run with the debugger attached — there is no separate configuration to keep in step.
You get what you would expect from a debugger:
this.payload, this.input and this.context can be read at the
point of the stop rather than reconstructed from log lines.Stepping stays inside your code. The platform's own runtime is skipped over, so a Step Over at the end of a step method does not walk into machinery you did not write.
The bottom panel carries two tabs:
That split matters when you are switching between the two: a plain test run's console.log
appears under Run output, not in the Debug Console.
A debug run is a test run: it executes the draft, and events it emits are recorded but not dispatched, so pausing on a breakpoint cannot hold up production work.
The deployment's limits still apply — most importantly its timeout, which keeps running while you are stopped at a breakpoint. A long debugging session can end as a timed-out run.
Reach for the debugger when you need to see state at a moment: what a payload actually contained, what a mapping produced, why a branch went the way it did.
Reach for reading a run when you need to see a sequence: which step failed, how long each took, what was retried. Steps and their recorded results answer that without stopping anything.