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.
- package/README.md +8 -6
- package/build/package.json +26 -4
- package/build/src/browser/browser.d.ts +3 -1
- package/build/src/browser/browser.js +12 -6
- package/build/src/browser/browser.js.map +1 -1
- package/build/src/browser/existing-browser.js +5 -1
- package/build/src/browser/existing-browser.js.map +1 -1
- package/build/src/browser/new-browser.d.ts +4 -4
- package/build/src/browser/screen-shooter/viewport/coord-validator/index.d.ts +2 -1
- package/build/src/browser/types.d.ts +3 -0
- package/build/src/browser-pool/basic-pool.d.ts +2 -1
- package/build/src/browser-pool/caching-pool.d.ts +2 -1
- package/build/src/browser-pool/limited-pool.d.ts +2 -1
- package/build/src/browser-pool/limited-use-set.d.ts +2 -1
- package/build/src/browser-pool/per-browser-limited-pool.d.ts +2 -1
- package/build/src/bundle/index.js +2004 -0
- package/build/src/config/defaults.d.ts +2 -1
- package/build/src/config/defaults.js +3 -2
- package/build/src/config/defaults.js.map +1 -1
- package/build/src/config/options.js +25 -0
- package/build/src/config/options.js.map +1 -1
- package/build/src/config/types.d.ts +7 -1
- package/build/src/constants/config.d.ts +2 -0
- package/build/src/constants/config.js +2 -0
- package/build/src/constants/config.js.map +1 -1
- package/build/src/runner/browser-env/index.d.ts +12 -0
- package/build/src/runner/browser-env/index.js +34 -0
- package/build/src/runner/browser-env/index.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/constants.d.ts +17 -0
- package/build/src/runner/browser-env/vite/browser-modules/constants.js +20 -0
- package/build/src/runner/browser-env/vite/browser-modules/constants.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/driver.d.ts +3 -0
- package/build/src/runner/browser-env/vite/browser-modules/driver.js +113 -0
- package/build/src/runner/browser-env/vite/browser-modules/driver.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/base.d.ts +6 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/base.js +10 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/base.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/browser.d.ts +12 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/browser.js +14 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/browser.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/index.d.ts +10 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/index.js +44 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/index.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/load-page.d.ts +10 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/load-page.js +10 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/load-page.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/vite-runtime.d.ts +17 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/vite-runtime.js +17 -0
- package/build/src/runner/browser-env/vite/browser-modules/errors/vite-runtime.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/expect.d.ts +2 -0
- package/build/src/runner/browser-env/vite/browser-modules/expect.js +84 -0
- package/build/src/runner/browser-env/vite/browser-modules/expect.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/globals.d.ts +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/globals.js +63 -0
- package/build/src/runner/browser-env/vite/browser-modules/globals.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/index.d.ts +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/index.js +13 -0
- package/build/src/runner/browser-env/vite/browser-modules/index.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/events.d.ts +6 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/events.js +7 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/events.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/index.d.ts +10 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/index.js +63 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/index.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/parser.d.ts +10 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/parser.js +21 -0
- package/build/src/runner/browser-env/vite/browser-modules/mocha/parser.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/tsconfig.tsbuildinfo +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/types.d.ts +92 -0
- package/build/src/runner/browser-env/vite/browser-modules/types.js +16 -0
- package/build/src/runner/browser-env/vite/browser-modules/types.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/utils/console.d.ts +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/utils/console.js +13 -0
- package/build/src/runner/browser-env/vite/browser-modules/utils/console.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/utils/index.d.ts +2 -0
- package/build/src/runner/browser-env/vite/browser-modules/utils/index.js +3 -0
- package/build/src/runner/browser-env/vite/browser-modules/utils/index.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/utils/selector.d.ts +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/utils/selector.js +4 -0
- package/build/src/runner/browser-env/vite/browser-modules/utils/selector.js.map +1 -0
- package/build/src/runner/browser-env/vite/constants.d.ts +13 -0
- package/build/src/runner/browser-env/vite/constants.js +18 -0
- package/build/src/runner/browser-env/vite/constants.js.map +1 -0
- package/build/src/runner/browser-env/vite/plugins/generate-index-html.d.ts +2 -0
- package/build/src/runner/browser-env/vite/plugins/generate-index-html.js +148 -0
- package/build/src/runner/browser-env/vite/plugins/generate-index-html.js.map +1 -0
- package/build/src/runner/browser-env/vite/server.d.ts +14 -0
- package/build/src/runner/browser-env/vite/server.js +117 -0
- package/build/src/runner/browser-env/vite/server.js.map +1 -0
- package/build/src/runner/browser-env/vite/socket.d.ts +2 -0
- package/build/src/runner/browser-env/vite/socket.js +106 -0
- package/build/src/runner/browser-env/vite/socket.js.map +1 -0
- package/build/src/runner/browser-env/vite/types.d.ts +16 -0
- package/build/src/runner/browser-env/vite/types.js +13 -0
- package/build/src/runner/browser-env/vite/types.js.map +1 -0
- package/build/src/runner/browser-env/vite/utils.d.ts +7 -0
- package/build/src/runner/browser-env/vite/utils.js +26 -0
- package/build/src/runner/browser-env/vite/utils.js.map +1 -0
- package/build/src/test-reader/test-parser.js +3 -0
- package/build/src/test-reader/test-parser.js.map +1 -1
- package/build/src/test-reader/test-transformer.d.ts +2 -0
- package/build/src/test-reader/test-transformer.js +8 -0
- package/build/src/test-reader/test-transformer.js.map +1 -0
- package/build/src/testplane.d.ts +3 -2
- package/build/src/testplane.js +3 -1
- package/build/src/testplane.js.map +1 -1
- package/build/src/types/index.d.ts +7 -2
- package/build/src/types/index.js.map +1 -1
- package/build/src/utils/config.d.ts +2 -0
- package/build/src/utils/config.js +9 -0
- package/build/src/utils/config.js.map +1 -0
- package/build/src/worker/browser-env/runner/test-runner/constants.d.ts +10 -0
- package/build/src/worker/browser-env/runner/test-runner/constants.js +14 -0
- package/build/src/worker/browser-env/runner/test-runner/constants.js.map +1 -0
- package/build/src/worker/browser-env/runner/test-runner/execution-thread.d.ts +3 -0
- package/build/src/worker/browser-env/runner/test-runner/execution-thread.js +40 -0
- package/build/src/worker/browser-env/runner/test-runner/execution-thread.js.map +1 -0
- package/build/src/worker/browser-env/runner/test-runner/index.d.ts +16 -0
- package/build/src/worker/browser-env/runner/test-runner/index.js +178 -0
- package/build/src/worker/browser-env/runner/test-runner/index.js.map +1 -0
- package/build/src/worker/browser-env/runner/test-runner/types.d.ts +8 -0
- package/build/src/worker/browser-env/runner/test-runner/types.js +11 -0
- package/build/src/worker/browser-env/runner/test-runner/types.js.map +1 -0
- package/build/src/worker/runner/index.js +9 -2
- package/build/src/worker/runner/index.js.map +1 -1
- package/build/src/worker/runner/test-runner/index.d.ts +21 -3
- package/build/src/worker/runner/test-runner/index.js +21 -9
- package/build/src/worker/runner/test-runner/index.js.map +1 -1
- package/build/src/worker/runner/test-runner/runner.d.ts +5 -0
- package/build/src/worker/runner/test-runner/runner.js +10 -0
- package/build/src/worker/runner/test-runner/runner.js.map +1 -0
- package/build/src/worker/runner/test-runner/types.d.ts +23 -0
- package/build/src/worker/runner/test-runner/types.js +3 -0
- package/build/src/worker/runner/test-runner/types.js.map +1 -0
- package/package.json +26 -4
- 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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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 @@
|
|
|
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"}
|