vest 5.4.3 → 5.4.5-dev-20241111-88df

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/SuiteSerializer/package.json +1 -0
  2. package/classnames/package.json +1 -0
  3. package/debounce/package.json +1 -0
  4. package/dist/cjs/SuiteSerializer.development.js +115 -2
  5. package/dist/cjs/SuiteSerializer.development.js.map +1 -1
  6. package/dist/cjs/SuiteSerializer.production.js +1 -1
  7. package/dist/cjs/SuiteSerializer.production.js.map +1 -1
  8. package/dist/cjs/vest.development.js +33 -4
  9. package/dist/cjs/vest.development.js.map +1 -1
  10. package/dist/cjs/vest.production.js +1 -1
  11. package/dist/cjs/vest.production.js.map +1 -1
  12. package/dist/es/SuiteSerializer.development.js +115 -2
  13. package/dist/es/SuiteSerializer.development.js.map +1 -1
  14. package/dist/es/SuiteSerializer.production.js +1 -1
  15. package/dist/es/SuiteSerializer.production.js.map +1 -1
  16. package/dist/es/vest.development.js +33 -4
  17. package/dist/es/vest.development.js.map +1 -1
  18. package/dist/es/vest.production.js +1 -1
  19. package/dist/es/vest.production.js.map +1 -1
  20. package/dist/umd/SuiteSerializer.development.js +118 -6
  21. package/dist/umd/SuiteSerializer.development.js.map +1 -1
  22. package/dist/umd/SuiteSerializer.production.js +1 -1
  23. package/dist/umd/SuiteSerializer.production.js.map +1 -1
  24. package/dist/umd/vest.development.js +33 -4
  25. package/dist/umd/vest.development.js.map +1 -1
  26. package/dist/umd/vest.production.js +1 -1
  27. package/dist/umd/vest.production.js.map +1 -1
  28. package/enforce/compose/package.json +1 -0
  29. package/enforce/compounds/package.json +1 -0
  30. package/enforce/date/package.json +1 -0
  31. package/enforce/email/package.json +1 -0
  32. package/enforce/isURL/package.json +1 -0
  33. package/enforce/schema/package.json +1 -0
  34. package/package.json +6 -6
  35. package/parser/package.json +1 -0
  36. package/promisify/package.json +1 -0
  37. package/types/SuiteSerializer.d.ts +2 -0
  38. package/types/SuiteSerializer.d.ts.map +1 -1
  39. package/types/classnames.d.ts +3 -1
  40. package/types/classnames.d.ts.map +1 -1
  41. package/types/debounce.d.ts +2 -0
  42. package/types/debounce.d.ts.map +1 -1
  43. package/types/parser.d.ts +3 -1
  44. package/types/parser.d.ts.map +1 -1
  45. package/types/promisify.d.ts +3 -1
  46. package/types/promisify.d.ts.map +1 -1
  47. package/types/vest.d.ts +3 -1
  48. package/types/vest.d.ts.map +1 -1
@@ -5,5 +5,6 @@
5
5
  "jsdelivr": "../dist/umd/SuiteSerializer.production.js",
6
6
  "name": "SuiteSerializer",
7
7
  "types": "../types/SuiteSerializer.d.ts",
8
+ "license": "MIT",
8
9
  "private": true
9
10
  }
@@ -5,5 +5,6 @@
5
5
  "jsdelivr": "../dist/umd/classnames.production.js",
6
6
  "name": "classnames",
7
7
  "types": "../types/classnames.d.ts",
8
+ "license": "MIT",
8
9
  "private": true
9
10
  }
@@ -5,5 +5,6 @@
5
5
  "jsdelivr": "../dist/umd/debounce.production.js",
6
6
  "name": "debounce",
7
7
  "types": "../types/debounce.d.ts",
8
+ "license": "MIT",
8
9
  "private": true
9
10
  }
@@ -1,11 +1,103 @@
1
1
  'use strict';
2
2
 
3
3
  var vestjsRuntime = require('vestjs-runtime');
4
+ var vestUtils = require('vest-utils');
5
+
6
+ var IsolateKeys;
7
+ (function (IsolateKeys) {
8
+ IsolateKeys["Type"] = "$type";
9
+ IsolateKeys["Keys"] = "keys";
10
+ IsolateKeys["Key"] = "key";
11
+ IsolateKeys["Parent"] = "parent";
12
+ IsolateKeys["Data"] = "data";
13
+ IsolateKeys["AllowReorder"] = "allowReorder";
14
+ IsolateKeys["Status"] = "status";
15
+ IsolateKeys["AbortController"] = "abortController";
16
+ IsolateKeys["Children"] = "children";
17
+ })(IsolateKeys || (IsolateKeys = {}));
18
+ new Set([
19
+ IsolateKeys.AbortController,
20
+ IsolateKeys.Parent,
21
+ IsolateKeys.Keys,
22
+ ]);
23
+
24
+ const CommonStates = {
25
+ PENDING: 'PENDING',
26
+ INITIAL: 'INITIAL',
27
+ DONE: 'DONE',
28
+ };
29
+ const State = {
30
+ [CommonStates.PENDING]: CommonStates.PENDING,
31
+ [CommonStates.INITIAL]: CommonStates.INITIAL,
32
+ [CommonStates.DONE]: CommonStates.DONE,
33
+ };
34
+ const machine$1 = {
35
+ initial: State.INITIAL,
36
+ states: {
37
+ [State.DONE]: {},
38
+ [State.INITIAL]: {
39
+ [State.PENDING]: State.PENDING,
40
+ [State.DONE]: State.DONE,
41
+ },
42
+ [State.PENDING]: {
43
+ [State.DONE]: State.DONE,
44
+ },
45
+ },
46
+ };
47
+ vestUtils.StateMachine(machine$1);
48
+
49
+ const TestStatus = {
50
+ [CommonStates.PENDING]: CommonStates.PENDING,
51
+ CANCELED: 'CANCELED',
52
+ FAILED: 'FAILED',
53
+ OMITTED: 'OMITTED',
54
+ PASSING: 'PASSING',
55
+ SKIPPED: 'SKIPPED',
56
+ UNTESTED: 'UNTESTED',
57
+ WARNING: 'WARNING',
58
+ };
59
+ const TestAction = {
60
+ RESET: 'RESET',
61
+ };
62
+ const machine = {
63
+ initial: TestStatus.UNTESTED,
64
+ states: {
65
+ '*': {
66
+ [TestStatus.OMITTED]: TestStatus.OMITTED,
67
+ [TestAction.RESET]: TestStatus.UNTESTED,
68
+ },
69
+ [TestStatus.UNTESTED]: {
70
+ [TestStatus.CANCELED]: TestStatus.CANCELED,
71
+ [TestStatus.FAILED]: TestStatus.FAILED,
72
+ [TestStatus.PASSING]: TestStatus.PASSING,
73
+ [TestStatus.PENDING]: TestStatus.PENDING,
74
+ [TestStatus.SKIPPED]: TestStatus.SKIPPED,
75
+ [TestStatus.WARNING]: TestStatus.WARNING,
76
+ },
77
+ [TestStatus.PENDING]: {
78
+ [TestStatus.CANCELED]: TestStatus.CANCELED,
79
+ [TestStatus.FAILED]: TestStatus.FAILED,
80
+ [TestStatus.PASSING]: TestStatus.PASSING,
81
+ [TestStatus.SKIPPED]: [
82
+ TestStatus.SKIPPED,
83
+ (force) => force === true,
84
+ ],
85
+ [TestStatus.WARNING]: TestStatus.WARNING,
86
+ },
87
+ [TestStatus.SKIPPED]: {},
88
+ [TestStatus.FAILED]: {},
89
+ [TestStatus.WARNING]: {},
90
+ [TestStatus.PASSING]: {},
91
+ [TestStatus.CANCELED]: {},
92
+ [TestStatus.OMITTED]: {},
93
+ },
94
+ };
95
+ vestUtils.StateMachine(machine);
4
96
 
5
97
  class SuiteSerializer {
6
98
  static serialize(suite) {
7
- const dump = Object.assign(Object.assign({}, suite.dump()), { output: undefined });
8
- return vestjsRuntime.IsolateSerializer.serialize(dump);
99
+ const dump = Object.assign({}, suite.dump());
100
+ return vestjsRuntime.IsolateSerializer.serialize(dump, suiteSerializerReplacer);
9
101
  }
10
102
  static deserialize(serialized) {
11
103
  return vestjsRuntime.IsolateSerializer.deserialize(serialized);
@@ -15,6 +107,27 @@ class SuiteSerializer {
15
107
  suite.resume(suiteRoot);
16
108
  }
17
109
  }
110
+ function suiteSerializerReplacer(value, key) {
111
+ if (key === 'output') {
112
+ return undefined;
113
+ }
114
+ if (key === IsolateKeys.Status) {
115
+ if (AllowedStatuses.has(value)) {
116
+ return value;
117
+ }
118
+ return undefined;
119
+ }
120
+ if (DisallowedKeys.has(key)) {
121
+ return undefined;
122
+ }
123
+ return value;
124
+ }
125
+ const AllowedStatuses = new Set([
126
+ TestStatus.FAILED,
127
+ TestStatus.PASSING,
128
+ TestStatus.WARNING,
129
+ ]);
130
+ const DisallowedKeys = new Set(['focusMode', 'match', 'matchAll', 'severity']);
18
131
 
19
132
  exports.SuiteSerializer = SuiteSerializer;
20
133
  //# sourceMappingURL=SuiteSerializer.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SuiteSerializer.development.js","sources":["../../src/exports/SuiteSerializer.ts"],"sourcesContent":["import { CB } from 'vest-utils';\nimport { IsolateSerializer } from 'vestjs-runtime';\n\nimport { TIsolateSuite } from 'IsolateSuite';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { Suite } from 'SuiteTypes';\n\nexport type Dumpable = {\n dump: CB<TIsolateSuite>;\n};\n\nexport class SuiteSerializer {\n static serialize(suite: Dumpable) {\n const dump = { ...suite.dump(), output: undefined };\n\n return IsolateSerializer.serialize(dump);\n }\n\n static deserialize(\n serialized: string | TIsolateSuite | Record<string, any>,\n ): TIsolateSuite {\n return IsolateSerializer.deserialize(serialized) as TIsolateSuite;\n }\n\n static resume(\n suite: Suite<TFieldName, TGroupName>,\n root: string | TIsolateSuite | Record<string, any>,\n ): void {\n const suiteRoot = SuiteSerializer.deserialize(root);\n\n suite.resume(suiteRoot);\n }\n}\n"],"names":["IsolateSerializer"],"mappings":";;;;MAWa,eAAe,CAAA;IAC1B,OAAO,SAAS,CAAC,KAAe,EAAA;QAC9B,MAAM,IAAI,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAC,IAAI,EAAE,CAAA,EAAA,EAAE,MAAM,EAAE,SAAS,EAAA,CAAE,CAAC;AAEpD,QAAA,OAAOA,+BAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC1C;IAED,OAAO,WAAW,CAChB,UAAwD,EAAA;AAExD,QAAA,OAAOA,+BAAiB,CAAC,WAAW,CAAC,UAAU,CAAkB,CAAC;KACnE;AAED,IAAA,OAAO,MAAM,CACX,KAAoC,EACpC,IAAkD,EAAA;QAElD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAEpD,QAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KACzB;AACF;;;;"}
1
+ {"version":3,"file":"SuiteSerializer.development.js","sources":["../../../vestjs-runtime/src/Isolate/IsolateKeys.ts","../../src/core/StateMachines/CommonStateMachine.ts","../../src/core/StateMachines/IsolateTestStateMachine.ts","../../src/exports/SuiteSerializer.ts"],"sourcesContent":["export enum IsolateKeys {\n Type = '$type',\n Keys = 'keys',\n Key = 'key',\n Parent = 'parent',\n Data = 'data',\n AllowReorder = 'allowReorder',\n Status = 'status',\n AbortController = 'abortController',\n Children = 'children',\n}\n\nexport const ExcludedFromDump = new Set([\n IsolateKeys.AbortController,\n IsolateKeys.Parent,\n IsolateKeys.Keys,\n]);\n","import { StateMachine, TStateMachine, ValueOf } from 'vest-utils';\n\nexport const CommonStates = {\n PENDING: 'PENDING',\n INITIAL: 'INITIAL',\n DONE: 'DONE',\n};\n\nconst State = {\n [CommonStates.PENDING]: CommonStates.PENDING,\n [CommonStates.INITIAL]: CommonStates.INITIAL,\n [CommonStates.DONE]: CommonStates.DONE,\n};\n\nexport type State = ValueOf<typeof State>;\n\nconst machine: TStateMachine<State> = {\n initial: State.INITIAL,\n states: {\n [State.DONE]: {},\n [State.INITIAL]: {\n [State.PENDING]: State.PENDING,\n [State.DONE]: State.DONE,\n },\n [State.PENDING]: {\n [State.DONE]: State.DONE,\n },\n },\n};\n\nexport const CommonStateMachine = StateMachine<State>(machine);\n","import { StateMachine, TStateMachine, ValueOf } from 'vest-utils';\n\nimport { CommonStates } from 'CommonStateMachine';\n\nexport const TestStatus = {\n [CommonStates.PENDING]: CommonStates.PENDING,\n CANCELED: 'CANCELED',\n FAILED: 'FAILED',\n OMITTED: 'OMITTED',\n PASSING: 'PASSING',\n SKIPPED: 'SKIPPED',\n UNTESTED: 'UNTESTED',\n WARNING: 'WARNING',\n};\n\nexport const TestAction = {\n RESET: 'RESET',\n};\n\nexport type TestStatus = ValueOf<typeof TestStatus>;\nexport type TestAction = ValueOf<typeof TestAction>;\n\nexport type TestStateMachineAction = TestAction | TestStatus;\n\nconst machine: TStateMachine<TestStatus, TestStateMachineAction> = {\n initial: TestStatus.UNTESTED,\n states: {\n '*': {\n [TestStatus.OMITTED]: TestStatus.OMITTED,\n [TestAction.RESET]: TestStatus.UNTESTED,\n },\n [TestStatus.UNTESTED]: {\n [TestStatus.CANCELED]: TestStatus.CANCELED,\n [TestStatus.FAILED]: TestStatus.FAILED,\n\n [TestStatus.PASSING]: TestStatus.PASSING,\n [TestStatus.PENDING]: TestStatus.PENDING,\n [TestStatus.SKIPPED]: TestStatus.SKIPPED,\n [TestStatus.WARNING]: TestStatus.WARNING,\n },\n [TestStatus.PENDING]: {\n [TestStatus.CANCELED]: TestStatus.CANCELED,\n [TestStatus.FAILED]: TestStatus.FAILED,\n\n [TestStatus.PASSING]: TestStatus.PASSING,\n [TestStatus.SKIPPED]: [\n TestStatus.SKIPPED,\n (force?: boolean) => force === true,\n ],\n [TestStatus.WARNING]: TestStatus.WARNING,\n },\n [TestStatus.SKIPPED]: {},\n [TestStatus.FAILED]: {},\n [TestStatus.WARNING]: {},\n [TestStatus.PASSING]: {},\n [TestStatus.CANCELED]: {},\n [TestStatus.OMITTED]: {},\n },\n};\n\nexport const IsolateTestStateMachine = StateMachine<\n TestStatus,\n TestStateMachineAction\n>(machine);\n","import { CB } from 'vest-utils';\nimport { IsolateSerializer } from 'vestjs-runtime';\nimport { IsolateKeys } from 'vestjs-runtime/src/Isolate/IsolateKeys';\n\nimport { TIsolateSuite } from 'IsolateSuite';\nimport { TestStatus } from 'IsolateTestStateMachine';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { Suite } from 'SuiteTypes';\n\nexport type Dumpable = {\n dump: CB<TIsolateSuite>;\n};\n\nexport class SuiteSerializer {\n static serialize(suite: Dumpable) {\n const dump = { ...suite.dump() };\n\n return IsolateSerializer.serialize(dump, suiteSerializerReplacer);\n }\n\n static deserialize(\n serialized: string | TIsolateSuite | Record<string, any>,\n ): TIsolateSuite {\n return IsolateSerializer.deserialize(serialized) as TIsolateSuite;\n }\n\n static resume(\n suite: Suite<TFieldName, TGroupName>,\n root: string | TIsolateSuite | Record<string, any>,\n ): void {\n const suiteRoot = SuiteSerializer.deserialize(root);\n\n suite.resume(suiteRoot);\n }\n}\n\nfunction suiteSerializerReplacer(value: any, key: string) {\n if (key === 'output') {\n return undefined;\n }\n\n if (key === IsolateKeys.Status) {\n if (AllowedStatuses.has(value)) {\n return value;\n }\n\n return undefined;\n }\n\n if (DisallowedKeys.has(key)) {\n return undefined;\n }\n\n return value;\n}\n\nconst AllowedStatuses = new Set([\n TestStatus.FAILED,\n TestStatus.PASSING,\n TestStatus.WARNING,\n]);\n\nconst DisallowedKeys = new Set(['focusMode', 'match', 'matchAll', 'severity']);\n"],"names":["machine","StateMachine","IsolateSerializer"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("vestjs-runtime");class i{static serialize(i){const s=Object.assign(Object.assign({},i.dump()),{output:void 0});return e.IsolateSerializer.serialize(s)}static deserialize(i){return e.IsolateSerializer.deserialize(i)}static resume(e,s){const r=i.deserialize(s);e.resume(r)}}exports.SuiteSerializer=i;
1
+ "use strict";var e,t=require("vestjs-runtime"),E=require("vest-utils");!function(e){e.Type="$type",e.Keys="keys",e.Key="key",e.Parent="parent",e.Data="data",e.AllowReorder="allowReorder",e.Status="status",e.AbortController="abortController",e.Children="children"}(e||(e={})),new Set([e.AbortController,e.Parent,e.Keys]);const N="PENDING",I="INITIAL",r="DONE",D={[N]:N,[I]:I,[r]:r},i={initial:D.INITIAL,states:{[D.DONE]:{},[D.INITIAL]:{[D.PENDING]:D.PENDING,[D.DONE]:D.DONE},[D.PENDING]:{[D.DONE]:D.DONE}}};E.StateMachine(i);const s={[N]:N,CANCELED:"CANCELED",FAILED:"FAILED",OMITTED:"OMITTED",PASSING:"PASSING",SKIPPED:"SKIPPED",UNTESTED:"UNTESTED",WARNING:"WARNING"},a={initial:s.UNTESTED,states:{"*":{[s.OMITTED]:s.OMITTED,RESET:s.UNTESTED},[s.UNTESTED]:{[s.CANCELED]:s.CANCELED,[s.FAILED]:s.FAILED,[s.PASSING]:s.PASSING,[s.PENDING]:s.PENDING,[s.SKIPPED]:s.SKIPPED,[s.WARNING]:s.WARNING},[s.PENDING]:{[s.CANCELED]:s.CANCELED,[s.FAILED]:s.FAILED,[s.PASSING]:s.PASSING,[s.SKIPPED]:[s.SKIPPED,e=>!0===e],[s.WARNING]:s.WARNING},[s.SKIPPED]:{},[s.FAILED]:{},[s.WARNING]:{},[s.PASSING]:{},[s.CANCELED]:{},[s.OMITTED]:{}}};E.StateMachine(a);class S{static serialize(e){const E=Object.assign({},e.dump());return t.IsolateSerializer.serialize(E,A)}static deserialize(e){return t.IsolateSerializer.deserialize(e)}static resume(e,t){const E=S.deserialize(t);e.resume(E)}}function A(t,E){if("output"!==E){if(E===e.Status)return P.has(t)?t:void 0;if(!n.has(E))return t}}const P=new Set([s.FAILED,s.PASSING,s.WARNING]),n=new Set(["focusMode","match","matchAll","severity"]);exports.SuiteSerializer=S;
2
2
  //# sourceMappingURL=SuiteSerializer.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SuiteSerializer.production.js","sources":["../../src/exports/SuiteSerializer.ts"],"sourcesContent":["import { CB } from 'vest-utils';\nimport { IsolateSerializer } from 'vestjs-runtime';\n\nimport { TIsolateSuite } from 'IsolateSuite';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { Suite } from 'SuiteTypes';\n\nexport type Dumpable = {\n dump: CB<TIsolateSuite>;\n};\n\nexport class SuiteSerializer {\n static serialize(suite: Dumpable) {\n const dump = { ...suite.dump(), output: undefined };\n\n return IsolateSerializer.serialize(dump);\n }\n\n static deserialize(\n serialized: string | TIsolateSuite | Record<string, any>,\n ): TIsolateSuite {\n return IsolateSerializer.deserialize(serialized) as TIsolateSuite;\n }\n\n static resume(\n suite: Suite<TFieldName, TGroupName>,\n root: string | TIsolateSuite | Record<string, any>,\n ): void {\n const suiteRoot = SuiteSerializer.deserialize(root);\n\n suite.resume(suiteRoot);\n }\n}\n"],"names":["SuiteSerializer","serialize","suite","dump","Object","assign","output","undefined","IsolateSerializer","deserialize","serialized","resume","root","suiteRoot"],"mappings":"mDAWaA,EACX,gBAAOC,CAAUC,GACf,MAAMC,EAAYC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAH,EAAMC,QAAM,CAAEG,YAAQC,IAExC,OAAOC,EAAiBA,kBAACP,UAAUE,EACpC,CAED,kBAAOM,CACLC,GAEA,OAAOF,EAAiBA,kBAACC,YAAYC,EACtC,CAED,aAAOC,CACLT,EACAU,GAEA,MAAMC,EAAYb,EAAgBS,YAAYG,GAE9CV,EAAMS,OAAOE,EACd"}
1
+ {"version":3,"file":"SuiteSerializer.production.js","sources":["../../../vestjs-runtime/src/Isolate/IsolateKeys.ts","../../src/core/StateMachines/CommonStateMachine.ts","../../src/core/StateMachines/IsolateTestStateMachine.ts","../../src/exports/SuiteSerializer.ts"],"sourcesContent":["export enum IsolateKeys {\n Type = '$type',\n Keys = 'keys',\n Key = 'key',\n Parent = 'parent',\n Data = 'data',\n AllowReorder = 'allowReorder',\n Status = 'status',\n AbortController = 'abortController',\n Children = 'children',\n}\n\nexport const ExcludedFromDump = new Set([\n IsolateKeys.AbortController,\n IsolateKeys.Parent,\n IsolateKeys.Keys,\n]);\n","import { StateMachine, TStateMachine, ValueOf } from 'vest-utils';\n\nexport const CommonStates = {\n PENDING: 'PENDING',\n INITIAL: 'INITIAL',\n DONE: 'DONE',\n};\n\nconst State = {\n [CommonStates.PENDING]: CommonStates.PENDING,\n [CommonStates.INITIAL]: CommonStates.INITIAL,\n [CommonStates.DONE]: CommonStates.DONE,\n};\n\nexport type State = ValueOf<typeof State>;\n\nconst machine: TStateMachine<State> = {\n initial: State.INITIAL,\n states: {\n [State.DONE]: {},\n [State.INITIAL]: {\n [State.PENDING]: State.PENDING,\n [State.DONE]: State.DONE,\n },\n [State.PENDING]: {\n [State.DONE]: State.DONE,\n },\n },\n};\n\nexport const CommonStateMachine = StateMachine<State>(machine);\n","import { StateMachine, TStateMachine, ValueOf } from 'vest-utils';\n\nimport { CommonStates } from 'CommonStateMachine';\n\nexport const TestStatus = {\n [CommonStates.PENDING]: CommonStates.PENDING,\n CANCELED: 'CANCELED',\n FAILED: 'FAILED',\n OMITTED: 'OMITTED',\n PASSING: 'PASSING',\n SKIPPED: 'SKIPPED',\n UNTESTED: 'UNTESTED',\n WARNING: 'WARNING',\n};\n\nexport const TestAction = {\n RESET: 'RESET',\n};\n\nexport type TestStatus = ValueOf<typeof TestStatus>;\nexport type TestAction = ValueOf<typeof TestAction>;\n\nexport type TestStateMachineAction = TestAction | TestStatus;\n\nconst machine: TStateMachine<TestStatus, TestStateMachineAction> = {\n initial: TestStatus.UNTESTED,\n states: {\n '*': {\n [TestStatus.OMITTED]: TestStatus.OMITTED,\n [TestAction.RESET]: TestStatus.UNTESTED,\n },\n [TestStatus.UNTESTED]: {\n [TestStatus.CANCELED]: TestStatus.CANCELED,\n [TestStatus.FAILED]: TestStatus.FAILED,\n\n [TestStatus.PASSING]: TestStatus.PASSING,\n [TestStatus.PENDING]: TestStatus.PENDING,\n [TestStatus.SKIPPED]: TestStatus.SKIPPED,\n [TestStatus.WARNING]: TestStatus.WARNING,\n },\n [TestStatus.PENDING]: {\n [TestStatus.CANCELED]: TestStatus.CANCELED,\n [TestStatus.FAILED]: TestStatus.FAILED,\n\n [TestStatus.PASSING]: TestStatus.PASSING,\n [TestStatus.SKIPPED]: [\n TestStatus.SKIPPED,\n (force?: boolean) => force === true,\n ],\n [TestStatus.WARNING]: TestStatus.WARNING,\n },\n [TestStatus.SKIPPED]: {},\n [TestStatus.FAILED]: {},\n [TestStatus.WARNING]: {},\n [TestStatus.PASSING]: {},\n [TestStatus.CANCELED]: {},\n [TestStatus.OMITTED]: {},\n },\n};\n\nexport const IsolateTestStateMachine = StateMachine<\n TestStatus,\n TestStateMachineAction\n>(machine);\n","import { CB } from 'vest-utils';\nimport { IsolateSerializer } from 'vestjs-runtime';\nimport { IsolateKeys } from 'vestjs-runtime/src/Isolate/IsolateKeys';\n\nimport { TIsolateSuite } from 'IsolateSuite';\nimport { TestStatus } from 'IsolateTestStateMachine';\nimport { TFieldName, TGroupName } from 'SuiteResultTypes';\nimport { Suite } from 'SuiteTypes';\n\nexport type Dumpable = {\n dump: CB<TIsolateSuite>;\n};\n\nexport class SuiteSerializer {\n static serialize(suite: Dumpable) {\n const dump = { ...suite.dump() };\n\n return IsolateSerializer.serialize(dump, suiteSerializerReplacer);\n }\n\n static deserialize(\n serialized: string | TIsolateSuite | Record<string, any>,\n ): TIsolateSuite {\n return IsolateSerializer.deserialize(serialized) as TIsolateSuite;\n }\n\n static resume(\n suite: Suite<TFieldName, TGroupName>,\n root: string | TIsolateSuite | Record<string, any>,\n ): void {\n const suiteRoot = SuiteSerializer.deserialize(root);\n\n suite.resume(suiteRoot);\n }\n}\n\nfunction suiteSerializerReplacer(value: any, key: string) {\n if (key === 'output') {\n return undefined;\n }\n\n if (key === IsolateKeys.Status) {\n if (AllowedStatuses.has(value)) {\n return value;\n }\n\n return undefined;\n }\n\n if (DisallowedKeys.has(key)) {\n return undefined;\n }\n\n return value;\n}\n\nconst AllowedStatuses = new Set([\n TestStatus.FAILED,\n TestStatus.PASSING,\n TestStatus.WARNING,\n]);\n\nconst DisallowedKeys = new Set(['focusMode', 'match', 'matchAll', 'severity']);\n"],"names":["IsolateKeys","Set","AbortController","Parent","Keys","CommonStates","State","CommonStates_PENDING","CommonStates_INITIAL","CommonStates_DONE","machine","initial","INITIAL","states","DONE","PENDING","StateMachine","TestStatus","CANCELED","FAILED","OMITTED","PASSING","SKIPPED","UNTESTED","WARNING","RESET","force","SuiteSerializer","serialize","suite","dump","Object","assign","IsolateSerializer","suiteSerializerReplacer","deserialize","serialized","resume","root","suiteRoot","value","key","Status","AllowedStatuses","has","DisallowedKeys"],"mappings":"iBAAYA,uDAAZ,SAAYA,GACVA,EAAA,KAAA,QACAA,EAAA,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,OAAA,SACAA,EAAA,KAAA,OACAA,EAAA,aAAA,eACAA,EAAA,OAAA,SACAA,EAAA,gBAAA,kBACAA,EAAA,SAAA,UACD,CAVD,CAAYA,IAAAA,EAUX,CAAA,IAE+B,IAAIC,IAAI,CACtCD,EAAYE,gBACZF,EAAYG,OACZH,EAAYI,OCbP,MAAMC,EACF,UADEA,EAEF,UAFEA,EAGL,OAGFC,EAAQ,CACZC,CAACF,GAAuBA,EACxBG,CAACH,GAAuBA,EACxBI,CAACJ,GAAoBA,GAKjBK,EAAgC,CACpCC,QAASL,EAAMM,QACfC,OAAQ,CACN,CAACP,EAAMQ,MAAO,CAAE,EAChB,CAACR,EAAMM,SAAU,CACf,CAACN,EAAMS,SAAUT,EAAMS,QACvB,CAACT,EAAMQ,MAAOR,EAAMQ,MAEtB,CAACR,EAAMS,SAAU,CACf,CAACT,EAAMQ,MAAOR,EAAMQ,QAKQE,EAAAA,aAAoBN,GC1B/C,MAAMO,EAAa,CACxBV,CAACF,GAAuBA,EACxBa,SAAU,WACVC,OAAQ,SACRC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,WAYLd,EAA6D,CACjEC,QAASM,EAAWM,SACpBV,OAAQ,CACN,IAAK,CACH,CAACI,EAAWG,SAAUH,EAAWG,QACjCK,MAAoBR,EAAWM,UAEjC,CAACN,EAAWM,UAAW,CACrB,CAACN,EAAWC,UAAWD,EAAWC,SAClC,CAACD,EAAWE,QAASF,EAAWE,OAEhC,CAACF,EAAWI,SAAUJ,EAAWI,QACjC,CAACJ,EAAWF,SAAUE,EAAWF,QACjC,CAACE,EAAWK,SAAUL,EAAWK,QACjC,CAACL,EAAWO,SAAUP,EAAWO,SAEnC,CAACP,EAAWF,SAAU,CACpB,CAACE,EAAWC,UAAWD,EAAWC,SAClC,CAACD,EAAWE,QAASF,EAAWE,OAEhC,CAACF,EAAWI,SAAUJ,EAAWI,QACjC,CAACJ,EAAWK,SAAU,CACpBL,EAAWK,QACVI,IAA8B,IAAVA,GAEvB,CAACT,EAAWO,SAAUP,EAAWO,SAEnC,CAACP,EAAWK,SAAU,CAAE,EACxB,CAACL,EAAWE,QAAS,CAAE,EACvB,CAACF,EAAWO,SAAU,CAAE,EACxB,CAACP,EAAWI,SAAU,CAAE,EACxB,CAACJ,EAAWC,UAAW,CAAE,EACzB,CAACD,EAAWG,SAAU,CAAE,IAIWJ,EAAAA,aAGrCN,SClDWiB,EACX,gBAAOC,CAAUC,GACf,MAAMC,EAAYC,OAAAC,OAAA,CAAA,EAAAH,EAAMC,QAExB,OAAOG,oBAAkBL,UAAUE,EAAMI,EAC1C,CAED,kBAAOC,CACLC,GAEA,OAAOH,EAAiBA,kBAACE,YAAYC,EACtC,CAED,aAAOC,CACLR,EACAS,GAEA,MAAMC,EAAYZ,EAAgBQ,YAAYG,GAE9CT,EAAMQ,OAAOE,EACd,EAGH,SAASL,EAAwBM,EAAYC,GAC3C,GAAY,WAARA,EAAJ,CAIA,GAAIA,IAAQzC,EAAY0C,OACtB,OAAIC,EAAgBC,IAAIJ,GACfA,OAGT,EAGF,IAAIK,EAAeD,IAAIH,GAIvB,OAAOD,CAdN,CAeH,CAEA,MAAMG,EAAkB,IAAI1C,IAAI,CAC9BgB,EAAWE,OACXF,EAAWI,QACXJ,EAAWO,UAGPqB,EAAiB,IAAI5C,IAAI,CAAC,YAAa,QAAS,WAAY"}
@@ -489,6 +489,7 @@ const suiteResultCache = vestUtils.cache();
489
489
  const preAggCache = vestUtils.cache();
490
490
  function useCreateVestState({ suiteName, VestReconciler, }) {
491
491
  const stateRef = {
492
+ afterEachCallbacks: vestUtils.tinyState.createTinyState(() => []),
492
493
  doneCallbacks: vestUtils.tinyState.createTinyState(() => []),
493
494
  fieldCallbacks: vestUtils.tinyState.createTinyState(() => ({})),
494
495
  preAggCache,
@@ -507,6 +508,9 @@ function useDoneCallbacks() {
507
508
  function useFieldCallbacks() {
508
509
  return useX().fieldCallbacks();
509
510
  }
511
+ function useAfterEachCallbacks() {
512
+ return useX().afterEachCallbacks();
513
+ }
510
514
  function useSuiteName() {
511
515
  return useX().suiteName;
512
516
  }
@@ -532,8 +536,10 @@ function useExpireSuiteResultCache() {
532
536
  function useResetCallbacks() {
533
537
  const [, , resetDoneCallbacks] = useDoneCallbacks();
534
538
  const [, , resetFieldCallbacks] = useFieldCallbacks();
539
+ const [, , resetAfterEachCallbacks] = useAfterEachCallbacks();
535
540
  resetDoneCallbacks();
536
541
  resetFieldCallbacks();
542
+ resetAfterEachCallbacks();
537
543
  }
538
544
  function useResetSuite() {
539
545
  useResetCallbacks();
@@ -1016,7 +1022,7 @@ function addSummaryStats(testObject, summary) {
1016
1022
  if (VestTest.isPending(testObject)) {
1017
1023
  summary.pendingCount++;
1018
1024
  }
1019
- if (!VestTest.isNonActionable(testObject)) {
1025
+ if (shouldCountTestRun(testObject)) {
1020
1026
  summary.testCount++;
1021
1027
  }
1022
1028
  return summary;
@@ -1070,7 +1076,9 @@ function appendTestObject(summaryKey, testObject) {
1070
1076
  incrementFailures(Severity.WARNINGS);
1071
1077
  }
1072
1078
  // Increment the test count.
1073
- nextSummaryKey.testCount++;
1079
+ if (shouldCountTestRun(testObject)) {
1080
+ nextSummaryKey.testCount++;
1081
+ }
1074
1082
  return nextSummaryKey;
1075
1083
  // Helper function to increment the failure count.
1076
1084
  function incrementFailures(severity) {
@@ -1088,6 +1096,9 @@ function baseTestStats() {
1088
1096
  warnings: [],
1089
1097
  });
1090
1098
  }
1099
+ function shouldCountTestRun(testObject) {
1100
+ return VestTest.isTested(testObject) || VestTest.isPending(testObject);
1101
+ }
1091
1102
 
1092
1103
  function useCreateSuiteResult() {
1093
1104
  return useSuiteResultCache(() => {
@@ -1558,7 +1569,7 @@ function useGetTestFromCache(dependencies, cacheAction) {
1558
1569
  cache.invalidate(dependencies);
1559
1570
  return cache(dependencies, cacheAction);
1560
1571
  }
1561
- // FIXME(@ealush 2024-08-12): This is some kind of a hack. Instead organically letting Vest set the next
1572
+ // FIXME:(@ealush 2024-08-12): This is some kind of a hack. Instead organically letting Vest set the next
1562
1573
  // child of the isolate, we're forcing it from the outside.
1563
1574
  // Instead, an ideal solution would probably be to have test.memo be its own isolate
1564
1575
  // that just injects a historic output from a previous test run.
@@ -1676,6 +1687,13 @@ function useRunDoneCallbacks() {
1676
1687
  const [doneCallbacks] = useDoneCallbacks();
1677
1688
  vestUtils.callEach(doneCallbacks);
1678
1689
  }
1690
+ function useRunAfterEachCallbacks(fieldName) {
1691
+ if (SuiteWalker.useHasRemainingWithTestNameMatching(fieldName)) {
1692
+ return;
1693
+ }
1694
+ const [afterEachCallbacks] = useAfterEachCallbacks();
1695
+ vestUtils.callEach(afterEachCallbacks);
1696
+ }
1679
1697
 
1680
1698
  // eslint-disable-next-line max-statements, max-lines-per-function
1681
1699
  function useInitVestBus() {
@@ -1699,6 +1717,7 @@ function useInitVestBus() {
1699
1717
  if (!VestTest.isCanceled(isolate)) {
1700
1718
  const { fieldName } = VestTest.getData(isolate);
1701
1719
  useRunFieldCallbacks(fieldName);
1720
+ useRunAfterEachCallbacks(fieldName);
1702
1721
  }
1703
1722
  }
1704
1723
  if (!SuiteWalker.useHasPending()) {
@@ -1781,10 +1800,20 @@ function shouldSkipDoneRegistration(callback, fieldName, output) {
1781
1800
  }
1782
1801
 
1783
1802
  function useSuiteRunResult() {
1803
+ const persistedDone = vestjsRuntime.VestRuntime.persist(done);
1784
1804
  return vestUtils.freezeAssign({
1785
- done: vestjsRuntime.VestRuntime.persist(done),
1805
+ afterEach: vestjsRuntime.VestRuntime.persist(afterEach),
1806
+ done: persistedDone,
1807
+ after: persistedDone,
1786
1808
  }, useCreateSuiteResult());
1787
1809
  }
1810
+ // @vx-allow use-use
1811
+ function afterEach(callback) {
1812
+ const output = useSuiteRunResult();
1813
+ const [, setAfterEachCallbacks] = useAfterEachCallbacks();
1814
+ setAfterEachCallbacks(prev => [...prev, callback]);
1815
+ return output;
1816
+ }
1788
1817
  /**
1789
1818
  * Registers done callbacks.
1790
1819
  * @register {Object} Vest output object.