testplane 0.1.0 → 0.1.2

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 (136) hide show
  1. package/README.md +8 -6
  2. package/build/package.json +26 -4
  3. package/build/src/browser/browser.d.ts +3 -1
  4. package/build/src/browser/browser.js +12 -6
  5. package/build/src/browser/browser.js.map +1 -1
  6. package/build/src/browser/existing-browser.js +5 -1
  7. package/build/src/browser/existing-browser.js.map +1 -1
  8. package/build/src/browser/new-browser.d.ts +4 -4
  9. package/build/src/browser/screen-shooter/viewport/coord-validator/index.d.ts +2 -1
  10. package/build/src/browser/types.d.ts +3 -0
  11. package/build/src/browser-pool/basic-pool.d.ts +2 -1
  12. package/build/src/browser-pool/caching-pool.d.ts +2 -1
  13. package/build/src/browser-pool/limited-pool.d.ts +2 -1
  14. package/build/src/browser-pool/limited-use-set.d.ts +2 -1
  15. package/build/src/browser-pool/per-browser-limited-pool.d.ts +2 -1
  16. package/build/src/bundle/index.js +2004 -0
  17. package/build/src/config/defaults.d.ts +2 -1
  18. package/build/src/config/defaults.js +3 -2
  19. package/build/src/config/defaults.js.map +1 -1
  20. package/build/src/config/options.js +25 -0
  21. package/build/src/config/options.js.map +1 -1
  22. package/build/src/config/types.d.ts +7 -1
  23. package/build/src/constants/config.d.ts +2 -0
  24. package/build/src/constants/config.js +2 -0
  25. package/build/src/constants/config.js.map +1 -1
  26. package/build/src/runner/browser-env/index.d.ts +12 -0
  27. package/build/src/runner/browser-env/index.js +34 -0
  28. package/build/src/runner/browser-env/index.js.map +1 -0
  29. package/build/src/runner/browser-env/vite/browser-modules/constants.d.ts +17 -0
  30. package/build/src/runner/browser-env/vite/browser-modules/constants.js +20 -0
  31. package/build/src/runner/browser-env/vite/browser-modules/constants.js.map +1 -0
  32. package/build/src/runner/browser-env/vite/browser-modules/driver.d.ts +3 -0
  33. package/build/src/runner/browser-env/vite/browser-modules/driver.js +113 -0
  34. package/build/src/runner/browser-env/vite/browser-modules/driver.js.map +1 -0
  35. package/build/src/runner/browser-env/vite/browser-modules/errors/base.d.ts +6 -0
  36. package/build/src/runner/browser-env/vite/browser-modules/errors/base.js +10 -0
  37. package/build/src/runner/browser-env/vite/browser-modules/errors/base.js.map +1 -0
  38. package/build/src/runner/browser-env/vite/browser-modules/errors/browser.d.ts +12 -0
  39. package/build/src/runner/browser-env/vite/browser-modules/errors/browser.js +14 -0
  40. package/build/src/runner/browser-env/vite/browser-modules/errors/browser.js.map +1 -0
  41. package/build/src/runner/browser-env/vite/browser-modules/errors/index.d.ts +10 -0
  42. package/build/src/runner/browser-env/vite/browser-modules/errors/index.js +44 -0
  43. package/build/src/runner/browser-env/vite/browser-modules/errors/index.js.map +1 -0
  44. package/build/src/runner/browser-env/vite/browser-modules/errors/load-page.d.ts +10 -0
  45. package/build/src/runner/browser-env/vite/browser-modules/errors/load-page.js +10 -0
  46. package/build/src/runner/browser-env/vite/browser-modules/errors/load-page.js.map +1 -0
  47. package/build/src/runner/browser-env/vite/browser-modules/errors/vite-runtime.d.ts +17 -0
  48. package/build/src/runner/browser-env/vite/browser-modules/errors/vite-runtime.js +17 -0
  49. package/build/src/runner/browser-env/vite/browser-modules/errors/vite-runtime.js.map +1 -0
  50. package/build/src/runner/browser-env/vite/browser-modules/expect.d.ts +2 -0
  51. package/build/src/runner/browser-env/vite/browser-modules/expect.js +84 -0
  52. package/build/src/runner/browser-env/vite/browser-modules/expect.js.map +1 -0
  53. package/build/src/runner/browser-env/vite/browser-modules/globals.d.ts +1 -0
  54. package/build/src/runner/browser-env/vite/browser-modules/globals.js +63 -0
  55. package/build/src/runner/browser-env/vite/browser-modules/globals.js.map +1 -0
  56. package/build/src/runner/browser-env/vite/browser-modules/index.d.ts +1 -0
  57. package/build/src/runner/browser-env/vite/browser-modules/index.js +13 -0
  58. package/build/src/runner/browser-env/vite/browser-modules/index.js.map +1 -0
  59. package/build/src/runner/browser-env/vite/browser-modules/mocha/events.d.ts +6 -0
  60. package/build/src/runner/browser-env/vite/browser-modules/mocha/events.js +7 -0
  61. package/build/src/runner/browser-env/vite/browser-modules/mocha/events.js.map +1 -0
  62. package/build/src/runner/browser-env/vite/browser-modules/mocha/index.d.ts +10 -0
  63. package/build/src/runner/browser-env/vite/browser-modules/mocha/index.js +63 -0
  64. package/build/src/runner/browser-env/vite/browser-modules/mocha/index.js.map +1 -0
  65. package/build/src/runner/browser-env/vite/browser-modules/mocha/parser.d.ts +10 -0
  66. package/build/src/runner/browser-env/vite/browser-modules/mocha/parser.js +21 -0
  67. package/build/src/runner/browser-env/vite/browser-modules/mocha/parser.js.map +1 -0
  68. package/build/src/runner/browser-env/vite/browser-modules/tsconfig.tsbuildinfo +1 -0
  69. package/build/src/runner/browser-env/vite/browser-modules/types.d.ts +92 -0
  70. package/build/src/runner/browser-env/vite/browser-modules/types.js +16 -0
  71. package/build/src/runner/browser-env/vite/browser-modules/types.js.map +1 -0
  72. package/build/src/runner/browser-env/vite/browser-modules/utils/console.d.ts +1 -0
  73. package/build/src/runner/browser-env/vite/browser-modules/utils/console.js +13 -0
  74. package/build/src/runner/browser-env/vite/browser-modules/utils/console.js.map +1 -0
  75. package/build/src/runner/browser-env/vite/browser-modules/utils/index.d.ts +2 -0
  76. package/build/src/runner/browser-env/vite/browser-modules/utils/index.js +3 -0
  77. package/build/src/runner/browser-env/vite/browser-modules/utils/index.js.map +1 -0
  78. package/build/src/runner/browser-env/vite/browser-modules/utils/selector.d.ts +1 -0
  79. package/build/src/runner/browser-env/vite/browser-modules/utils/selector.js +4 -0
  80. package/build/src/runner/browser-env/vite/browser-modules/utils/selector.js.map +1 -0
  81. package/build/src/runner/browser-env/vite/constants.d.ts +13 -0
  82. package/build/src/runner/browser-env/vite/constants.js +18 -0
  83. package/build/src/runner/browser-env/vite/constants.js.map +1 -0
  84. package/build/src/runner/browser-env/vite/plugins/generate-index-html.d.ts +2 -0
  85. package/build/src/runner/browser-env/vite/plugins/generate-index-html.js +148 -0
  86. package/build/src/runner/browser-env/vite/plugins/generate-index-html.js.map +1 -0
  87. package/build/src/runner/browser-env/vite/server.d.ts +14 -0
  88. package/build/src/runner/browser-env/vite/server.js +117 -0
  89. package/build/src/runner/browser-env/vite/server.js.map +1 -0
  90. package/build/src/runner/browser-env/vite/socket.d.ts +2 -0
  91. package/build/src/runner/browser-env/vite/socket.js +106 -0
  92. package/build/src/runner/browser-env/vite/socket.js.map +1 -0
  93. package/build/src/runner/browser-env/vite/types.d.ts +16 -0
  94. package/build/src/runner/browser-env/vite/types.js +13 -0
  95. package/build/src/runner/browser-env/vite/types.js.map +1 -0
  96. package/build/src/runner/browser-env/vite/utils.d.ts +7 -0
  97. package/build/src/runner/browser-env/vite/utils.js +26 -0
  98. package/build/src/runner/browser-env/vite/utils.js.map +1 -0
  99. package/build/src/test-reader/test-parser.js +3 -0
  100. package/build/src/test-reader/test-parser.js.map +1 -1
  101. package/build/src/test-reader/test-transformer.d.ts +2 -0
  102. package/build/src/test-reader/test-transformer.js +8 -0
  103. package/build/src/test-reader/test-transformer.js.map +1 -0
  104. package/build/src/testplane.d.ts +3 -2
  105. package/build/src/testplane.js +3 -1
  106. package/build/src/testplane.js.map +1 -1
  107. package/build/src/types/index.d.ts +7 -2
  108. package/build/src/types/index.js.map +1 -1
  109. package/build/src/utils/config.d.ts +2 -0
  110. package/build/src/utils/config.js +9 -0
  111. package/build/src/utils/config.js.map +1 -0
  112. package/build/src/worker/browser-env/runner/test-runner/constants.d.ts +10 -0
  113. package/build/src/worker/browser-env/runner/test-runner/constants.js +14 -0
  114. package/build/src/worker/browser-env/runner/test-runner/constants.js.map +1 -0
  115. package/build/src/worker/browser-env/runner/test-runner/execution-thread.d.ts +3 -0
  116. package/build/src/worker/browser-env/runner/test-runner/execution-thread.js +40 -0
  117. package/build/src/worker/browser-env/runner/test-runner/execution-thread.js.map +1 -0
  118. package/build/src/worker/browser-env/runner/test-runner/index.d.ts +16 -0
  119. package/build/src/worker/browser-env/runner/test-runner/index.js +178 -0
  120. package/build/src/worker/browser-env/runner/test-runner/index.js.map +1 -0
  121. package/build/src/worker/browser-env/runner/test-runner/types.d.ts +8 -0
  122. package/build/src/worker/browser-env/runner/test-runner/types.js +11 -0
  123. package/build/src/worker/browser-env/runner/test-runner/types.js.map +1 -0
  124. package/build/src/worker/runner/index.js +9 -2
  125. package/build/src/worker/runner/index.js.map +1 -1
  126. package/build/src/worker/runner/test-runner/index.d.ts +21 -3
  127. package/build/src/worker/runner/test-runner/index.js +21 -9
  128. package/build/src/worker/runner/test-runner/index.js.map +1 -1
  129. package/build/src/worker/runner/test-runner/runner.d.ts +5 -0
  130. package/build/src/worker/runner/test-runner/runner.js +10 -0
  131. package/build/src/worker/runner/test-runner/runner.js.map +1 -0
  132. package/build/src/worker/runner/test-runner/types.d.ts +23 -0
  133. package/build/src/worker/runner/test-runner/types.js +3 -0
  134. package/build/src/worker/runner/test-runner/types.js.map +1 -0
  135. package/package.json +26 -4
  136. package/typings/global.d.ts +6 -0
@@ -0,0 +1,84 @@
1
+ import { expect } from "expect";
2
+ import { ASYMMETRIC_MATCHER } from "./constants.js";
3
+ import { BrowserEventNames } from "./types.js";
4
+ export const initExpect = () => {
5
+ const mockedMatchers = mockMatchers(window.__testplane__.expectMatchers);
6
+ expect.extend(mockedMatchers);
7
+ return expect;
8
+ };
9
+ function mockMatchers(matcherNames) {
10
+ return matcherNames.reduce((acc, matcherName) => {
11
+ acc[matcherName] = mockMatcher(matcherName);
12
+ return acc;
13
+ }, {});
14
+ }
15
+ function mockMatcher(matcherName) {
16
+ const mockMatcherFn = async function (context, ...args) {
17
+ if (typeof args[0] === "object" &&
18
+ "$$typeof" in args[0] &&
19
+ args[0].$$typeof === ASYMMETRIC_MATCHER &&
20
+ args[0].asymmetricMatch) {
21
+ args[0] = {
22
+ $$typeof: args[0].toString(),
23
+ sample: args[0].sample,
24
+ inverse: args[0].inverse,
25
+ };
26
+ }
27
+ const matcherPayload = {
28
+ name: matcherName,
29
+ scope: this,
30
+ args,
31
+ };
32
+ const isContextObject = typeof context === "object";
33
+ /**
34
+ * Check if context is a WebdriverIO.Element
35
+ */
36
+ if (isContextObject && "elementId" in context && typeof context.elementId === "string") {
37
+ matcherPayload.element = context;
38
+ }
39
+ /**
40
+ * Check if context is ChainablePromiseElement
41
+ */
42
+ if (isContextObject && "then" in context && typeof context.selector === "object") {
43
+ matcherPayload.element = await context;
44
+ }
45
+ /**
46
+ * Check if context is an `Element` and transform it into a WebdriverIO.Element
47
+ */
48
+ if (context instanceof Element) {
49
+ matcherPayload.element = await window.browser.$(context);
50
+ }
51
+ else if (isContextObject && !("sessionId" in context)) {
52
+ /**
53
+ * check if context is an object or promise and resolve it
54
+ * but not pass through the browser object
55
+ */
56
+ matcherPayload.context = context;
57
+ if ("then" in context) {
58
+ matcherPayload.context = await context;
59
+ }
60
+ }
61
+ else if (!isContextObject) {
62
+ /**
63
+ * if context is not an object or promise, pass it through
64
+ */
65
+ matcherPayload.context = context;
66
+ }
67
+ /**
68
+ * Avoid serialization issues when sending over the element. If we create
69
+ * an element from an existing HTMLElement, it might have custom properties
70
+ * attached to it that can't be serialized.
71
+ */
72
+ if (matcherPayload.element && typeof matcherPayload.element.selector !== "string") {
73
+ matcherPayload.element.selector = "";
74
+ }
75
+ const { socket, config } = window.__testplane__;
76
+ // TODO: remove type casting after https://github.com/socketio/socket.io/issues/4925
77
+ const [{ pass, message }] = (await socket
78
+ .timeout(config.httpTimeout)
79
+ .emitWithAck(BrowserEventNames.runExpectMatcher, matcherPayload));
80
+ return { pass, message: () => message };
81
+ };
82
+ return mockMatcherFn;
83
+ }
84
+ //# sourceMappingURL=expect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expect.js","sourceRoot":"","sources":["../../../../../../src/runner/browser-env/vite/browser-modules/expect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { io } from "socket.io-client";
2
+ import { BrowserError } from "./errors/index.js";
3
+ import { BROWSER_EVENT_PREFIX } from "./constants.js";
4
+ const connectToSocket = () => {
5
+ const socket = io({
6
+ auth: {
7
+ runUuid: window.__testplane__.runUuid,
8
+ type: BROWSER_EVENT_PREFIX,
9
+ },
10
+ transports: ["websocket"],
11
+ });
12
+ socket.on("connect_error", err => {
13
+ const { runUuid, sessionId, file } = window.__testplane__;
14
+ console.error(`Couldn't connect to the server with "runUuid=${runUuid}", "sessionId=${sessionId} and "file=${file}" due to an error: ${err}`);
15
+ });
16
+ return socket;
17
+ };
18
+ const proxyTool = () => {
19
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
+ const proxyHandler = {
21
+ get(target, prop) {
22
+ return prop in target ? target[prop] : new Proxy(() => { }, this);
23
+ },
24
+ apply() {
25
+ return new Proxy(() => { }, this);
26
+ },
27
+ };
28
+ window.testplane = new Proxy(window.testplane || {}, proxyHandler);
29
+ window.hermione = new Proxy(window.hermione || {}, proxyHandler);
30
+ };
31
+ const subscribeOnBrowserErrors = () => {
32
+ addEventListener("error", e => window.__testplane__.errors.push(BrowserError.create({
33
+ message: e.message,
34
+ stack: e.error.stack,
35
+ file: e.filename,
36
+ })));
37
+ };
38
+ const mockDialog = ({ name, value }) => (...params) => {
39
+ const formatedParams = params.map(p => JSON.stringify(p)).join(", ");
40
+ console.warn(`Testplane encountered a \`${name}(${formatedParams})\` call that would block the web page and won't allow the test to continue, so it was mocked and \`${value}\` was returned instead.`);
41
+ return value;
42
+ };
43
+ const mockBlockingDialogs = () => {
44
+ window.alert = mockDialog({ name: "alert", value: undefined });
45
+ window.confirm = mockDialog({ name: "confirm", value: false });
46
+ window.prompt = mockDialog({ name: "prompt", value: null });
47
+ };
48
+ const mockBuiltInNodeJsModules = () => {
49
+ window.process = window.process || {
50
+ platform: "browser",
51
+ env: {},
52
+ stdout: {},
53
+ stderr: {},
54
+ cwd: () => "",
55
+ };
56
+ };
57
+ window.__testplane__.errors = [];
58
+ window.__testplane__.socket = connectToSocket();
59
+ proxyTool();
60
+ subscribeOnBrowserErrors();
61
+ mockBlockingDialogs();
62
+ mockBuiltInNodeJsModules();
63
+ //# sourceMappingURL=globals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globals.js","sourceRoot":"","sources":["../../../../../../src/runner/browser-env/vite/browser-modules/globals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { remote } from "webdriverio";
2
+ import { automationProtocolPath } from "virtual:@testplane/driver";
3
+ import { MochaWrapper } from "./mocha/index.js";
4
+ import { initExpect } from "./expect.js";
5
+ window.__testplane__.browser = window.browser = await remote({
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ automationProtocol: automationProtocolPath,
8
+ capabilities: window.__testplane__.capabilities,
9
+ });
10
+ window.expect = initExpect();
11
+ const mocha = MochaWrapper.create();
12
+ await mocha.init();
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/runner/browser-env/vite/browser-modules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC;IACzD,8DAA8D;IAC9D,kBAAkB,EAAE,sBAA6B;IACjD,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,YAAY;CAClD,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;AAE7B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;AACpC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const MochaEvents: {
2
+ readonly ADD_SUITE: "suite";
3
+ readonly ADD_TEST: "test";
4
+ readonly ADD_HOOK_BEFORE_EACH: "beforeEach";
5
+ readonly ADD_HOOK_AFTER_EACH: "afterEach";
6
+ };
@@ -0,0 +1,7 @@
1
+ export const MochaEvents = {
2
+ ADD_SUITE: "suite",
3
+ ADD_TEST: "test",
4
+ ADD_HOOK_BEFORE_EACH: "beforeEach",
5
+ ADD_HOOK_AFTER_EACH: "afterEach",
6
+ };
7
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../../../../src/runner/browser-env/vite/browser-modules/mocha/events.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,MAAM;IAChB,oBAAoB,EAAE,YAAY;IAClC,mBAAmB,EAAE,WAAW;CAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare class MochaWrapper {
2
+ private _runnables;
3
+ private _parser;
4
+ private _socket;
5
+ static create<T extends MochaWrapper>(this: new () => T): T;
6
+ constructor();
7
+ init(): Promise<void>;
8
+ private _validate;
9
+ private _subscribeOnWorkerMessages;
10
+ }
@@ -0,0 +1,63 @@
1
+ import { TestParser } from "./parser.js";
2
+ import { wrapConsoleMethods } from "../utils/index.js";
3
+ import { getErrorsOnPageLoad, getErrorsOnRunRunnable, BrowserError } from "../errors/index.js";
4
+ import { BrowserEventNames, WorkerEventNames } from "../types.js";
5
+ export class MochaWrapper {
6
+ _runnables = new Map();
7
+ _parser;
8
+ _socket;
9
+ static create() {
10
+ return new this();
11
+ }
12
+ constructor() {
13
+ this._socket = window.__testplane__.socket;
14
+ this._validate();
15
+ this._parser = TestParser.create();
16
+ }
17
+ async init() {
18
+ mocha.setup("bdd");
19
+ this._subscribeOnWorkerMessages();
20
+ let error = undefined;
21
+ try {
22
+ await this._parser.loadFile(window.__testplane__.file, runnable => {
23
+ this._runnables.set(runnable.fullTitle(), runnable);
24
+ });
25
+ }
26
+ catch (err) {
27
+ error = err;
28
+ }
29
+ this._socket.emit(BrowserEventNames.initialize, getErrorsOnPageLoad(error));
30
+ wrapConsoleMethods();
31
+ }
32
+ _validate() {
33
+ if (!window.Mocha) {
34
+ const error = BrowserError.create({
35
+ message: "Can't find Mocha inside Testplane dependencies. Try to reinstall Testplane.",
36
+ });
37
+ this._socket.emit(BrowserEventNames.initialize, getErrorsOnPageLoad(error));
38
+ throw error;
39
+ }
40
+ }
41
+ _subscribeOnWorkerMessages() {
42
+ this._socket.on(WorkerEventNames.runRunnable, async (payload, cb) => {
43
+ const runnableToRun = this._runnables.get(payload.fullTitle);
44
+ if (!runnableToRun) {
45
+ const error = BrowserError.create({
46
+ message: `Can't find a runnable with the title "${payload.fullTitle}" to run`,
47
+ });
48
+ cb(getErrorsOnRunRunnable(error));
49
+ throw error;
50
+ }
51
+ let error = undefined;
52
+ try {
53
+ const ctx = { browser: window.__testplane__.browser };
54
+ await runnableToRun.fn.call(ctx, ctx);
55
+ }
56
+ catch (err) {
57
+ error = err;
58
+ }
59
+ return cb(getErrorsOnRunRunnable(error));
60
+ });
61
+ }
62
+ }
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/runner/browser-env/vite/browser-modules/mocha/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /// <reference types="mocha" />
2
+ type RunnableHandler = (runnable: Mocha.Runnable) => void;
3
+ export declare class TestParser {
4
+ private _rootSuite;
5
+ static create<T extends TestParser>(this: new () => T): T;
6
+ loadFile(file: string, runnableHandler: RunnableHandler): Promise<void>;
7
+ private _subscribeOnRunnableEvents;
8
+ private _addRecursiveHandler;
9
+ }
10
+ export {};
@@ -0,0 +1,21 @@
1
+ import { MochaEvents } from "./events.js";
2
+ export class TestParser {
3
+ _rootSuite = mocha.suite;
4
+ static create() {
5
+ return new this();
6
+ }
7
+ async loadFile(file, runnableHandler) {
8
+ this._subscribeOnRunnableEvents(runnableHandler);
9
+ await import(file);
10
+ }
11
+ _subscribeOnRunnableEvents(runnableHandler) {
12
+ [MochaEvents.ADD_TEST, MochaEvents.ADD_HOOK_BEFORE_EACH, MochaEvents.ADD_HOOK_AFTER_EACH].forEach(event => {
13
+ this._addRecursiveHandler(this._rootSuite, event, runnableHandler);
14
+ });
15
+ }
16
+ _addRecursiveHandler(suite, event, cb) {
17
+ suite.on(MochaEvents.ADD_SUITE, subSuite => this._addRecursiveHandler(subSuite, event, cb));
18
+ suite.on(event, cb);
19
+ }
20
+ }
21
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../../../src/runner/browser-env/vite/browser-modules/mocha/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,OAAO,UAAU;IACX,UAAU,GAAgB,KAAK,CAAC,KAAK,CAAC;IAE9C,MAAM,CAAC,MAAM;QACT,OAAO,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,eAAgC;QACzD,IAAI,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC;QAEjD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAEO,0BAA0B,CAAC,eAAgC;QAC/D,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,oBAAoB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,oBAAoB,CACxB,KAAkB,EAClB,KAAkC,EAClC,EAAsC;QAEtC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAuB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3G,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxB,CAAC;CACJ"}