Run the steps with a caller-supplied call-site error.
The runner reports its own failures, such as a timeout, through this error, so
its stack decides which frames the message points at. A wrapper like
verify() calls asyncVerify from inside itself, which would make those
messages name the wrapper instead of the test. Passing the error captured at
the wrapper's own entry point keeps the test in the trace.
The error is mutated as the run reports failures, so give each run its own.
Run the steps with a caller-supplied call-site error.
The runner reports its own failures, such as a timeout, through this error, so its stack decides which frames the message points at. A wrapper like
verify()callsasyncVerifyfrom inside itself, which would make those messages name the wrapper instead of the test. Passing the error captured at the wrapper's own entry point keeps the test in the trace.The error is mutated as the run reports failures, so give each run its own.
not part of the public API