ava icon indicating copy to clipboard operation
ava copied to clipboard

Make watch mode wait for the file system to be idle, and have that be configurable

Open novemberborn opened this issue 3 years ago • 2 comments

Based on discussion in https://github.com/avajs/ava/discussions/2702, projects with more complicated build setups may want to configure how long watch mode waits for the filesystem to become idle, lest it runs tests prematurely.

~We currently wait at least 100ms, but debounce for another 10ms after changes. ~Instead let's introduce a watchFsIdle option that defaults to 500ms. This should be configurable through config files only, not CLI flags. We should take time strings, like the timeout option.

Other name suggestions welcome.

The watcher should wait the duration of idle time after the last change. If another change is detected, it should again wait the duration of the idle time.

~This likely impacts the current watcher tests which are rather brittle. We also have some integration tests that may be affected.~

novemberborn avatar Mar 13 '21 15:03 novemberborn

RE new watch mode config settings, I think it'd make sense to add a new watchModeOptions top level object in the ava config object, and begin moving all existing and new watch mode options there. Watch mode seems to be a pretty specific mode for running the test runner, so having all the options for this mode in a single flat object is probably a good future proof place.

For example, if watch mode event hooks were added, to support things like clearing the screen between reruns, similar to my request here: https://github.com/avajs/ava/issues/1623 then those could be defined in the top level watchModeOptions as well

capttrousers avatar Nov 28 '21 16:11 capttrousers

Watch mode has changed a lot in https://github.com/avajs/ava/pull/3218, it'll be easier to implement this and write tests, plus there's a watchMode configuration object.

novemberborn avatar Jul 03 '23 14:07 novemberborn