import { StateMachine, TStateMachine, ValueOf } from 'vest-utils'; export const TestStatus = { CANCELED: 'CANCELED', FAILED: 'FAILED', OMITTED: 'OMITTED', PASSING: 'PASSING', SKIPPED: 'SKIPPED', STARTED: 'STARTED', UNTESTED: 'UNTESTED', WARNING: 'WARNING', }; export const TestAction = { RESET: 'RESET', }; export type TestStatus = ValueOf; export type TestAction = ValueOf; type TestStateMachineAction = TestAction | TestStatus; const machine: TStateMachine = { initial: TestStatus.UNTESTED, states: { '*': { [TestStatus.OMITTED]: TestStatus.OMITTED, [TestAction.RESET]: TestStatus.UNTESTED, }, [TestStatus.UNTESTED]: { [TestStatus.CANCELED]: TestStatus.CANCELED, [TestStatus.FAILED]: TestStatus.FAILED, [TestStatus.PASSING]: TestStatus.PASSING, [TestStatus.STARTED]: TestStatus.STARTED, [TestStatus.SKIPPED]: TestStatus.SKIPPED, [TestStatus.WARNING]: TestStatus.WARNING, }, [TestStatus.STARTED]: { [TestStatus.CANCELED]: TestStatus.CANCELED, [TestStatus.FAILED]: TestStatus.FAILED, [TestStatus.PASSING]: TestStatus.PASSING, [TestStatus.SKIPPED]: [ TestStatus.SKIPPED, (force?: boolean) => force === true, ], [TestStatus.WARNING]: TestStatus.WARNING, }, [TestStatus.SKIPPED]: {}, [TestStatus.FAILED]: {}, [TestStatus.WARNING]: {}, [TestStatus.PASSING]: {}, [TestStatus.CANCELED]: {}, [TestStatus.OMITTED]: {}, }, }; export const IsolateTestStateMachine = StateMachine(machine);