Ported cargo-hauler's suite (~550 tests, 30 files) from Effect.runPromise + @rstest/core to it.live / it.effect on effect-rstest@e5f8d5f with effect@4.0.0-rc.112. Nothing blocked; two things cost time:
-
Type namespace is still Vitest.* (Vitest.Tester, Vitest.Methods, Vitest.TestFunction) in a package named effect-rstest. Hover tooltips and error messages say "Vitest" everywhere, which sent me to the wrong docs twice. Suggest renaming to Rstest.* (or a neutral EffectTest.*) with the old names kept as deprecated aliases.
-
it.effect gives no hint when a body is parked on real time under TestClock. A Stream.fromEffectSchedule(..., Schedule.spaced('1 millis')) under it.effect just hits the 5 s timeout with a generic message. A dev-mode note at timeout — "a fiber is suspended on Clock.sleep; under it.effect the clock is virtual, use TestClock.adjust or it.live" — would make the live-vs-effect decision immediate.
For what it's worth: it.live.skipIf / it.effect.skipIf being typed (condition: unknown) => Test<R> worked exactly as needed, and acquireRelease inside the test scope replaced every try/finally cleanly.
Ported cargo-hauler's suite (~550 tests, 30 files) from
Effect.runPromise+@rstest/coretoit.live/it.effectoneffect-rstest@e5f8d5fwitheffect@4.0.0-rc.112. Nothing blocked; two things cost time:Type namespace is still
Vitest.*(Vitest.Tester,Vitest.Methods,Vitest.TestFunction) in a package namedeffect-rstest. Hover tooltips and error messages say "Vitest" everywhere, which sent me to the wrong docs twice. Suggest renaming toRstest.*(or a neutralEffectTest.*) with the old names kept as deprecated aliases.it.effectgives no hint when a body is parked on real time underTestClock. AStream.fromEffectSchedule(..., Schedule.spaced('1 millis'))underit.effectjust hits the 5 s timeout with a generic message. A dev-mode note at timeout — "a fiber is suspended onClock.sleep; underit.effectthe clock is virtual, useTestClock.adjustorit.live" — would make the live-vs-effect decision immediate.For what it's worth:
it.live.skipIf/it.effect.skipIfbeing typed(condition: unknown) => Test<R>worked exactly as needed, andacquireReleaseinside the test scope replaced everytry/finallycleanly.