Editing and debugging
Keep the app and browser running while you change tests:
dyno --ui --watchEdits to tests or imported helpers queue a rebuild. If a run is active, Dyno waits for it before running the latest code. A build error leaves the previous results available; fix the file to run again.
Your app keeps its own hot reload. Restart Dyno after changing config or Node setup.
Stop where the problem is
Section titled “Stop where the problem is”await app.pause('Inspect this contact');Use this in a test or setup hook with --ui or --manual. It opens the reporter immediately and suspends the test deadline. Continue hides the reporter and resumes the remaining budget.
The app’s timers and requests keep running. Cleanup cannot pause, and headless runs reject the call. For failures anywhere in a suite, use Pause on failure in the reporter.
Check the setup first
Section titled “Check the setup first”Run dyno doctor to check config, bundling, browser prerequisites and the app URL without launching anything. Add --ui or --manual to check that mode. The actual run still needs to start the server successfully.
Type-check your tests
Section titled “Type-check your tests”Dyno transpiles TypeScript without checking it. Run your project’s tsc --noEmit, using moduleResolution: "Bundler" for browser tests; Interactor’s declarations don’t currently support strict NodeNext checking. JavaScript editors use the same included types.
To type values from Node setup, extend Fixtures in your project:
import 'dyno';
declare module 'dyno' { interface Fixtures { contactId: string }}Config types work independently of the browser declarations.