Write browser tests that run in the browser. Dyno starts your app, serves a test URL, and reports results. Interactor.js handles DOM interaction and waiting for the UI.
The app gets the full window, with tests in a companion window and a reporter you can open over the app. The included Playwright Core handles managed launch, screenshots, and viewport sizing. Manual runs just need the URL and a supported browser.
Read the docs or write your first test.
Dyno is early and isn't published to npm yet. You'll need Node 24+.
npm install --save-dev github:Robdel12/dyno
npx dyno init
npx dyno installSet your app's command and URL in dyno.config.js, then write a test:
import { describe, test } from 'dyno';
describe('Contacts', () => {
test('saves a contact', async ({ app, I }) => {
await app.goto('/contacts/new');
await I.find('Name').then.fill('Robert');
await I.click('Save');
await I.find('$([role=status])').text('Contact saved');
});
});Run npx dyno for headless tests or npx dyno --ui to inspect the app. Add --watch to rerun edits. Commit your lockfile to keep the tested Dyno revision. Each test gets fresh documents; your project owns storage and database cleanup.
Clone this repo, run npm ci, and download Chromium with node bin/dyno.js install. Run the demo with node bin/dyno.js --config examples/demo/dyno.config.js --ui and the framework suite with npm test.
Start with the vision. Architecture, CI setup, and the documentation guide cover contributing. The portable guide and API reference are generated from source.
MIT licensed. See LICENSE.