@nexustools/nwjstestrunner 0.0.0-stage → 1.0.0-beta.1

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 (79) hide show
  1. package/AGENTS.md +21 -0
  2. package/README.md +142 -2
  3. package/bin/nwjstestrunner.js +13 -0
  4. package/dist/cli/nwjs-cli-launcher.d.ts +10 -0
  5. package/dist/cli/nwjs-cli-launcher.d.ts.map +1 -0
  6. package/dist/cli/nwjs-cli-launcher.js +281 -0
  7. package/dist/cli/nwjs-cli-launcher.js.map +1 -0
  8. package/dist/config/harness-config-loader.d.ts +10 -0
  9. package/dist/config/harness-config-loader.d.ts.map +1 -0
  10. package/dist/config/harness-config-loader.js +242 -0
  11. package/dist/config/harness-config-loader.js.map +1 -0
  12. package/dist/core/test-runner.d.ts +61 -0
  13. package/dist/core/test-runner.d.ts.map +1 -0
  14. package/dist/core/test-runner.js +450 -0
  15. package/dist/core/test-runner.js.map +1 -0
  16. package/dist/esm/index.d.mts +2 -0
  17. package/dist/esm/index.mjs +26 -0
  18. package/dist/harness/graphical-overlay-view.d.ts +18 -0
  19. package/dist/harness/graphical-overlay-view.d.ts.map +1 -0
  20. package/dist/harness/graphical-overlay-view.js +213 -0
  21. package/dist/harness/graphical-overlay-view.js.map +1 -0
  22. package/dist/harness/nwjs-graphical-test-harness.d.ts +40 -0
  23. package/dist/harness/nwjs-graphical-test-harness.d.ts.map +1 -0
  24. package/dist/harness/nwjs-graphical-test-harness.js +398 -0
  25. package/dist/harness/nwjs-graphical-test-harness.js.map +1 -0
  26. package/dist/harness/test-http-server.d.ts +12 -0
  27. package/dist/harness/test-http-server.d.ts.map +1 -0
  28. package/dist/harness/test-http-server.js +183 -0
  29. package/dist/harness/test-http-server.js.map +1 -0
  30. package/dist/harness/test-log-writer.d.ts +29 -0
  31. package/dist/harness/test-log-writer.d.ts.map +1 -0
  32. package/dist/harness/test-log-writer.js +173 -0
  33. package/dist/harness/test-log-writer.js.map +1 -0
  34. package/dist/harness/webview-test-controller.d.ts +18 -0
  35. package/dist/harness/webview-test-controller.d.ts.map +1 -0
  36. package/dist/harness/webview-test-controller.js +163 -0
  37. package/dist/harness/webview-test-controller.js.map +1 -0
  38. package/dist/index.d.ts +13 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +52 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/matchers/deep-equality-helper.d.ts +10 -0
  43. package/dist/matchers/deep-equality-helper.d.ts.map +1 -0
  44. package/dist/matchers/deep-equality-helper.js +188 -0
  45. package/dist/matchers/deep-equality-helper.js.map +1 -0
  46. package/dist/matchers/expect-matcher.d.ts +7 -0
  47. package/dist/matchers/expect-matcher.d.ts.map +1 -0
  48. package/dist/matchers/expect-matcher.js +261 -0
  49. package/dist/matchers/expect-matcher.js.map +1 -0
  50. package/dist/mock/jest-mock-factory.d.ts +20 -0
  51. package/dist/mock/jest-mock-factory.d.ts.map +1 -0
  52. package/dist/mock/jest-mock-factory.js +141 -0
  53. package/dist/mock/jest-mock-factory.js.map +1 -0
  54. package/dist/tests/NwjsTestRunnerSuites.d.ts +3 -0
  55. package/dist/tests/NwjsTestRunnerSuites.d.ts.map +1 -0
  56. package/dist/tests/NwjsTestRunnerSuites.js +266 -0
  57. package/dist/tests/NwjsTestRunnerSuites.js.map +1 -0
  58. package/dist/types/test-runner-types.d.ts +321 -0
  59. package/dist/types/test-runner-types.d.ts.map +1 -0
  60. package/dist/types/test-runner-types.js +3 -0
  61. package/dist/types/test-runner-types.js.map +1 -0
  62. package/package.json +56 -4
  63. package/runner/demo-client.html +70 -0
  64. package/runner/index.html +223 -0
  65. package/runner/package.json +27 -0
  66. package/src/cli/nwjs-cli-launcher.ts +243 -0
  67. package/src/config/harness-config-loader.ts +214 -0
  68. package/src/core/test-runner.ts +553 -0
  69. package/src/harness/graphical-overlay-view.ts +219 -0
  70. package/src/harness/nwjs-graphical-test-harness.ts +468 -0
  71. package/src/harness/test-http-server.ts +162 -0
  72. package/src/harness/test-log-writer.ts +154 -0
  73. package/src/harness/webview-test-controller.ts +192 -0
  74. package/src/index.ts +28 -0
  75. package/src/matchers/deep-equality-helper.ts +193 -0
  76. package/src/matchers/expect-matcher.ts +361 -0
  77. package/src/mock/jest-mock-factory.ts +170 -0
  78. package/src/tests/NwjsTestRunnerSuites.ts +267 -0
  79. package/src/types/test-runner-types.ts +335 -0
@@ -0,0 +1,13 @@
1
+ export * from './types/test-runner-types';
2
+ export { DeepEqualityHelper } from './matchers/deep-equality-helper';
3
+ export { ExpectMatcherBuilder, expect } from './matchers/expect-matcher';
4
+ export { JestMockFactory, jest } from './mock/jest-mock-factory';
5
+ export { SuiteBuilderScope, TestRunner, DescribeFunction, ItFunction, describe, it, test, beforeAll, afterAll, beforeEach, afterEach, installJestGlobals } from './core/test-runner';
6
+ export { TestLogWriter } from './harness/test-log-writer';
7
+ export { TestHttpServer } from './harness/test-http-server';
8
+ export { GraphicalOverlayView } from './harness/graphical-overlay-view';
9
+ export { WebviewTestController } from './harness/webview-test-controller';
10
+ export { NwjsGraphicalTestHarness, runNwjsTestHarness } from './harness/nwjs-graphical-test-harness';
11
+ export { HarnessConfigLoader } from './config/harness-config-loader';
12
+ export { NwjsCliLauncher } from './cli/nwjs-cli-launcher';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,EAAE,EACF,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.NwjsCliLauncher = exports.HarnessConfigLoader = exports.runNwjsTestHarness = exports.NwjsGraphicalTestHarness = exports.WebviewTestController = exports.GraphicalOverlayView = exports.TestHttpServer = exports.TestLogWriter = exports.installJestGlobals = exports.afterEach = exports.beforeEach = exports.afterAll = exports.beforeAll = exports.test = exports.it = exports.describe = exports.TestRunner = exports.jest = exports.JestMockFactory = exports.expect = exports.ExpectMatcherBuilder = exports.DeepEqualityHelper = void 0;
18
+ __exportStar(require("./types/test-runner-types"), exports);
19
+ var deep_equality_helper_1 = require("./matchers/deep-equality-helper");
20
+ Object.defineProperty(exports, "DeepEqualityHelper", { enumerable: true, get: function () { return deep_equality_helper_1.DeepEqualityHelper; } });
21
+ var expect_matcher_1 = require("./matchers/expect-matcher");
22
+ Object.defineProperty(exports, "ExpectMatcherBuilder", { enumerable: true, get: function () { return expect_matcher_1.ExpectMatcherBuilder; } });
23
+ Object.defineProperty(exports, "expect", { enumerable: true, get: function () { return expect_matcher_1.expect; } });
24
+ var jest_mock_factory_1 = require("./mock/jest-mock-factory");
25
+ Object.defineProperty(exports, "JestMockFactory", { enumerable: true, get: function () { return jest_mock_factory_1.JestMockFactory; } });
26
+ Object.defineProperty(exports, "jest", { enumerable: true, get: function () { return jest_mock_factory_1.jest; } });
27
+ var test_runner_1 = require("./core/test-runner");
28
+ Object.defineProperty(exports, "TestRunner", { enumerable: true, get: function () { return test_runner_1.TestRunner; } });
29
+ Object.defineProperty(exports, "describe", { enumerable: true, get: function () { return test_runner_1.describe; } });
30
+ Object.defineProperty(exports, "it", { enumerable: true, get: function () { return test_runner_1.it; } });
31
+ Object.defineProperty(exports, "test", { enumerable: true, get: function () { return test_runner_1.test; } });
32
+ Object.defineProperty(exports, "beforeAll", { enumerable: true, get: function () { return test_runner_1.beforeAll; } });
33
+ Object.defineProperty(exports, "afterAll", { enumerable: true, get: function () { return test_runner_1.afterAll; } });
34
+ Object.defineProperty(exports, "beforeEach", { enumerable: true, get: function () { return test_runner_1.beforeEach; } });
35
+ Object.defineProperty(exports, "afterEach", { enumerable: true, get: function () { return test_runner_1.afterEach; } });
36
+ Object.defineProperty(exports, "installJestGlobals", { enumerable: true, get: function () { return test_runner_1.installJestGlobals; } });
37
+ var test_log_writer_1 = require("./harness/test-log-writer");
38
+ Object.defineProperty(exports, "TestLogWriter", { enumerable: true, get: function () { return test_log_writer_1.TestLogWriter; } });
39
+ var test_http_server_1 = require("./harness/test-http-server");
40
+ Object.defineProperty(exports, "TestHttpServer", { enumerable: true, get: function () { return test_http_server_1.TestHttpServer; } });
41
+ var graphical_overlay_view_1 = require("./harness/graphical-overlay-view");
42
+ Object.defineProperty(exports, "GraphicalOverlayView", { enumerable: true, get: function () { return graphical_overlay_view_1.GraphicalOverlayView; } });
43
+ var webview_test_controller_1 = require("./harness/webview-test-controller");
44
+ Object.defineProperty(exports, "WebviewTestController", { enumerable: true, get: function () { return webview_test_controller_1.WebviewTestController; } });
45
+ var nwjs_graphical_test_harness_1 = require("./harness/nwjs-graphical-test-harness");
46
+ Object.defineProperty(exports, "NwjsGraphicalTestHarness", { enumerable: true, get: function () { return nwjs_graphical_test_harness_1.NwjsGraphicalTestHarness; } });
47
+ Object.defineProperty(exports, "runNwjsTestHarness", { enumerable: true, get: function () { return nwjs_graphical_test_harness_1.runNwjsTestHarness; } });
48
+ var harness_config_loader_1 = require("./config/harness-config-loader");
49
+ Object.defineProperty(exports, "HarnessConfigLoader", { enumerable: true, get: function () { return harness_config_loader_1.HarnessConfigLoader; } });
50
+ var nwjs_cli_launcher_1 = require("./cli/nwjs-cli-launcher");
51
+ Object.defineProperty(exports, "NwjsCliLauncher", { enumerable: true, get: function () { return nwjs_cli_launcher_1.NwjsCliLauncher; } });
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAC3B,4DAAyE;AAAhE,sHAAA,oBAAoB,OAAA;AAAE,wGAAA,MAAM,OAAA;AACrC,8DAAiE;AAAxD,oHAAA,eAAe,OAAA;AAAE,yGAAA,IAAI,OAAA;AAC9B,kDAa4B;AAX1B,yGAAA,UAAU,OAAA;AAGV,uGAAA,QAAQ,OAAA;AACR,iGAAA,EAAE,OAAA;AACF,mGAAA,IAAI,OAAA;AACJ,wGAAA,SAAS,OAAA;AACT,uGAAA,QAAQ,OAAA;AACR,yGAAA,UAAU,OAAA;AACV,wGAAA,SAAS,OAAA;AACT,iHAAA,kBAAkB,OAAA;AAEpB,6DAA0D;AAAjD,gHAAA,aAAa,OAAA;AACtB,+DAA4D;AAAnD,kHAAA,cAAc,OAAA;AACvB,2EAAwE;AAA/D,8HAAA,oBAAoB,OAAA;AAC7B,6EAA0E;AAAjE,gIAAA,qBAAqB,OAAA;AAC9B,qFAG+C;AAF7C,uIAAA,wBAAwB,OAAA;AACxB,iIAAA,kBAAkB,OAAA;AAEpB,wEAAqE;AAA5D,4HAAA,mBAAmB,OAAA;AAC5B,6DAA0D;AAAjD,oHAAA,eAAe,OAAA"}
@@ -0,0 +1,10 @@
1
+ export declare class DeepEqualityHelper {
2
+ static deepEquals(a: any, b: any, strict?: boolean, seen?: Map<any, any>): boolean;
3
+ static matchesObject(actual: any, expected: any): boolean;
4
+ static resolvePropertyPath(target: any, keyPath: string | string[]): {
5
+ exists: boolean;
6
+ value: any;
7
+ };
8
+ static formatValue(value: any): string;
9
+ }
10
+ //# sourceMappingURL=deep-equality-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-equality-helper.d.ts","sourceRoot":"","sources":["../../src/matchers/deep-equality-helper.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;WACf,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,UAAQ,EAAE,IAAI,gBAAsB,GAAG,OAAO;WAgH/E,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO;WAyClD,mBAAmB,CAC/B,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GACzB;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE;WAsBpB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAa9C"}
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeepEqualityHelper = void 0;
4
+ class DeepEqualityHelper {
5
+ static deepEquals(a, b, strict = false, seen = new Map()) {
6
+ if (Object.is(a, b)) {
7
+ return true;
8
+ }
9
+ if (a === null || b === null || a === undefined || b === undefined) {
10
+ return false;
11
+ }
12
+ if (typeof a !== typeof b) {
13
+ return false;
14
+ }
15
+ if (typeof a !== 'object') {
16
+ return false;
17
+ }
18
+ if (seen.has(a) && seen.get(a) === b) {
19
+ return true;
20
+ }
21
+ seen.set(a, b);
22
+ if (strict && a.constructor !== b.constructor) {
23
+ return false;
24
+ }
25
+ if (a instanceof Date && b instanceof Date) {
26
+ return Object.is(a.getTime(), b.getTime());
27
+ }
28
+ if (a instanceof RegExp && b instanceof RegExp) {
29
+ return a.source === b.source && a.flags === b.flags;
30
+ }
31
+ if (a instanceof Error && b instanceof Error) {
32
+ return a.name === b.name && a.message === b.message;
33
+ }
34
+ if (Buffer.isBuffer(a) && Buffer.isBuffer(b)) {
35
+ return a.equals(b);
36
+ }
37
+ if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
38
+ if (a.byteLength !== b.byteLength)
39
+ return false;
40
+ const ua = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
41
+ const ub = new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
42
+ for (let i = 0; i < ua.length; i++) {
43
+ if (ua[i] !== ub[i])
44
+ return false;
45
+ }
46
+ return true;
47
+ }
48
+ if (a instanceof Map && b instanceof Map) {
49
+ if (a.size !== b.size)
50
+ return false;
51
+ for (const [k, v] of a.entries()) {
52
+ if (!b.has(k) || !DeepEqualityHelper.deepEquals(v, b.get(k), strict, seen)) {
53
+ return false;
54
+ }
55
+ }
56
+ return true;
57
+ }
58
+ if (a instanceof Set && b instanceof Set) {
59
+ if (a.size !== b.size)
60
+ return false;
61
+ const bValues = Array.from(b.values());
62
+ for (const aVal of a.values()) {
63
+ const matchIdx = bValues.findIndex((bVal) => DeepEqualityHelper.deepEquals(aVal, bVal, strict, seen));
64
+ if (matchIdx === -1)
65
+ return false;
66
+ bValues.splice(matchIdx, 1);
67
+ }
68
+ return true;
69
+ }
70
+ if (Array.isArray(a) || Array.isArray(b)) {
71
+ if (!Array.isArray(a) || !Array.isArray(b))
72
+ return false;
73
+ if (a.length !== b.length)
74
+ return false;
75
+ for (let i = 0; i < a.length; i++) {
76
+ if (strict && (i in a) !== (i in b)) {
77
+ return false;
78
+ }
79
+ if (!DeepEqualityHelper.deepEquals(a[i], b[i], strict, seen)) {
80
+ return false;
81
+ }
82
+ }
83
+ return true;
84
+ }
85
+ const keysA = strict
86
+ ? Reflect.ownKeys(a)
87
+ : Object.keys(a).filter((k) => a[k] !== undefined);
88
+ const keysB = strict
89
+ ? Reflect.ownKeys(b)
90
+ : Object.keys(b).filter((k) => b[k] !== undefined);
91
+ if (keysA.length !== keysB.length) {
92
+ return false;
93
+ }
94
+ for (const key of keysA) {
95
+ if (!Object.prototype.hasOwnProperty.call(b, key)) {
96
+ if (strict || b[key] !== undefined) {
97
+ return false;
98
+ }
99
+ }
100
+ if (!DeepEqualityHelper.deepEquals(a[key], b[key], strict, seen)) {
101
+ return false;
102
+ }
103
+ }
104
+ return true;
105
+ }
106
+ static matchesObject(actual, expected) {
107
+ if (Object.is(actual, expected)) {
108
+ return true;
109
+ }
110
+ if (actual === null || actual === undefined || typeof actual !== 'object') {
111
+ return false;
112
+ }
113
+ if (expected === null || expected === undefined || typeof expected !== 'object') {
114
+ return false;
115
+ }
116
+ if (Array.isArray(expected)) {
117
+ if (!Array.isArray(actual) || actual.length < expected.length) {
118
+ return false;
119
+ }
120
+ for (let i = 0; i < expected.length; i++) {
121
+ if (!DeepEqualityHelper.matchesObject(actual[i], expected[i])) {
122
+ return false;
123
+ }
124
+ }
125
+ return true;
126
+ }
127
+ for (const key of Object.keys(expected)) {
128
+ if (!(key in actual)) {
129
+ return false;
130
+ }
131
+ const expVal = expected[key];
132
+ const actVal = actual[key];
133
+ if (expVal !== null && typeof expVal === 'object' && !(expVal instanceof RegExp) && !(expVal instanceof Date)) {
134
+ if (!DeepEqualityHelper.matchesObject(actVal, expVal)) {
135
+ return false;
136
+ }
137
+ }
138
+ else if (!DeepEqualityHelper.deepEquals(actVal, expVal)) {
139
+ return false;
140
+ }
141
+ }
142
+ return true;
143
+ }
144
+ static resolvePropertyPath(target, keyPath) {
145
+ if (target === null || target === undefined) {
146
+ return { exists: false, value: undefined };
147
+ }
148
+ const segments = Array.isArray(keyPath) ? keyPath : keyPath.split('.');
149
+ let current = target;
150
+ for (const seg of segments) {
151
+ if (current === null || current === undefined) {
152
+ return { exists: false, value: undefined };
153
+ }
154
+ if (typeof current === 'object' || typeof current === 'function') {
155
+ if (!(seg in Object(current))) {
156
+ return { exists: false, value: undefined };
157
+ }
158
+ current = current[seg];
159
+ }
160
+ else {
161
+ return { exists: false, value: undefined };
162
+ }
163
+ }
164
+ return { exists: true, value: current };
165
+ }
166
+ static formatValue(value) {
167
+ if (value === undefined)
168
+ return 'undefined';
169
+ if (value === null)
170
+ return 'null';
171
+ if (typeof value === 'number' && Number.isNaN(value))
172
+ return 'NaN';
173
+ if (typeof value === 'function')
174
+ return `[Function ${value.name || 'anonymous'}]`;
175
+ if (value instanceof RegExp)
176
+ return value.toString();
177
+ if (value instanceof Error)
178
+ return `[${value.name}: ${value.message}]`;
179
+ try {
180
+ return JSON.stringify(value);
181
+ }
182
+ catch (_e) {
183
+ return String(value);
184
+ }
185
+ }
186
+ }
187
+ exports.DeepEqualityHelper = DeepEqualityHelper;
188
+ //# sourceMappingURL=deep-equality-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-equality-helper.js","sourceRoot":"","sources":["../../src/matchers/deep-equality-helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { AsyncExpectMatcher, ExpectMatcher } from '../types/test-runner-types';
2
+ export declare class ExpectMatcherBuilder {
3
+ static createMatcher(actual: any, isNot?: boolean): ExpectMatcher;
4
+ static createAsyncMatcher(promiseOrFn: any, mode: 'resolves' | 'rejects', isNot?: boolean): AsyncExpectMatcher;
5
+ }
6
+ export declare function expect(actual: any): ExpectMatcher;
7
+ //# sourceMappingURL=expect-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect-matcher.d.ts","sourceRoot":"","sources":["../../src/matchers/expect-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG/E,qBAAa,oBAAoB;WACjB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,UAAQ,GAAG,aAAa;WA8RxD,kBAAkB,CAC9B,WAAW,EAAE,GAAG,EAChB,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,KAAK,UAAQ,GACZ,kBAAkB;CA8DtB;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,CAEjD"}
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExpectMatcherBuilder = void 0;
4
+ exports.expect = expect;
5
+ const deep_equality_helper_1 = require("./deep-equality-helper");
6
+ class ExpectMatcherBuilder {
7
+ static createMatcher(actual, isNot = false) {
8
+ const check = (condition, msg) => {
9
+ const pass = isNot ? !condition : condition;
10
+ if (!pass) {
11
+ throw new Error(msg);
12
+ }
13
+ };
14
+ const notPrefix = isNot ? 'not.' : '';
15
+ const fmt = deep_equality_helper_1.DeepEqualityHelper.formatValue;
16
+ const verifyErrorMatch = (caughtError, expectedError) => {
17
+ if (expectedError === undefined) {
18
+ return true;
19
+ }
20
+ const message = caughtError instanceof Error
21
+ ? caughtError.message
22
+ : typeof caughtError === 'string'
23
+ ? caughtError
24
+ : String(caughtError);
25
+ if (typeof expectedError === 'string') {
26
+ return message.includes(expectedError);
27
+ }
28
+ if (expectedError instanceof RegExp) {
29
+ return expectedError.test(message);
30
+ }
31
+ if (expectedError instanceof Error) {
32
+ return message.includes(expectedError.message);
33
+ }
34
+ if (typeof expectedError === 'function') {
35
+ return caughtError instanceof expectedError;
36
+ }
37
+ return false;
38
+ };
39
+ const matchers = {
40
+ toBe(expected) {
41
+ check(Object.is(actual, expected) || actual === expected, `expect(${fmt(actual)}).${notPrefix}toBe(${fmt(expected)}) failed`);
42
+ },
43
+ toEqual(expected) {
44
+ const match = deep_equality_helper_1.DeepEqualityHelper.deepEquals(actual, expected, false);
45
+ check(match, `expect(${fmt(actual)}).${notPrefix}toEqual(${fmt(expected)}) failed`);
46
+ },
47
+ toStrictEqual(expected) {
48
+ const match = deep_equality_helper_1.DeepEqualityHelper.deepEquals(actual, expected, true);
49
+ check(match, `expect(${fmt(actual)}).${notPrefix}toStrictEqual(${fmt(expected)}) failed`);
50
+ },
51
+ toBeTruthy() {
52
+ check(Boolean(actual) === true, `expect(${fmt(actual)}).${notPrefix}toBeTruthy() failed`);
53
+ },
54
+ toBeFalsy() {
55
+ check(Boolean(actual) === false, `expect(${fmt(actual)}).${notPrefix}toBeFalsy() failed`);
56
+ },
57
+ toBeNull() {
58
+ check(actual === null, `expect(${fmt(actual)}).${notPrefix}toBeNull() failed`);
59
+ },
60
+ toBeUndefined() {
61
+ check(actual === undefined, `expect(${fmt(actual)}).${notPrefix}toBeUndefined() failed`);
62
+ },
63
+ toBeDefined() {
64
+ check(actual !== undefined && actual !== null, `expect(${fmt(actual)}).${notPrefix}toBeDefined() failed`);
65
+ },
66
+ toBeNaN() {
67
+ check(Number.isNaN(actual), `expect(${fmt(actual)}).${notPrefix}toBeNaN() failed`);
68
+ },
69
+ toBeInstanceOf(expectedConstructor) {
70
+ const isInst = typeof expectedConstructor === 'function' && actual instanceof expectedConstructor;
71
+ const ctorName = expectedConstructor?.name || fmt(expectedConstructor);
72
+ check(isInst, `expect(${fmt(actual)}).${notPrefix}toBeInstanceOf(${ctorName}) failed`);
73
+ },
74
+ toBeGreaterThan(expected) {
75
+ check(actual > expected, `expect(${fmt(actual)}).${notPrefix}toBeGreaterThan(${fmt(expected)}) failed`);
76
+ },
77
+ toBeGreaterThanOrEqual(expected) {
78
+ check(actual >= expected, `expect(${fmt(actual)}).${notPrefix}toBeGreaterThanOrEqual(${fmt(expected)}) failed`);
79
+ },
80
+ toBeLessThan(expected) {
81
+ check(actual < expected, `expect(${fmt(actual)}).${notPrefix}toBeLessThan(${fmt(expected)}) failed`);
82
+ },
83
+ toBeLessThanOrEqual(expected) {
84
+ check(actual <= expected, `expect(${fmt(actual)}).${notPrefix}toBeLessThanOrEqual(${fmt(expected)}) failed`);
85
+ },
86
+ toBeCloseTo(expected, numDigits = 2) {
87
+ const precision = Math.pow(10, -numDigits) / 2;
88
+ const diff = Math.abs(Number(actual) - expected);
89
+ check(!Number.isNaN(diff) && diff < precision, `expect(${fmt(actual)}).${notPrefix}toBeCloseTo(${fmt(expected)}, ${numDigits}) failed`);
90
+ },
91
+ toContain(item) {
92
+ let contains = false;
93
+ if (typeof actual === 'string') {
94
+ contains = actual.includes(String(item));
95
+ }
96
+ else if (Array.isArray(actual)) {
97
+ contains = actual.includes(item);
98
+ }
99
+ else if (actual instanceof Set) {
100
+ contains = actual.has(item);
101
+ }
102
+ else if (actual && typeof actual[Symbol.iterator] === 'function') {
103
+ for (const entry of actual) {
104
+ if (entry === item) {
105
+ contains = true;
106
+ break;
107
+ }
108
+ }
109
+ }
110
+ check(contains, `expect(${fmt(actual)}).${notPrefix}toContain(${fmt(item)}) failed`);
111
+ },
112
+ toContainEqual(item) {
113
+ let contains = false;
114
+ if (Array.isArray(actual) || (actual && typeof actual[Symbol.iterator] === 'function')) {
115
+ for (const entry of actual) {
116
+ if (deep_equality_helper_1.DeepEqualityHelper.deepEquals(entry, item)) {
117
+ contains = true;
118
+ break;
119
+ }
120
+ }
121
+ }
122
+ check(contains, `expect(${fmt(actual)}).${notPrefix}toContainEqual(${fmt(item)}) failed`);
123
+ },
124
+ toHaveLength(expectedLength) {
125
+ const actualLen = actual !== null && actual !== undefined ? actual.length : undefined;
126
+ check(actualLen === expectedLength, `expect(${fmt(actual)}).${notPrefix}toHaveLength(${expectedLength}) failed (received length: ${fmt(actualLen)})`);
127
+ },
128
+ toHaveProperty(keyPath, expectedValue) {
129
+ const resolved = deep_equality_helper_1.DeepEqualityHelper.resolvePropertyPath(actual, keyPath);
130
+ const hasValueCheck = arguments.length >= 2;
131
+ const passCondition = resolved.exists &&
132
+ (!hasValueCheck || deep_equality_helper_1.DeepEqualityHelper.deepEquals(resolved.value, expectedValue));
133
+ check(passCondition, `expect(${fmt(actual)}).${notPrefix}toHaveProperty(${fmt(keyPath)}${hasValueCheck ? `, ${fmt(expectedValue)}` : ''}) failed`);
134
+ },
135
+ toMatch(expected) {
136
+ const str = typeof actual === 'string' ? actual : String(actual ?? '');
137
+ const matched = expected instanceof RegExp ? expected.test(str) : str.includes(String(expected));
138
+ check(matched, `expect(${fmt(actual)}).${notPrefix}toMatch(${fmt(expected)}) failed`);
139
+ },
140
+ toMatchObject(expected) {
141
+ const matched = deep_equality_helper_1.DeepEqualityHelper.matchesObject(actual, expected);
142
+ check(matched, `expect(${fmt(actual)}).${notPrefix}toMatchObject(${fmt(expected)}) failed`);
143
+ },
144
+ toThrow(expectedError) {
145
+ let threw = false;
146
+ let caught;
147
+ if (typeof actual === 'function') {
148
+ try {
149
+ actual();
150
+ }
151
+ catch (err) {
152
+ threw = true;
153
+ caught = err;
154
+ }
155
+ }
156
+ const matched = threw && verifyErrorMatch(caught, expectedError);
157
+ check(matched, `expect(fn).${notPrefix}toThrow(${expectedError !== undefined ? fmt(expectedError) : ''}) failed: ${!threw
158
+ ? 'function did not throw'
159
+ : `threw ${fmt(caught)} which did not match ${fmt(expectedError)}`}`);
160
+ },
161
+ toHaveBeenCalled() {
162
+ if (!actual || !actual._isMockFunction || !actual.mock) {
163
+ throw new Error('expect(fn).toHaveBeenCalled() requires a mock/spy function');
164
+ }
165
+ check(actual.mock.calls.length > 0, `expect(mockFn).${notPrefix}toHaveBeenCalled() failed (called ${actual.mock.calls.length} times)`);
166
+ },
167
+ toHaveBeenCalledTimes(expectedCount) {
168
+ if (!actual || !actual._isMockFunction || !actual.mock) {
169
+ throw new Error('expect(fn).toHaveBeenCalledTimes() requires a mock/spy function');
170
+ }
171
+ check(actual.mock.calls.length === expectedCount, `expect(mockFn).${notPrefix}toHaveBeenCalledTimes(${expectedCount}) failed (called ${actual.mock.calls.length} times)`);
172
+ },
173
+ toHaveBeenCalledWith(...expectedArgs) {
174
+ if (!actual || !actual._isMockFunction || !actual.mock) {
175
+ throw new Error('expect(fn).toHaveBeenCalledWith() requires a mock/spy function');
176
+ }
177
+ const matched = actual.mock.calls.some((callArgs) => deep_equality_helper_1.DeepEqualityHelper.deepEquals(callArgs, expectedArgs));
178
+ check(matched, `expect(mockFn).${notPrefix}toHaveBeenCalledWith(${expectedArgs.map(fmt).join(', ')}) failed (calls: ${fmt(actual.mock.calls)})`);
179
+ },
180
+ toHaveBeenLastCalledWith(...expectedArgs) {
181
+ if (!actual || !actual._isMockFunction || !actual.mock) {
182
+ throw new Error('expect(fn).toHaveBeenLastCalledWith() requires a mock/spy function');
183
+ }
184
+ const lastCall = actual.mock.lastCall;
185
+ const matched = actual.mock.calls.length > 0 && deep_equality_helper_1.DeepEqualityHelper.deepEquals(lastCall, expectedArgs);
186
+ check(matched, `expect(mockFn).${notPrefix}toHaveBeenLastCalledWith(${expectedArgs.map(fmt).join(', ')}) failed (lastCall: ${fmt(lastCall)})`);
187
+ },
188
+ get not() {
189
+ return ExpectMatcherBuilder.createMatcher(actual, !isNot);
190
+ },
191
+ get resolves() {
192
+ return ExpectMatcherBuilder.createAsyncMatcher(actual, 'resolves', false);
193
+ },
194
+ get rejects() {
195
+ return ExpectMatcherBuilder.createAsyncMatcher(actual, 'rejects', false);
196
+ }
197
+ };
198
+ return matchers;
199
+ }
200
+ static createAsyncMatcher(promiseOrFn, mode, isNot = false) {
201
+ const awaitTarget = async () => {
202
+ const targetPromise = typeof promiseOrFn === 'function' ? Promise.resolve().then(() => promiseOrFn()) : Promise.resolve(promiseOrFn);
203
+ if (mode === 'resolves') {
204
+ try {
205
+ return await targetPromise;
206
+ }
207
+ catch (err) {
208
+ throw new Error(`expect(promise).resolves failed because promise rejected with: ${deep_equality_helper_1.DeepEqualityHelper.formatValue(err)}`);
209
+ }
210
+ }
211
+ else {
212
+ let didReject = false;
213
+ let rejectedVal;
214
+ try {
215
+ await targetPromise;
216
+ }
217
+ catch (err) {
218
+ didReject = true;
219
+ rejectedVal = err;
220
+ }
221
+ if (!didReject) {
222
+ throw new Error('expect(promise).rejects failed because promise resolved instead of rejecting');
223
+ }
224
+ return rejectedVal;
225
+ }
226
+ };
227
+ const runSyncMatcher = async (invoke) => {
228
+ const val = await awaitTarget();
229
+ const syncMatcher = ExpectMatcherBuilder.createMatcher(val, isNot);
230
+ invoke(syncMatcher, val);
231
+ };
232
+ return {
233
+ toBe: (expected) => runSyncMatcher((m) => m.toBe(expected)),
234
+ toEqual: (expected) => runSyncMatcher((m) => m.toEqual(expected)),
235
+ toStrictEqual: (expected) => runSyncMatcher((m) => m.toStrictEqual(expected)),
236
+ toBeTruthy: () => runSyncMatcher((m) => m.toBeTruthy()),
237
+ toBeFalsy: () => runSyncMatcher((m) => m.toBeFalsy()),
238
+ toBeNull: () => runSyncMatcher((m) => m.toBeNull()),
239
+ toBeUndefined: () => runSyncMatcher((m) => m.toBeUndefined()),
240
+ toBeDefined: () => runSyncMatcher((m) => m.toBeDefined()),
241
+ toContain: (item) => runSyncMatcher((m) => m.toContain(item)),
242
+ toMatch: (expected) => runSyncMatcher((m) => m.toMatch(expected)),
243
+ toMatchObject: (expected) => runSyncMatcher((m) => m.toMatchObject(expected)),
244
+ toThrow: async (expectedError) => {
245
+ const val = await awaitTarget();
246
+ const syncMatcher = ExpectMatcherBuilder.createMatcher(() => {
247
+ throw val;
248
+ }, isNot);
249
+ syncMatcher.toThrow(expectedError);
250
+ },
251
+ get not() {
252
+ return ExpectMatcherBuilder.createAsyncMatcher(promiseOrFn, mode, !isNot);
253
+ }
254
+ };
255
+ }
256
+ }
257
+ exports.ExpectMatcherBuilder = ExpectMatcherBuilder;
258
+ function expect(actual) {
259
+ return ExpectMatcherBuilder.createMatcher(actual, false);
260
+ }
261
+ //# sourceMappingURL=expect-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect-matcher.js","sourceRoot":"","sources":["../../src/matchers/expect-matcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { MockFunction } from '../types/test-runner-types';
2
+ export declare class JestMockFactory {
3
+ private static activeMocks;
4
+ private static activeSpies;
5
+ static fn<TArgs extends any[] = any[], TReturn = any>(initialImpl?: (...args: TArgs) => TReturn): MockFunction<TArgs, TReturn>;
6
+ static spyOn<T extends object, K extends keyof T>(target: T, methodName: K): MockFunction<any[], any>;
7
+ static isMockFunction(fn: any): fn is MockFunction<any, any>;
8
+ static clearAllMocks(): void;
9
+ static resetAllMocks(): void;
10
+ static restoreAllMocks(): void;
11
+ }
12
+ export declare const jest: {
13
+ fn: typeof JestMockFactory.fn;
14
+ spyOn: typeof JestMockFactory.spyOn;
15
+ isMockFunction: typeof JestMockFactory.isMockFunction;
16
+ clearAllMocks: typeof JestMockFactory.clearAllMocks;
17
+ resetAllMocks: typeof JestMockFactory.resetAllMocks;
18
+ restoreAllMocks: typeof JestMockFactory.restoreAllMocks;
19
+ };
20
+ //# sourceMappingURL=jest-mock-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-mock-factory.d.ts","sourceRoot":"","sources":["../../src/mock/jest-mock-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,4BAA4B,CAAC;AAErE,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,WAAW,CAAqC;IAC/D,OAAO,CAAC,MAAM,CAAC,WAAW,CAAyB;WAErC,EAAE,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,EACzD,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,GACxC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;WAkGjB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EACrD,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,CAAC,GACZ,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;WA6Bb,cAAc,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;WAIrD,aAAa,IAAI,IAAI;WAMrB,aAAa,IAAI,IAAI;WAMrB,eAAe,IAAI,IAAI;CAMtC;AAED,eAAO,MAAM,IAAI;;;;;;;CAOhB,CAAC"}