Skip to content

no-sleep-in-test-body

Avoid fixed timed sleeps directly in test bodies; synchronize on observable behavior or use controlled timers.

Why

Wall-clock delays make test correctness depend on scheduler and machine speed.

Fix

Await the observable signal, or advance fake timers when supported and restore real timers in finally or a teardown hook.

Examples

Before — flagged Do not wait for wall-clock time
src/retry.test.ts
it("retries", async () => {
await sleep(50);
expect(done()).toBe(true);
});
After — preferred Advance controlled time and restore real timers
src/retry.test.ts
it("retries", async () => {
vi.useFakeTimers();
try {
const result = retry();
await vi.advanceTimersByTimeAsync(50);
await result;
} finally {
vi.useRealTimers();
}
});

Files

**/*.test.***/*.spec.***/tests/****/__tests__/**