Frontend tests and what to run
npm test # node --test tests/*.test.tsnpx tsc --noEmit -p . # type check (strict, no unused locals or parameters)The tests use the built-in node:test runner. Node 23.6 or newer runs TypeScript directly;
on Node 22 add --experimental-strip-types. Most test a pure frontend module (one with no
Tauri or React imports, so Node can load it); the guard tests at the end read the sources
instead and enforce rules that would otherwise only fail in the running app.
| Test | What it covers |
|---|---|
midiEdit.test.ts |
The Piano Roll functions in src/midiEdit.ts: grid lengths, snapping, quantize with strength, swing and ends, and the rest. |
ccCurves.test.ts |
Controller lane curves (src/ccCurves.ts): curve shapes, ramps, Create Ramp, Thin Out. |
eventList.test.ts |
The Event List’s positions across tempo and signature changes, typed values and edits. |
noteSelect.test.ts |
Edit › Select on notes and events in the Piano Roll and the Event List. |
stepInput.test.ts |
Step Input: step lengths through the tempo map, the chord and advance state machine, the region edits. |
stepSeq.test.ts |
The Step Sequencer: step edits, rows, paint values for each edit mode, names, the playing step of each row. |
tempo.test.ts |
src/tempo.ts, the mirror of the engine’s tempo map. |
musicalMove.test.ts |
Region moves and nudges in bars and beats through the tempo map. |
audioEdit.test.ts |
The Audio Track Editor’s range arithmetic (src/audioRange.ts). |
regionSelect.test.ts |
Edit › Select’s region criteria (src/regionSelect.ts). |
regionParams.test.ts |
The Region inspector’s playback parameter values. |
regionGain.test.ts |
The region gain handle’s geometry and arithmetic. |
fades.test.ts |
Fade curves and crossfades for drawing, mirroring fades.rs. |
dragModes.test.ts |
The drag preview’s copy of drag_modes.rs, with the Rust module’s cases. |
newTrackDrag.test.ts |
Which source lanes a drag past the last track makes new tracks for (src/newTrackDrag.ts). |
comps.test.ts |
Take folder comp names and the folder’s name bar label. |
arrangement.test.ts |
The Arrangement track’s drawing and drag helpers. |
tools.test.ts |
The Tracks area’s tools (src/tools.ts) and the marquee (src/marquee.ts). |
overview.test.ts |
The overview strip’s mapping: time, track rows, the visible-area box, scroll and zoom drags. |
scrolling.test.ts |
Mouse Wheel Scrolls (src/wheel.ts) and bringing the playhead into view (revealLeft in src/view.ts). |
trackHeader.test.ts |
Track header layouts by height, the volume slider’s meter scale, and region name bars (src/regionBar.ts). |
autoLanes.test.ts |
Automation curves, Show Used Automation, the extra lanes and their boxes. |
laneFollow.test.ts |
The shown lane following a plug-in moved to another track. |
alternatives.test.ts |
Backup labels, alternative names and track alternatives (src/alternativesModel.ts). |
bounceFormat.test.ts |
The Bounce dialog’s formats, resolutions and file names. |
fxFormat.test.ts |
Built-in effect readouts and control mapping. |
fxShapes.test.ts |
The curves the modulation, distortion and Gain panels draw, against the engine’s values. |
fxDock.test.ts |
Plug-in panels docked or floating: the slot toggle, closing back, one Channel EQ at a time, Esc, pruning, resize maths and saved sizes. |
linearPhaseEq.test.ts |
The Linear Phase EQ’s parameters as Channel EQ settings. |
cpuMeter.test.ts |
The CPU meter’s tooltip and where its peak tick goes. |
stripMeters.test.ts |
The clip indicator readout and the gain-reduction meter. |
vca.test.ts |
VCA offsets and loop checks in the Mixer. |
trackOff.test.ts |
Whether a track is off through its stacks (src/trackOff.ts), and the power button’s tooltip. |
controllers.test.ts |
Controller assignment types and labels (MIDI Learn). |
keyFormat.test.ts |
Shortcuts written as each platform writes them. |
pluginKeys.test.ts |
Keys forwarded from a plug-in’s editor window become the KeyboardEvent the main window would see. |
detach.test.ts |
Detached windows (src/detachModel.ts): panel keys and labels, the shared UI state, fitting windows onto the monitors. |
sheetKeys.test.ts |
Which keys reach the app while sheets are open (src/sheetKeysModel.ts), and that every sheet registers with sheetKeys.ts. |
storeSelectors.test.ts |
Guard: no useStore, useEd or useSettings selector builds a new array or object on each call (which re-renders forever and blanks the window). |
commands.test.ts |
Guard: every key command and native menu item is handled, and no two key commands share a default key. |
tauriCommands.test.ts |
Guard: every Tauri command the frontend calls is registered, and each call passes its required arguments in camelCase and nothing else. |
pianoRollModel.test.ts |
The Piano Roll’s lanes, what a point hits, and its grid sums in musical time. |
regionGrab.test.ts |
What a press on a region in the Tracks area grabs: the loop tool, trims and fades. |
audioEditorModel.test.ts |
The Audio Track Editor’s layout, zoom range and what a press grabs. |
automationParams.test.ts |
Automation parameters: labels, each strip’s list, Stereo Out as a track, the lane’s scale. |
settingsText.test.ts |
The MIDI monitor’s wording, plug-in types and the Recovery sheet’s texts. |
compressorModel.test.ts |
The transfer curve’s copy of static_reduction for each circuit. |
dynScale.test.ts |
The dynamics panels’ value formatting and knob maths. |
styles.test.ts |
Guard: src/styles/index.css imports every stylesheet exactly once with the tokens first, no other file imports CSS, and each file’s braces balance. |
browserDialogs.test.ts |
Guard: no window.prompt, confirm or alert in src/ (macOS’s web view doesn’t implement them; use askName or the dialog plug-in). |
What to run before sending a change
Section titled “What to run before sending a change”cargo test -p daw-engine --libandcargo test -p daw- every headless example that touches your area (for engine changes,
scripts/headless-checks.shand the plug-in checkspdc_checkandfreeze_check); for a built-in effect,fx_checkandfx_bench npm test,npx tsc --noEmit -p .andnpm run build(the Vite bundle and CSS)cargo clippy --workspace --all-targets -- -D warningsandcargo fmt --all --check- a visual check in the running app for UI changes