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,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.plugin = void 0;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const node_url_1 = __importDefault(require("node:url"));
|
|
9
|
+
const node_module_1 = require("node:module");
|
|
10
|
+
const debug_1 = __importDefault(require("debug"));
|
|
11
|
+
const modern_node_polyfills_1 = require("modern-node-polyfills");
|
|
12
|
+
const constants_1 = require("../constants");
|
|
13
|
+
const utils_1 = require("../utils");
|
|
14
|
+
const logger_1 = __importDefault(require("../../../../utils/logger"));
|
|
15
|
+
const debug = (0, debug_1.default)("vite:plugin:generateIndexHtml");
|
|
16
|
+
// modules that used only in NodeJS environment and don't need to be compiled
|
|
17
|
+
const MODULES_TO_MOCK = ["import-meta-resolve", "puppeteer-core", "archiver", "@wdio/repl"];
|
|
18
|
+
const POLYFILLS = [...node_module_1.builtinModules, ...node_module_1.builtinModules.map(m => `node:${m}`)];
|
|
19
|
+
const virtualDriverModuleId = "virtual:@testplane/driver";
|
|
20
|
+
const virtualMockModuleId = "virtual:@testplane/mock";
|
|
21
|
+
const virtualModules = {
|
|
22
|
+
driver: {
|
|
23
|
+
id: virtualDriverModuleId,
|
|
24
|
+
resolvedId: `\0${virtualDriverModuleId}`,
|
|
25
|
+
},
|
|
26
|
+
mock: {
|
|
27
|
+
id: virtualMockModuleId,
|
|
28
|
+
resolvedId: `\0${virtualMockModuleId}`,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const plugin = async () => {
|
|
32
|
+
const mochaPackagePath = await (0, utils_1.getNodeModulePath)({
|
|
33
|
+
moduleName: "mocha",
|
|
34
|
+
parent: node_path_1.default.join("node_modules", "testplane", "node_modules"),
|
|
35
|
+
});
|
|
36
|
+
const mochaModulePath = node_path_1.default.join(node_url_1.default.fileURLToPath(node_path_1.default.dirname(mochaPackagePath)), "mocha.js");
|
|
37
|
+
const dirname = node_url_1.default.fileURLToPath(new URL(".", (0, utils_1.getImportMetaUrl)(__filename)));
|
|
38
|
+
const browserModulesPath = node_path_1.default.resolve(dirname, "..", "browser-modules");
|
|
39
|
+
const browserRunnerModulePath = node_path_1.default.resolve(browserModulesPath, "index.js");
|
|
40
|
+
const globalsModulePath = node_path_1.default.resolve(browserModulesPath, "globals.js");
|
|
41
|
+
const driverModulePath = node_path_1.default.resolve(browserModulesPath, "driver.js");
|
|
42
|
+
const automationProtocolPath = `/@fs${driverModulePath}`;
|
|
43
|
+
return [
|
|
44
|
+
{
|
|
45
|
+
name: "testplane:generateIndexHtml",
|
|
46
|
+
enforce: "pre",
|
|
47
|
+
configureServer(server) {
|
|
48
|
+
return () => {
|
|
49
|
+
server.middlewares.use(async (req, res, next) => {
|
|
50
|
+
debug(`Received request for: ${req.originalUrl}`);
|
|
51
|
+
if (!req.url?.endsWith("index.html") || !req.originalUrl) {
|
|
52
|
+
return next();
|
|
53
|
+
}
|
|
54
|
+
const urlParsed = node_url_1.default.parse(req.originalUrl);
|
|
55
|
+
const urlParamString = new URLSearchParams(urlParsed.query || "");
|
|
56
|
+
try {
|
|
57
|
+
const runUuid = urlParamString.get("runUuid");
|
|
58
|
+
if (!runUuid) {
|
|
59
|
+
throw new Error(`Query parameter "runUuid" must be specified in url: ${req.originalUrl}`);
|
|
60
|
+
}
|
|
61
|
+
const env = constants_1.WORKER_ENV_BY_RUN_UUID.get(runUuid);
|
|
62
|
+
if (!env) {
|
|
63
|
+
throw new Error(`Worker environment is not found by "runUuid=${runUuid}". ` +
|
|
64
|
+
"This is possible if:\n" +
|
|
65
|
+
' - "runUuid" is not generated by Testplane\n' +
|
|
66
|
+
" - the test has already been completed\n" +
|
|
67
|
+
" - worker was disconnected");
|
|
68
|
+
}
|
|
69
|
+
const template = generateTemplate(env, runUuid);
|
|
70
|
+
res.end(await server.transformIndexHtml(`${req.originalUrl}`, template));
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
const template = generateErrorTemplate(err);
|
|
74
|
+
logger_1.default.error(`Failed to render template: ${err}`);
|
|
75
|
+
res.end(await server.transformIndexHtml(`${req.originalUrl}`, template));
|
|
76
|
+
}
|
|
77
|
+
return next();
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
resolveId: async (id) => {
|
|
82
|
+
if (id === virtualModules.driver.id) {
|
|
83
|
+
return virtualModules.driver.resolvedId;
|
|
84
|
+
}
|
|
85
|
+
if (id.endsWith(constants_1.MODULE_NAMES.browserRunner)) {
|
|
86
|
+
return browserRunnerModulePath;
|
|
87
|
+
}
|
|
88
|
+
if (id.endsWith(constants_1.MODULE_NAMES.globals)) {
|
|
89
|
+
return globalsModulePath;
|
|
90
|
+
}
|
|
91
|
+
if (id.endsWith(constants_1.MODULE_NAMES.mocha)) {
|
|
92
|
+
return mochaModulePath;
|
|
93
|
+
}
|
|
94
|
+
if (POLYFILLS.includes(id)) {
|
|
95
|
+
return (0, modern_node_polyfills_1.polyfillPath)(id.replace("/promises", ""));
|
|
96
|
+
}
|
|
97
|
+
if (MODULES_TO_MOCK.includes(id)) {
|
|
98
|
+
return virtualModules.mock.resolvedId;
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
load: (id) => {
|
|
102
|
+
if (id === virtualModules.driver.resolvedId) {
|
|
103
|
+
return `export const automationProtocolPath = ${JSON.stringify(automationProtocolPath)};`;
|
|
104
|
+
}
|
|
105
|
+
if (id === virtualModules.mock.resolvedId) {
|
|
106
|
+
return ["export default () => {};", "export const resolve = () => ''"].join("\n");
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
transform(code, id) {
|
|
110
|
+
if (id.includes(".vite/deps/expect.js")) {
|
|
111
|
+
return {
|
|
112
|
+
code: code.replace("var fs = _interopRequireWildcard(require_graceful_fs());", "var fs = {};"),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return { code };
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
];
|
|
119
|
+
};
|
|
120
|
+
exports.plugin = plugin;
|
|
121
|
+
function generateTemplate(env, runUuid) {
|
|
122
|
+
return `
|
|
123
|
+
<!DOCTYPE html>
|
|
124
|
+
<html>
|
|
125
|
+
<head>
|
|
126
|
+
<title>Testplane Browser Test</title>
|
|
127
|
+
<script type="module">
|
|
128
|
+
window.__testplane__ = ${JSON.stringify({ runUuid, ...env })};
|
|
129
|
+
</script>
|
|
130
|
+
<script type="module" src="${constants_1.MODULE_NAMES.globals}"></script>
|
|
131
|
+
<script type="module" src="${constants_1.MODULE_NAMES.mocha}"></script>
|
|
132
|
+
<script type="module" src="${constants_1.MODULE_NAMES.browserRunner}"></script>
|
|
133
|
+
</head>
|
|
134
|
+
<body></body>
|
|
135
|
+
</html>
|
|
136
|
+
`;
|
|
137
|
+
}
|
|
138
|
+
function generateErrorTemplate(error) {
|
|
139
|
+
return `
|
|
140
|
+
<!DOCTYPE html>
|
|
141
|
+
<html>
|
|
142
|
+
<body>
|
|
143
|
+
<pre>${error.stack}</pre>
|
|
144
|
+
</body>
|
|
145
|
+
</html>
|
|
146
|
+
`;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=generate-index-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-index-html.js","sourceRoot":"","sources":["../../../../../../src/runner/browser-env/vite/plugins/generate-index-html.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Config } from "../../../config";
|
|
2
|
+
export declare class ViteServer {
|
|
3
|
+
private _testplaneConfig;
|
|
4
|
+
private _viteConfig;
|
|
5
|
+
private _options?;
|
|
6
|
+
private _server?;
|
|
7
|
+
static create<T extends ViteServer>(this: new (testplaneConfig: Config) => T, testplaneConfig: Config): T;
|
|
8
|
+
constructor(testplaneConfig: Config);
|
|
9
|
+
start(): Promise<void>;
|
|
10
|
+
close(): Promise<void>;
|
|
11
|
+
private _applyUserViteConfig;
|
|
12
|
+
private _addRequiredVitePlugins;
|
|
13
|
+
get baseUrl(): string | undefined;
|
|
14
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.ViteServer = void 0;
|
|
30
|
+
// remove after migrate to esm
|
|
31
|
+
process.env.VITE_CJS_IGNORE_WARNING = "1";
|
|
32
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
33
|
+
const vite_1 = require("vite");
|
|
34
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
35
|
+
const get_port_1 = __importDefault(require("get-port"));
|
|
36
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
37
|
+
const logger_1 = __importDefault(require("../../../utils/logger"));
|
|
38
|
+
const socket_1 = require("./socket");
|
|
39
|
+
const generate_index_html_1 = require("./plugins/generate-index-html");
|
|
40
|
+
const constants_1 = require("./constants");
|
|
41
|
+
class ViteServer {
|
|
42
|
+
static create(testplaneConfig) {
|
|
43
|
+
return new this(testplaneConfig);
|
|
44
|
+
}
|
|
45
|
+
constructor(testplaneConfig) {
|
|
46
|
+
this._testplaneConfig = testplaneConfig;
|
|
47
|
+
this._viteConfig = {
|
|
48
|
+
server: { host: "localhost" },
|
|
49
|
+
configFile: false,
|
|
50
|
+
logLevel: "silent",
|
|
51
|
+
build: {
|
|
52
|
+
sourcemap: "inline",
|
|
53
|
+
},
|
|
54
|
+
optimizeDeps: {
|
|
55
|
+
// listed deps are CJS packages and need to be compiled to ESM by Vite
|
|
56
|
+
include: [
|
|
57
|
+
"expect",
|
|
58
|
+
// webdriverio deps
|
|
59
|
+
"aria-query",
|
|
60
|
+
"css-shorthand-properties",
|
|
61
|
+
"css-value",
|
|
62
|
+
"grapheme-splitter",
|
|
63
|
+
"lodash.clonedeep",
|
|
64
|
+
"lodash.zip",
|
|
65
|
+
"minimatch",
|
|
66
|
+
"rgb2hex",
|
|
67
|
+
"ws",
|
|
68
|
+
],
|
|
69
|
+
esbuildOptions: {
|
|
70
|
+
logLevel: "silent",
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
this._options = lodash_1.default.isArray(this._testplaneConfig.system.testRunEnv)
|
|
75
|
+
? this._testplaneConfig.system.testRunEnv[1]
|
|
76
|
+
: undefined;
|
|
77
|
+
}
|
|
78
|
+
async start() {
|
|
79
|
+
await this._applyUserViteConfig();
|
|
80
|
+
await this._addRequiredVitePlugins();
|
|
81
|
+
if (!this._viteConfig.server.port) {
|
|
82
|
+
this._viteConfig.server.port = await (0, get_port_1.default)();
|
|
83
|
+
}
|
|
84
|
+
this._server = await (0, vite_1.createServer)(this._viteConfig);
|
|
85
|
+
(0, socket_1.createSocketServer)(this._server.httpServer);
|
|
86
|
+
await this._server.listen();
|
|
87
|
+
logger_1.default.log(chalk_1.default.green(`Vite server started on ${this.baseUrl}`));
|
|
88
|
+
}
|
|
89
|
+
async close() {
|
|
90
|
+
await this._server?.close();
|
|
91
|
+
}
|
|
92
|
+
async _applyUserViteConfig() {
|
|
93
|
+
if (!this._options?.viteConfig) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const config = this._options.viteConfig;
|
|
97
|
+
let preparedConfig;
|
|
98
|
+
if (lodash_1.default.isString(config)) {
|
|
99
|
+
preparedConfig = (await Promise.resolve(`${node_path_1.default.resolve(process.cwd(), config)}`).then(s => __importStar(require(s)))).default;
|
|
100
|
+
}
|
|
101
|
+
else if (lodash_1.default.isFunction(config)) {
|
|
102
|
+
preparedConfig = await config(constants_1.VITE_DEFAULT_CONFIG_ENV);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
preparedConfig = config;
|
|
106
|
+
}
|
|
107
|
+
this._viteConfig = lodash_1.default.merge(this._viteConfig, preparedConfig);
|
|
108
|
+
}
|
|
109
|
+
async _addRequiredVitePlugins() {
|
|
110
|
+
this._viteConfig.plugins = [...(this._viteConfig.plugins || []), await (0, generate_index_html_1.plugin)()];
|
|
111
|
+
}
|
|
112
|
+
get baseUrl() {
|
|
113
|
+
return this._server?.resolvedUrls.local[0];
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.ViteServer = ViteServer;
|
|
117
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../../src/runner/browser-env/vite/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createSocketServer = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const socket_io_1 = require("socket.io");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const constants_2 = require("../../../worker/browser-env/runner/test-runner/constants");
|
|
11
|
+
const types_1 = require("./types");
|
|
12
|
+
const types_2 = require("../../../worker/browser-env/runner/test-runner/types");
|
|
13
|
+
const utils_1 = require("./utils");
|
|
14
|
+
const createSocketServer = (viteHttpServer) => {
|
|
15
|
+
const io = new socket_io_1.Server(viteHttpServer);
|
|
16
|
+
io.use((socket, next) => {
|
|
17
|
+
const { runUuid, type } = socket.handshake.auth;
|
|
18
|
+
if (!runUuid) {
|
|
19
|
+
return next(new Error('"runUuid" must be specified in each socket request'));
|
|
20
|
+
}
|
|
21
|
+
if (type === constants_2.WORKER_EVENT_PREFIX) {
|
|
22
|
+
return next();
|
|
23
|
+
}
|
|
24
|
+
const roomSocketCount = io.of("/").adapter.rooms.get(runUuid)?.size || 0;
|
|
25
|
+
if (roomSocketCount >= 2) {
|
|
26
|
+
return next(new Error(`Browser with "runUuid=${runUuid}" is already connected to Vite server. To debug, you need to use a browser launched by Testplane`));
|
|
27
|
+
}
|
|
28
|
+
return next();
|
|
29
|
+
});
|
|
30
|
+
io.on("connection", socket => {
|
|
31
|
+
if (socket.handshake.auth.type === constants_2.WORKER_EVENT_PREFIX) {
|
|
32
|
+
handleWorkerEvents(socket, io);
|
|
33
|
+
}
|
|
34
|
+
if (socket.handshake.auth.type === constants_1.BROWSER_EVENT_PREFIX) {
|
|
35
|
+
handleBrowserEvents(socket, io);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
exports.createSocketServer = createSocketServer;
|
|
40
|
+
function handleWorkerEvents(socket, io) {
|
|
41
|
+
socket.on(types_2.WorkerEventNames.initialize, payload => {
|
|
42
|
+
const { runUuid } = socket.handshake.auth;
|
|
43
|
+
socket.join(runUuid);
|
|
44
|
+
constants_1.WORKER_ENV_BY_RUN_UUID.set(runUuid, payload);
|
|
45
|
+
});
|
|
46
|
+
socket.on(types_2.WorkerEventNames.finalize, () => {
|
|
47
|
+
const { runUuid } = socket.handshake.auth;
|
|
48
|
+
io.socketsLeave(runUuid);
|
|
49
|
+
constants_1.WORKER_ENV_BY_RUN_UUID.delete(socket.handshake.auth.runUuid);
|
|
50
|
+
});
|
|
51
|
+
socket.on(types_2.WorkerEventNames.runRunnable, async (payload, cb) => {
|
|
52
|
+
const { runUuid } = socket.handshake.auth;
|
|
53
|
+
try {
|
|
54
|
+
// specify timeout is not necessary here, but types incorrectly defined without it. So use maximum possible value
|
|
55
|
+
const [errors] = await io
|
|
56
|
+
.to(runUuid)
|
|
57
|
+
.except(socket.id)
|
|
58
|
+
.timeout(constants_1.SOCKET_MAX_TIMEOUT)
|
|
59
|
+
.emitWithAck(types_2.WorkerEventNames.runRunnable, payload);
|
|
60
|
+
cb([(lodash_1.default.isEmpty(errors) ? null : errors[0])]);
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
cb([(0, utils_1.prepareError)(err)]);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function handleBrowserEvents(socket, io) {
|
|
68
|
+
socket.on(types_1.BrowserEventNames.initialize, payload => {
|
|
69
|
+
const { runUuid } = socket.handshake.auth;
|
|
70
|
+
socket.join(runUuid);
|
|
71
|
+
io.to(runUuid).except(socket.id).emit(types_1.BrowserEventNames.initialize, payload);
|
|
72
|
+
});
|
|
73
|
+
socket.on(types_1.BrowserEventNames.callConsoleMethod, payload => {
|
|
74
|
+
const { runUuid } = socket.handshake.auth;
|
|
75
|
+
io.to(runUuid).except(socket.id).emit(types_1.BrowserEventNames.callConsoleMethod, payload);
|
|
76
|
+
});
|
|
77
|
+
socket.on(types_1.BrowserEventNames.runBrowserCommand, async (payload, cb) => {
|
|
78
|
+
const { runUuid } = socket.handshake.auth;
|
|
79
|
+
try {
|
|
80
|
+
const [response] = await io
|
|
81
|
+
.to(runUuid)
|
|
82
|
+
.except(socket.id)
|
|
83
|
+
.timeout(constants_1.SOCKET_MAX_TIMEOUT)
|
|
84
|
+
.emitWithAck(types_1.BrowserEventNames.runBrowserCommand, payload);
|
|
85
|
+
cb(response);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
cb([err]);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
socket.on(types_1.BrowserEventNames.runExpectMatcher, async (payload, cb) => {
|
|
92
|
+
const { runUuid } = socket.handshake.auth;
|
|
93
|
+
try {
|
|
94
|
+
const [response] = await io
|
|
95
|
+
.to(runUuid)
|
|
96
|
+
.except(socket.id)
|
|
97
|
+
.timeout(constants_1.SOCKET_MAX_TIMEOUT)
|
|
98
|
+
.emitWithAck(types_1.BrowserEventNames.runExpectMatcher, payload);
|
|
99
|
+
cb(response);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
cb([{ pass: false, message: err.message }]);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../../../src/runner/browser-env/vite/socket.ts"],"names":[],"mappings":";;;;;;AACA,oDAAuB;AACvB,yCAA6E;AAE7E,2CAA+F;AAC/F,wFAA+F;AAC/F,mCAA4C;AAC5C,gFAAwF;AACxF,mCAAuC;AAahC,MAAM,kBAAkB,GAAG,CAAC,cAA2C,EAAQ,EAAE;IACpF,MAAM,EAAE,GAAG,IAAI,kBAAY,CAAqC,cAA6B,CAAC,CAAC;IAE/F,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAA2B,CAAC;QAEvE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,IAAI,KAAK,+BAAmB,EAAE,CAAC;YAC/B,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;QAEzE,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CACP,IAAI,KAAK,CACL,yBAAyB,OAAO,kGAAkG,CACrI,CACJ,CAAC;QACN,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;QACzB,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,+BAAmB,EAAE,CAAC;YACrD,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,gCAAoB,EAAE,CAAC;YACtD,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AApCW,QAAA,kBAAkB,sBAoC7B;AAEF,SAAS,kBAAkB,CACvB,MAAkD,EAClD,EAA8C;IAE9C,MAAM,CAAC,EAAE,CAAC,wBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;QAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAErB,kCAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,wBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1C,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEzB,kCAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,wBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;QAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QAE1C,IAAI,CAAC;YACD,iHAAiH;YACjH,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;iBACpB,EAAE,CAAC,OAAO,CAAC;iBACX,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;iBACjB,OAAO,CAAC,8BAAkB,CAAC;iBAC3B,WAAW,CAAC,wBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAExD,EAAE,CAAC,CAAC,CAAC,gBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAO,CAAC,CAAC,CAAC,CAAU,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,IAAA,oBAAY,EAAC,GAAY,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CACxB,MAAkD,EAClD,EAA8C;IAE9C,MAAM,CAAC,EAAE,CAAC,yBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;QAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAErB,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,yBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAiB,CAAC,iBAAiB,EAAE,OAAO,CAAC,EAAE;QACrD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QAE1C,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,yBAAiB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAiB,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;QACjE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QAE1C,IAAI,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;iBACtB,EAAE,CAAC,OAAO,CAAC;iBACX,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;iBACjB,OAAO,CAAC,8BAAkB,CAAC;iBAC3B,WAAW,CAAC,yBAAiB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAE/D,EAAE,CAAC,QAAQ,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,GAAY,CAAC,CAAC,CAAC;QACvB,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAiB,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE;QAChE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QAE1C,IAAI,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;iBACtB,EAAE,CAAC,OAAO,CAAC;iBACX,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;iBACjB,OAAO,CAAC,8BAAkB,CAAC;iBAC3B,WAAW,CAAC,yBAAiB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAE9D,EAAE,CAAC,QAAQ,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { InlineConfig, ConfigEnv } from "vite";
|
|
2
|
+
import type { BrowserViteEvents, WorkerViteEvents, ViteBrowserEvents } from "./browser-modules/types";
|
|
3
|
+
export type { BrowserViteEvents, WorkerViteEvents } from "./browser-modules/types";
|
|
4
|
+
export interface BrowserTestRunEnvOptions {
|
|
5
|
+
viteConfig?: string | InlineConfig | ((env: ConfigEnv) => InlineConfig | Promise<InlineConfig>);
|
|
6
|
+
}
|
|
7
|
+
export interface ClientViteEvents extends BrowserViteEvents, WorkerViteEvents {
|
|
8
|
+
}
|
|
9
|
+
export interface ViteClientEvents extends BrowserViteEvents, ViteBrowserEvents {
|
|
10
|
+
}
|
|
11
|
+
export declare enum BrowserEventNames {
|
|
12
|
+
initialize = "browser:initialize",
|
|
13
|
+
runBrowserCommand = "browser:runBrowserCommand",
|
|
14
|
+
runExpectMatcher = "browser:runExpectMatcher",
|
|
15
|
+
callConsoleMethod = "browser:callConsoleMethod"
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrowserEventNames = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
// TODO: use from "./browser-modules/types" after migrate to esm
|
|
6
|
+
var BrowserEventNames;
|
|
7
|
+
(function (BrowserEventNames) {
|
|
8
|
+
BrowserEventNames["initialize"] = "browser:initialize";
|
|
9
|
+
BrowserEventNames["runBrowserCommand"] = "browser:runBrowserCommand";
|
|
10
|
+
BrowserEventNames["runExpectMatcher"] = "browser:runExpectMatcher";
|
|
11
|
+
BrowserEventNames["callConsoleMethod"] = "browser:callConsoleMethod";
|
|
12
|
+
})(BrowserEventNames || (exports.BrowserEventNames = BrowserEventNames = {}));
|
|
13
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/runner/browser-env/vite/types.ts"],"names":[],"mappings":";;;AAAA,2CAAmD;AAanD,gEAAgE;AAChE,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,sDAAiD,CAAA;IACjD,oEAA+D,CAAA;IAC/D,kEAA6D,CAAA;IAC7D,oEAA+D,CAAA;AACnE,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const getImportMetaUrl: (path: string) => string;
|
|
2
|
+
export declare const getNodeModulePath: ({ moduleName, rootDir, parent, }: {
|
|
3
|
+
moduleName: string;
|
|
4
|
+
rootDir?: string | undefined;
|
|
5
|
+
parent?: string | undefined;
|
|
6
|
+
}) => Promise<string>;
|
|
7
|
+
export declare const prepareError: (error: Error) => Error;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.prepareError = exports.getNodeModulePath = exports.getImportMetaUrl = void 0;
|
|
7
|
+
const node_url_1 = __importDefault(require("node:url"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
// TODO: use import.meta.url after migrate to esm
|
|
10
|
+
const getImportMetaUrl = (path) => {
|
|
11
|
+
return node_url_1.default.pathToFileURL(path).toString();
|
|
12
|
+
};
|
|
13
|
+
exports.getImportMetaUrl = getImportMetaUrl;
|
|
14
|
+
const getNodeModulePath = async ({ moduleName, rootDir = process.cwd(), parent = "node_modules", }) => {
|
|
15
|
+
const rootFileUrl = node_url_1.default.pathToFileURL(rootDir).href;
|
|
16
|
+
// TODO: use import at the beginning of the file after migrate to esm
|
|
17
|
+
const { resolve } = await eval(`import("import-meta-resolve")`);
|
|
18
|
+
return resolve(moduleName, node_path_1.default.join(rootFileUrl, parent));
|
|
19
|
+
};
|
|
20
|
+
exports.getNodeModulePath = getNodeModulePath;
|
|
21
|
+
// TODO: use from browser code after migrate to esm
|
|
22
|
+
const prepareError = (error) => {
|
|
23
|
+
return JSON.parse(JSON.stringify(error, Object.getOwnPropertyNames(error)));
|
|
24
|
+
};
|
|
25
|
+
exports.prepareError = prepareError;
|
|
26
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/runner/browser-env/vite/utils.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA2B;AAC3B,0DAA6B;AAE7B,iDAAiD;AAC1C,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE;IACrD,OAAO,kBAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9C,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AAEK,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACpC,UAAU,EACV,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,EACvB,MAAM,GAAG,cAAc,GAK1B,EAAmB,EAAE;IAClB,MAAM,WAAW,GAAG,kBAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAEpD,qEAAqE;IACrE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAEhE,OAAO,OAAO,CAAC,UAAU,EAAE,mBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAfW,QAAA,iBAAiB,qBAe5B;AAEF,mDAAmD;AAC5C,MAAM,YAAY,GAAG,CAAC,KAAY,EAAS,EAAE;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB"}
|
|
@@ -21,6 +21,7 @@ const { TreeBuilder } = require("./tree-builder");
|
|
|
21
21
|
const { readFiles } = require("./mocha-reader");
|
|
22
22
|
const { TestReaderEvents } = require("../events");
|
|
23
23
|
const { TestParserAPI } = require("./test-parser-api");
|
|
24
|
+
const { setupTransformHook } = require("./test-transformer");
|
|
24
25
|
const { MasterEvents } = require("../events");
|
|
25
26
|
const _ = require("lodash");
|
|
26
27
|
const clearRequire = require("clear-require");
|
|
@@ -52,9 +53,11 @@ class TestParser extends EventEmitter {
|
|
|
52
53
|
__classPrivateFieldGet(this, _TestParser_instances, "m", _TestParser_applyInstructionsEvents).call(this, eventBus);
|
|
53
54
|
__classPrivateFieldGet(this, _TestParser_instances, "m", _TestParser_passthroughFileEvents).call(this, eventBus, toolGlobals);
|
|
54
55
|
__classPrivateFieldGet(this, _TestParser_instances, "m", _TestParser_clearRequireCache).call(this, files);
|
|
56
|
+
const revertTransformHook = setupTransformHook();
|
|
55
57
|
const rand = Math.random();
|
|
56
58
|
const esmDecorator = f => f + `?rand=${rand}`;
|
|
57
59
|
await readFiles(files, { esmDecorator, config: mochaOpts, eventBus });
|
|
60
|
+
revertTransformHook();
|
|
58
61
|
}
|
|
59
62
|
parse(files, { browserId, config, grep }) {
|
|
60
63
|
const treeBuilder = new TreeBuilder();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-parser.js","sourceRoot":"","sources":["../../../src/test-reader/test-parser.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test-parser.js","sourceRoot":"","sources":["../../../src/test-reader/test-parser.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TRANSFORM_EXTENSIONS = exports.setupTransformHook = void 0;
|
|
5
|
+
// TODO: use import instead require. Currently require is used because ts build filed from bundle folder even if it excluded in tsconfig
|
|
6
|
+
exports.setupTransformHook = require("../bundle").setupTransformHook;
|
|
7
|
+
exports.TRANSFORM_EXTENSIONS = require("../bundle").TRANSFORM_EXTENSIONS;
|
|
8
|
+
//# sourceMappingURL=test-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-transformer.js","sourceRoot":"","sources":["../../../src/test-reader/test-transformer.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAEvD,wIAAwI;AAC3H,QAAA,kBAAkB,GAAuB,OAAO,CAAC,WAAW,CAAC,CAAC,kBAAkB,CAAC;AACjF,QAAA,oBAAoB,GAAa,OAAO,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC"}
|
package/build/src/testplane.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CommanderStatic } from "@gemini-testing/commander";
|
|
2
2
|
import { BaseTestplane } from "./base-testplane";
|
|
3
|
-
import { MainRunner } from "./runner";
|
|
3
|
+
import { MainRunner as NodejsEnvRunner } from "./runner";
|
|
4
|
+
import { MainRunner as BrowserEnvRunner } from "./runner/browser-env";
|
|
4
5
|
import { TestCollection } from "./test-collection";
|
|
5
6
|
import { ConfigInput } from "./config/types";
|
|
6
7
|
import { MasterEventHandler, Test } from "./types";
|
|
@@ -33,7 +34,7 @@ export interface Testplane {
|
|
|
33
34
|
}
|
|
34
35
|
export declare class Testplane extends BaseTestplane {
|
|
35
36
|
protected failed: boolean;
|
|
36
|
-
protected runner:
|
|
37
|
+
protected runner: NodejsEnvRunner | BrowserEnvRunner | null;
|
|
37
38
|
constructor(config?: string | ConfigInput);
|
|
38
39
|
extendCli(parser: CommanderStatic): void;
|
|
39
40
|
run(testPaths: TestCollection | string[], { browsers, sets, grep, updateRefs, requireModules, inspectMode, replMode, devtools, reporters, }?: Partial<RunOpts>): Promise<boolean>;
|
package/build/src/testplane.js
CHANGED
|
@@ -8,6 +8,7 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
8
8
|
const stats_1 = require("./stats");
|
|
9
9
|
const base_testplane_1 = require("./base-testplane");
|
|
10
10
|
const runner_1 = require("./runner");
|
|
11
|
+
const browser_env_1 = require("./runner/browser-env");
|
|
11
12
|
const runtime_config_1 = __importDefault(require("./config/runtime-config"));
|
|
12
13
|
const events_1 = require("./events");
|
|
13
14
|
const utils_1 = __importDefault(require("./events/utils"));
|
|
@@ -17,6 +18,7 @@ const test_collection_1 = require("./test-collection");
|
|
|
17
18
|
const validators_1 = require("./validators");
|
|
18
19
|
const reporters_1 = require("./reporters");
|
|
19
20
|
const logger_1 = __importDefault(require("./utils/logger"));
|
|
21
|
+
const config_1 = require("./utils/config");
|
|
20
22
|
class Testplane extends base_testplane_1.BaseTestplane {
|
|
21
23
|
constructor(config) {
|
|
22
24
|
super(config);
|
|
@@ -32,7 +34,7 @@ class Testplane extends base_testplane_1.BaseTestplane {
|
|
|
32
34
|
if (replMode?.enabled) {
|
|
33
35
|
this._config.system.mochaOpts.timeout = 0;
|
|
34
36
|
}
|
|
35
|
-
const runner = runner_1.MainRunner.create(this._config, this._interceptors);
|
|
37
|
+
const runner = ((0, config_1.isRunInNodeJsEnv)(this._config) ? runner_1.MainRunner : browser_env_1.MainRunner).create(this._config, this._interceptors);
|
|
36
38
|
this.runner = runner;
|
|
37
39
|
this.on(events_1.MasterEvents.TEST_FAIL, () => this._fail()).on(events_1.MasterEvents.ERROR, (err) => this.halt(err));
|
|
38
40
|
await (0, reporters_1.initReporters)(reporters, this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testplane.js","sourceRoot":"","sources":["../../src/testplane.ts"],"names":[],"mappings":";;;;;;AACA,oDAAuB;AACvB,mCAA+C;AAC/C,qDAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"testplane.js","sourceRoot":"","sources":["../../src/testplane.ts"],"names":[],"mappings":"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"}
|