testplane 8.44.1 → 8.44.2-rc.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.
- package/build/package.json +2 -2
- package/build/src/browser/commands/assert-view/index.js +6 -6
- package/build/src/browser/commands/assert-view/index.js.map +1 -1
- package/build/src/browser/commands/openAndWait.js +22 -24
- package/build/src/browser/commands/openAndWait.js.map +1 -1
- package/build/src/browser/commands/restoreState/index.js +16 -4
- package/build/src/browser/commands/restoreState/index.js.map +1 -1
- package/build/src/browser/commands/switchToRepl.js +19 -2
- package/build/src/browser/commands/switchToRepl.js.map +1 -1
- package/build/src/config/utils.js +1 -1
- package/build/src/config/utils.js.map +1 -1
- package/build/src/constants/repl.d.ts +2 -0
- package/build/src/constants/repl.js +6 -0
- package/build/src/constants/repl.js.map +1 -0
- package/build/src/runner/browser-env/vite/browser-modules/tsconfig.tsbuildinfo +1 -1
- package/build/src/test-reader/mocha-reader/index.js +55 -3
- package/build/src/test-reader/mocha-reader/index.js.map +1 -1
- package/build/src/utils/repl-instrumentation.d.ts +1 -0
- package/build/src/utils/repl-instrumentation.js +304 -0
- package/build/src/utils/repl-instrumentation.js.map +1 -0
- package/build/src/utils/typescript.js +25 -11
- package/build/src/utils/typescript.js.map +1 -1
- package/build/src/worker/runner/test-runner/execution-thread.js +6 -1
- package/build/src/worker/runner/test-runner/execution-thread.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
const path = require("node:path");
|
|
3
|
+
const { fileURLToPath } = require("node:url");
|
|
2
4
|
const _ = require("lodash");
|
|
3
5
|
const Mocha = require("mocha");
|
|
6
|
+
const debugReplInstrumentation = require("debug")("testplane:repl-instrumentation");
|
|
4
7
|
const { MochaEventBus } = require("./mocha-event-bus");
|
|
5
8
|
const { TreeBuilderDecorator } = require("./tree-builder-decorator");
|
|
6
9
|
const { TestReaderEvents } = require("../../events");
|
|
@@ -8,6 +11,10 @@ const { MasterEvents } = require("../../events");
|
|
|
8
11
|
const { getMethodsByInterface } = require("./utils");
|
|
9
12
|
const logger = require("../../utils/logger");
|
|
10
13
|
const { enableSourceMaps } = require("../../utils/typescript");
|
|
14
|
+
const RuntimeConfig = require("../../config/runtime-config");
|
|
15
|
+
// TS-family specs must hit the require hook when --repl-before-test injects scoped eval.
|
|
16
|
+
const REPL_INSTRUMENTATION_FORCE_REQUIRE_EXTENSIONS = new Set([".ts", ".tsx", ".cts", ".mts"]);
|
|
17
|
+
const REPL_INSTRUMENTATION_MISSING_FILE_SUFFIX = ".testplane-repl-force-require";
|
|
11
18
|
function getTagParser(original) {
|
|
12
19
|
return function (title, paramsOrFn, fn) {
|
|
13
20
|
if (typeof paramsOrFn === "function") {
|
|
@@ -44,9 +51,13 @@ async function readFiles(files, { esmDecorator, config, eventBus, runnableOpts,
|
|
|
44
51
|
mocha.fullTrace();
|
|
45
52
|
initBuildContext(eventBus);
|
|
46
53
|
initEventListeners({ rootSuite: mocha.suite, outBus: eventBus, config, runnableOpts });
|
|
47
|
-
files.forEach(f =>
|
|
54
|
+
files.forEach(f => {
|
|
55
|
+
debugReplInstrumentation("mocha add file %s", f);
|
|
56
|
+
mocha.addFile(f);
|
|
57
|
+
});
|
|
48
58
|
try {
|
|
49
|
-
|
|
59
|
+
// The wrapper preserves normal esmDecorator behavior, but can force Mocha's import->require fallback for REPL instrumentation.
|
|
60
|
+
await mocha.loadFilesAsync({ esmDecorator: mkEsmDecorator(esmDecorator) });
|
|
50
61
|
}
|
|
51
62
|
catch (err) {
|
|
52
63
|
const errorMessage = (err.message || "").split("\n")[0].trim();
|
|
@@ -59,6 +70,44 @@ async function readFiles(files, { esmDecorator, config, eventBus, runnableOpts,
|
|
|
59
70
|
}
|
|
60
71
|
applyOnly(mocha.suite, eventBus);
|
|
61
72
|
}
|
|
73
|
+
function mkEsmDecorator(esmDecorator) {
|
|
74
|
+
if (!RuntimeConfig.getInstance()?.replMode?.beforeTest) {
|
|
75
|
+
return esmDecorator;
|
|
76
|
+
}
|
|
77
|
+
const decorate = esmDecorator || (file => file);
|
|
78
|
+
return file => {
|
|
79
|
+
const decoratedFile = decorate(file);
|
|
80
|
+
const sourceFile = getFilePath(file);
|
|
81
|
+
// Mocha passes file:// URLs here; use the original path to check the actual spec extension.
|
|
82
|
+
if (!sourceFile || !REPL_INSTRUMENTATION_FORCE_REQUIRE_EXTENSIONS.has(path.extname(sourceFile))) {
|
|
83
|
+
return decoratedFile;
|
|
84
|
+
}
|
|
85
|
+
debugReplInstrumentation("force require for REPL instrumentation %s", sourceFile);
|
|
86
|
+
return mkMissingFileUrl(decoratedFile);
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function getFilePath(file) {
|
|
90
|
+
try {
|
|
91
|
+
return fileURLToPath(file);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return String(file);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function mkMissingFileUrl(file) {
|
|
98
|
+
try {
|
|
99
|
+
const url = new URL(String(file));
|
|
100
|
+
if (url.protocol === "file:") {
|
|
101
|
+
// Importing this URL fails, then Mocha retries require(originalFile), which pirates transforms.
|
|
102
|
+
url.pathname += REPL_INSTRUMENTATION_MISSING_FILE_SUFFIX;
|
|
103
|
+
return url.toString();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// If it is not a URL, fall through and make the module path unresolved.
|
|
108
|
+
}
|
|
109
|
+
return String(file) + REPL_INSTRUMENTATION_MISSING_FILE_SUFFIX;
|
|
110
|
+
}
|
|
62
111
|
function initBuildContext(outBus) {
|
|
63
112
|
outBus.emit(TestReaderEvents.NEW_BUILD_INSTRUCTION, ctx => {
|
|
64
113
|
ctx.treeBuilder = TreeBuilderDecorator.create(ctx.treeBuilder);
|
|
@@ -84,7 +133,10 @@ function passthroughFileEvents(inBus, outBus) {
|
|
|
84
133
|
[MochaEventBus.events.EVENT_FILE_PRE_REQUIRE, MasterEvents.BEFORE_FILE_READ],
|
|
85
134
|
[MochaEventBus.events.EVENT_FILE_POST_REQUIRE, MasterEvents.AFTER_FILE_READ],
|
|
86
135
|
].forEach(([mochaEvent, ourEvent]) => {
|
|
87
|
-
inBus.on(mochaEvent, (ctx, file) =>
|
|
136
|
+
inBus.on(mochaEvent, (ctx, file) => {
|
|
137
|
+
debugReplInstrumentation("%s %s", mochaEvent, file);
|
|
138
|
+
outBus.emit(ourEvent, { file });
|
|
139
|
+
});
|
|
88
140
|
});
|
|
89
141
|
}
|
|
90
142
|
function registerTestObjects(inBus, outBus) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/test-reader/mocha-reader/index.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/test-reader/mocha-reader/index.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAClC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAC9C,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,MAAM,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,gCAAgC,CAAC,CAAC;AAEpF,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACvD,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;AACrE,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AACrD,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AACjD,MAAM,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACrD,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC7C,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAE7D,yFAAyF;AACzF,MAAM,6CAA6C,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/F,MAAM,wCAAwC,GAAG,+BAA+B,CAAC;AAEjF,SAAS,YAAY,CAAC,QAAQ;IAC1B,OAAO,UAAU,KAAK,EAAE,UAAU,EAAE,EAAE;QAClC,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAE5C,IAAI,UAAU,EAAE,GAAG,EAAE,CAAC;gBAClB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC5D,CAAC;YACL,CAAC;YAED,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,GAAG,KAAK,EAAE;IAClG,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAEhC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;QACpC,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC;QAE9B,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAClD,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAEjD,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAE9C,OAAO,CAAC,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACtC,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAE3C,OAAO,CAAC,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAClC,OAAO,CAAC,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,EAAE,CAAC;IAElB,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3B,kBAAkB,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAEvF,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACd,wBAAwB,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,+HAA+H;QAC/H,MAAM,KAAK,CAAC,cAAc,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE/D,IAAI,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChF,MAAM,CAAC,IAAI,CACP,kDAAkD,YAAY,IAAI;gBAC9D,iEAAiE;gBACjE,qEAAqE,CAC5E,CAAC;QACN,CAAC;QAED,MAAM,GAAG,CAAC;IACd,CAAC;IAED,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,cAAc,CAAC,YAAY;IAChC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QACrD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEhD,OAAO,IAAI,CAAC,EAAE;QACV,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAErC,4FAA4F;QAC5F,IAAI,CAAC,UAAU,IAAI,CAAC,6CAA6C,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAC9F,OAAO,aAAa,CAAC;QACzB,CAAC;QAED,wBAAwB,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAC;QAElF,OAAO,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC;AACN,CAAC;AAED,SAAS,WAAW,CAAC,IAAI;IACrB,IAAI,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAI;IAC1B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAElC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC3B,gGAAgG;YAChG,GAAG,CAAC,QAAQ,IAAI,wCAAwC,CAAC;YAEzD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,wEAAwE;IAC5E,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,wCAAwC,CAAC;AACnE,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAM;IAC5B,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,GAAG,CAAC,EAAE;QACtD,GAAG,CAAC,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE;IACnE,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE9C,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACpD,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEnC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAG;IACzB,CAAC,aAAa,CAAC,MAAM,CAAC,+BAA+B,EAAE,aAAa,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAC/G,KAAK,CAAC,EAAE;QACJ,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACf,MAAM,IAAI,KAAK,CACX,0FAA0F,CAC7F,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CACJ,CAAC;AACN,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM;IACxC;QACI,CAAC,aAAa,CAAC,MAAM,CAAC,sBAAsB,EAAE,YAAY,CAAC,gBAAgB,CAAC;QAC5E,CAAC,aAAa,CAAC,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC,eAAe,CAAC;KAC/E,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE;QACjC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM;IACtC;QACI,CAAC,aAAa,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjG,CAAC,aAAa,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7F;YACI,aAAa,CAAC,MAAM,CAAC,gCAAgC;YACrD,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC;SAC7D;QACD;YACI,aAAa,CAAC,MAAM,CAAC,+BAA+B;YACpD,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC;SAC5D;KACJ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE;QAC/B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;YACzB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CACpE,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CACvC,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,SAAS,CAAC,SAAS,EAAE,QAAQ;IAClC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QACvB,OAAO;IACX,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,wFAAwF;IACxF,+DAA+D;IAC/D,qEAAqE;IACrE,SAAS,CAAC,UAAU,EAAE,CAAC;IACvB,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAEzE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;QACtE,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY;IACvD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/C,OAAO;IACX,CAAC;IAED,gBAAgB,EAAE,CAAC;IAEnB,MAAM,gBAAgB,GAAG,4BAA4B,EAAE,CAAC;IACxD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEvE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,EAAE;QACxD;YACI;gBACI,OAAO,EAAE,YAAY;gBACrB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,qBAAqB;aACxD;YACD;gBACI,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,oBAAoB;aACvD;SACJ,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;YACjC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBACzB,GAAG,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBAExF,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBAClB,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;oBAClG,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACtG,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;oBACpC,MAAM,iBAAiB,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC3C,GAAG,CAAC,iBAAiB,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;wBAC1D,KAAK;wBACL,SAAS;wBACT,gBAAgB;qBACnB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,YAAY,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE;IAChE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;QAC1B,MAAM,mBAAmB,GAAG,KAAK,CAAC,eAAe,CAAC;QAClD,MAAM,qBAAqB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAEtD,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAEhG,OAAO;gBACH,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE;gBAC3B,MAAM,EAAE,KAAK,CAAC,eAAe,EAAE;aAClC,CAAC;QACN,CAAC,CAAC;QAEF,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE7B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,eAAe,GAAG,mBAAmB,CAAC;QAC5C,KAAK,CAAC,iBAAiB,GAAG,qBAAqB,CAAC;QAEhD,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;YAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACrB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACjC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,4BAA4B;IACjC,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtC,OAAO,MAAM,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC,CAAC,+BAA+B;AAC9C,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACb,SAAS;CACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function instrumentReplBeforeTestIfNeeded(code: string, sourceFile: string): string;
|
|
@@ -0,0 +1,304 @@
|
|
|
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.instrumentReplBeforeTestIfNeeded = void 0;
|
|
30
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
31
|
+
const debug_1 = __importDefault(require("debug"));
|
|
32
|
+
const recast = __importStar(require("recast"));
|
|
33
|
+
const runtime_config_1 = __importDefault(require("../config/runtime-config"));
|
|
34
|
+
const repl_1 = require("../constants/repl");
|
|
35
|
+
const logger = __importStar(require("./logger"));
|
|
36
|
+
const debugReplInstrumentation = (0, debug_1.default)("testplane:repl-instrumentation");
|
|
37
|
+
function instrumentReplBeforeTestIfNeeded(code, sourceFile) {
|
|
38
|
+
if (!runtime_config_1.default.getInstance()?.replMode?.beforeTest) {
|
|
39
|
+
return code;
|
|
40
|
+
}
|
|
41
|
+
return instrumentReplBeforeTest(code, sourceFile);
|
|
42
|
+
}
|
|
43
|
+
exports.instrumentReplBeforeTestIfNeeded = instrumentReplBeforeTestIfNeeded;
|
|
44
|
+
function instrumentReplBeforeTest(code, sourceFile) {
|
|
45
|
+
const parser = mkBabelParser();
|
|
46
|
+
if (!parser) {
|
|
47
|
+
debugReplInstrumentation("skip %s: @babel/parser is not available", sourceFile);
|
|
48
|
+
return code;
|
|
49
|
+
}
|
|
50
|
+
let ast;
|
|
51
|
+
try {
|
|
52
|
+
ast = recast.parse(code, {
|
|
53
|
+
parser,
|
|
54
|
+
sourceFileName: sourceFile,
|
|
55
|
+
sourceRoot: node_path_1.default.dirname(sourceFile),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
logger.warn(`Failed to parse file ${sourceFile} for REPL instrumentation: ${err.message}.`);
|
|
60
|
+
return code;
|
|
61
|
+
}
|
|
62
|
+
let isChanged = false;
|
|
63
|
+
let testDefinitionCount = 0;
|
|
64
|
+
let instrumentedCallbackCount = 0;
|
|
65
|
+
recast.visit(ast, {
|
|
66
|
+
visitCallExpression(nodePath) {
|
|
67
|
+
const node = nodePath.value;
|
|
68
|
+
// Handles it(...), specify(...), it.only(...), and it.skip(...).
|
|
69
|
+
if (!isTestDefinitionCall(node)) {
|
|
70
|
+
return this.traverse(nodePath);
|
|
71
|
+
}
|
|
72
|
+
testDefinitionCount++;
|
|
73
|
+
// Handles it("title", fn) and it("title", { tag }, fn).
|
|
74
|
+
const fnIndex = node.arguments.findIndex(isTestCallback);
|
|
75
|
+
if (fnIndex === -1) {
|
|
76
|
+
return this.traverse(nodePath);
|
|
77
|
+
}
|
|
78
|
+
const callback = node.arguments[fnIndex];
|
|
79
|
+
instrumentTestCallback(callback);
|
|
80
|
+
node.arguments[fnIndex] = markTestCallback(callback);
|
|
81
|
+
isChanged = true;
|
|
82
|
+
instrumentedCallbackCount++;
|
|
83
|
+
return this.traverse(nodePath);
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
if (!isChanged) {
|
|
87
|
+
debugReplInstrumentation("skip %s: no instrumentable test callbacks found, test definitions: %d", sourceFile, testDefinitionCount);
|
|
88
|
+
return code;
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
const result = recast.print(ast, { sourceMapName: sourceFile }).code;
|
|
92
|
+
debugReplInstrumentation("instrumented %s: %d callback(s), test definitions: %d", sourceFile, instrumentedCallbackCount, testDefinitionCount);
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
logger.warn(`Failed to print file ${sourceFile} after REPL instrumentation: ${err.message}.`);
|
|
97
|
+
return code;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function mkBabelParser() {
|
|
101
|
+
try {
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
103
|
+
const babelParser = require("@babel/parser");
|
|
104
|
+
return {
|
|
105
|
+
parse(source) {
|
|
106
|
+
return babelParser.parse(source, {
|
|
107
|
+
// Parses both import-based specs and legacy CommonJS-style specs.
|
|
108
|
+
sourceType: "unambiguous",
|
|
109
|
+
plugins: [
|
|
110
|
+
"typescript",
|
|
111
|
+
"jsx",
|
|
112
|
+
"decorators-legacy",
|
|
113
|
+
"classProperties",
|
|
114
|
+
"nullishCoalescingOperator",
|
|
115
|
+
"optionalChaining",
|
|
116
|
+
"topLevelAwait",
|
|
117
|
+
],
|
|
118
|
+
tokens: true,
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function isTestDefinitionCall(node) {
|
|
128
|
+
const callee = node.callee;
|
|
129
|
+
if (callee.type === "Identifier") {
|
|
130
|
+
return ["it", "specify"].includes(callee.name);
|
|
131
|
+
}
|
|
132
|
+
if (callee.type !== "MemberExpression" || callee.computed) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
const property = callee.property;
|
|
136
|
+
if (property.type !== "Identifier" || !["only", "skip"].includes(property.name)) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
const object = callee.object;
|
|
140
|
+
return object.type === "Identifier" && ["it", "specify"].includes(object.name);
|
|
141
|
+
}
|
|
142
|
+
function isTestCallback(node) {
|
|
143
|
+
return node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
|
|
144
|
+
}
|
|
145
|
+
function instrumentTestCallback(callback) {
|
|
146
|
+
// Handles it("test", () => value) by converting it to async () => { await repl; return value; }.
|
|
147
|
+
callback.async = true;
|
|
148
|
+
const replStatements = parseStatements(mkScopedReplStatement(getBrowserExpression(callback)));
|
|
149
|
+
if (callback.body.type === "BlockStatement") {
|
|
150
|
+
callback.body.body.unshift(...replStatements);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const originalExpression = callback.body;
|
|
154
|
+
const returnStatement = recast.types.builders.returnStatement(originalExpression);
|
|
155
|
+
callback.body = recast.types.builders.blockStatement([...replStatements, returnStatement]);
|
|
156
|
+
}
|
|
157
|
+
function markTestCallback(callback) {
|
|
158
|
+
// Marks Object.assign(async function() {}, { "__testplaneScopedRepl": true }) to skip the old runner REPL.
|
|
159
|
+
return parseExpression(`Object.assign(${recast.print(callback).code}, { ${JSON.stringify(repl_1.REPL_SCOPED_FN_FLAG)}: true })`);
|
|
160
|
+
}
|
|
161
|
+
function getBrowserExpression(callback) {
|
|
162
|
+
const [firstParam] = callback.params;
|
|
163
|
+
const browserFromParam = getBrowserExpressionFromParam(firstParam);
|
|
164
|
+
if (browserFromParam) {
|
|
165
|
+
return browserFromParam;
|
|
166
|
+
}
|
|
167
|
+
const browserFromScope = hasTopLevelBinding(callback, "browser")
|
|
168
|
+
? "globalThis.browser"
|
|
169
|
+
: '(typeof browser !== "undefined" && browser) || globalThis.browser';
|
|
170
|
+
// Handles it("test", function() { const { browser } = this; }) without reading browser before const init.
|
|
171
|
+
if (callback.type === "FunctionExpression") {
|
|
172
|
+
return `(this && this.browser) || arguments[0]?.browser || ${browserFromScope}`;
|
|
173
|
+
}
|
|
174
|
+
return browserFromScope;
|
|
175
|
+
}
|
|
176
|
+
function getBrowserExpressionFromParam(param) {
|
|
177
|
+
if (!param) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
// Handles it("test", async browser => ...).
|
|
181
|
+
if (isIdentifier(param)) {
|
|
182
|
+
return `${param.name}.browser`;
|
|
183
|
+
}
|
|
184
|
+
if (!isObjectPattern(param)) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
for (const property of param.properties) {
|
|
188
|
+
if (property.type !== "Property" || property.computed) {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
const key = property.key;
|
|
192
|
+
if (key.type !== "Identifier" || key.name !== "browser") {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
const value = property.value;
|
|
196
|
+
// Handles it("test", async ({ browser }) => ...).
|
|
197
|
+
if (value.type === "Identifier") {
|
|
198
|
+
return value.name;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
function isIdentifier(node) {
|
|
204
|
+
return node.type === "Identifier";
|
|
205
|
+
}
|
|
206
|
+
function isObjectPattern(node) {
|
|
207
|
+
return node.type === "ObjectPattern";
|
|
208
|
+
}
|
|
209
|
+
function hasTopLevelBinding(callback, name) {
|
|
210
|
+
if (callback.body.type !== "BlockStatement") {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
return callback.body.body.some(statement => {
|
|
214
|
+
// Handles const { browser } = this and const browser = ...
|
|
215
|
+
if (statement.type === "VariableDeclaration") {
|
|
216
|
+
const declaration = statement;
|
|
217
|
+
return declaration.declarations.some(declarator => {
|
|
218
|
+
const variableDeclarator = declarator;
|
|
219
|
+
return bindingPatternHasName(variableDeclarator.id, name);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
// Handles function browser() {} and class browser {}
|
|
223
|
+
if (statement.type === "FunctionDeclaration" || statement.type === "ClassDeclaration") {
|
|
224
|
+
const declaration = statement;
|
|
225
|
+
return declaration.id?.name === name;
|
|
226
|
+
}
|
|
227
|
+
return false;
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
function bindingPatternHasName(node, name) {
|
|
231
|
+
if (!node) {
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
if (node.type === "Identifier") {
|
|
235
|
+
return node.name === name;
|
|
236
|
+
}
|
|
237
|
+
if (node.type === "ObjectPattern") {
|
|
238
|
+
return (node.properties?.some(property => {
|
|
239
|
+
// Handles const { browser } = this and Babel's ObjectProperty variant.
|
|
240
|
+
if (property.type === "Property" || property.type === "ObjectProperty") {
|
|
241
|
+
return bindingPatternHasName(property.value, name);
|
|
242
|
+
}
|
|
243
|
+
// Handles const { ...browser } = this.
|
|
244
|
+
if (property.type === "RestElement" || property.type === "RestProperty") {
|
|
245
|
+
return bindingPatternHasName(property.argument, name);
|
|
246
|
+
}
|
|
247
|
+
return false;
|
|
248
|
+
}) ?? false);
|
|
249
|
+
}
|
|
250
|
+
if (node.type === "ArrayPattern") {
|
|
251
|
+
// Handles const [browser] = browsers.
|
|
252
|
+
return node.elements?.some(element => element && bindingPatternHasName(element, name)) ?? false;
|
|
253
|
+
}
|
|
254
|
+
// Handles const { browser = fallback } = this.
|
|
255
|
+
if (node.type === "AssignmentPattern") {
|
|
256
|
+
return bindingPatternHasName(node.left, name);
|
|
257
|
+
}
|
|
258
|
+
if (node.type === "RestElement") {
|
|
259
|
+
// Handles const [...browser] = browsers.
|
|
260
|
+
return bindingPatternHasName(node.argument, name);
|
|
261
|
+
}
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
function mkScopedReplStatement(browserExpression) {
|
|
265
|
+
// Injects await browser.switchToRepl({ scoped eval }) as the first test-body statement.
|
|
266
|
+
return `
|
|
267
|
+
const __testplaneReplBrowser = ${browserExpression};
|
|
268
|
+
|
|
269
|
+
if (!__testplaneReplBrowser || typeof __testplaneReplBrowser.switchToRepl !== "function") {
|
|
270
|
+
throw new Error("Unable to enter REPL before test: browser is not available in the test scope");
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
await __testplaneReplBrowser.switchToRepl({
|
|
274
|
+
${JSON.stringify(repl_1.REPL_SCOPED_EVAL_CONTEXT_KEY)}: async code => {
|
|
275
|
+
try {
|
|
276
|
+
// First parse REPL input as an expression: SOMETHING or await browser.url(...).
|
|
277
|
+
return await eval("(async () => (" + code + "\\n))()");
|
|
278
|
+
} catch (__testplaneReplError) {
|
|
279
|
+
if (!__testplaneReplError || __testplaneReplError.name !== "SyntaxError") {
|
|
280
|
+
throw __testplaneReplError;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Fall back to statement input: const x = 1; await browser.url(...).
|
|
284
|
+
return await eval("(async () => { " + code + "\\n})()");
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
});
|
|
288
|
+
`;
|
|
289
|
+
}
|
|
290
|
+
function parseStatements(source) {
|
|
291
|
+
const ast = recast.parse(source, { parser: mkBabelParser() });
|
|
292
|
+
return ast.program.body;
|
|
293
|
+
}
|
|
294
|
+
function parseStatement(source) {
|
|
295
|
+
return parseStatements(source)[0];
|
|
296
|
+
}
|
|
297
|
+
function parseExpression(source) {
|
|
298
|
+
const statement = parseStatement(source);
|
|
299
|
+
if (statement.type !== "ExpressionStatement") {
|
|
300
|
+
throw new Error("Expected expression statement");
|
|
301
|
+
}
|
|
302
|
+
return statement.expression;
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=repl-instrumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl-instrumentation.js","sourceRoot":"","sources":["../../../src/utils/repl-instrumentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,7 @@ const pirates_1 = require("pirates");
|
|
|
32
32
|
const recast = __importStar(require("recast"));
|
|
33
33
|
const logger = __importStar(require("./logger"));
|
|
34
34
|
const config_1 = require("./config");
|
|
35
|
+
const repl_instrumentation_1 = require("./repl-instrumentation");
|
|
35
36
|
const TESTPLANE_TRANSFORM_HOOK = Symbol.for("testplane.transform.hook");
|
|
36
37
|
const TRANSFORM_CODE_EXTENSIONS = [".js", ".jsx", ".ts", ".tsx", ".mjs", ".cjs", ".mts", ".cts"];
|
|
37
38
|
const ASSET_EXTENSIONS = [
|
|
@@ -69,7 +70,7 @@ const transformCode = (code, { sourceFile, sourceMaps, isSilent = true }) => {
|
|
|
69
70
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
70
71
|
const { transformSync } = require("@swc/core");
|
|
71
72
|
transformFunc = (code, sourceFile, sourceMaps) => {
|
|
72
|
-
const preprocessedCode =
|
|
73
|
+
const preprocessedCode = preprocessCode(code, sourceFile);
|
|
73
74
|
return transformSync(preprocessedCode, {
|
|
74
75
|
sourceFileName: sourceFile,
|
|
75
76
|
sourceMaps: sourceMaps ? "inline" : false,
|
|
@@ -96,7 +97,7 @@ const transformCode = (code, { sourceFile, sourceMaps, isSilent = true }) => {
|
|
|
96
97
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
97
98
|
const { transformSync } = require("esbuild");
|
|
98
99
|
transformFunc = (code, sourceFile, sourceMaps) => {
|
|
99
|
-
const preprocessedCode =
|
|
100
|
+
const preprocessedCode = preprocessCode(code, sourceFile);
|
|
100
101
|
return transformSync(preprocessedCode, {
|
|
101
102
|
sourcefile: sourceFile,
|
|
102
103
|
sourcemap: sourceMaps ? "inline" : false,
|
|
@@ -162,20 +163,21 @@ const enableSourceMaps = () => {
|
|
|
162
163
|
processWithTranspileSymbol[TESTPLANE_TRANSFORM_HOOK].enableSourceMaps();
|
|
163
164
|
};
|
|
164
165
|
exports.enableSourceMaps = enableSourceMaps;
|
|
165
|
-
function
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
return code;
|
|
166
|
+
function preprocessCode(code, sourceFile) {
|
|
167
|
+
let result = code;
|
|
168
|
+
if (shouldRemoveViteQueryImports) {
|
|
169
|
+
result = removeViteQueryImports(result, sourceFile);
|
|
170
170
|
}
|
|
171
|
-
|
|
171
|
+
return (0, repl_instrumentation_1.instrumentReplBeforeTestIfNeeded)(result, sourceFile);
|
|
172
|
+
}
|
|
173
|
+
function mkBabelParser() {
|
|
172
174
|
try {
|
|
173
175
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
174
176
|
const babelParser = require("@babel/parser");
|
|
175
|
-
|
|
177
|
+
return {
|
|
176
178
|
parse(source) {
|
|
177
179
|
return babelParser.parse(source, {
|
|
178
|
-
sourceType: "
|
|
180
|
+
sourceType: "unambiguous",
|
|
179
181
|
plugins: [
|
|
180
182
|
"typescript",
|
|
181
183
|
"jsx",
|
|
@@ -183,13 +185,25 @@ function removeViteQueryImports(code, sourceFile) {
|
|
|
183
185
|
"classProperties",
|
|
184
186
|
"nullishCoalescingOperator",
|
|
185
187
|
"optionalChaining",
|
|
188
|
+
"topLevelAwait",
|
|
186
189
|
],
|
|
187
190
|
tokens: true,
|
|
188
191
|
});
|
|
189
192
|
},
|
|
190
193
|
};
|
|
191
194
|
}
|
|
192
|
-
catch
|
|
195
|
+
catch {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function removeViteQueryImports(code, sourceFile) {
|
|
200
|
+
const extname = node_path_1.default.extname(sourceFile);
|
|
201
|
+
const isJsxOrTsx = extname === ".jsx" || extname === ".tsx";
|
|
202
|
+
if (!isJsxOrTsx) {
|
|
203
|
+
return code;
|
|
204
|
+
}
|
|
205
|
+
const parser = mkBabelParser();
|
|
206
|
+
if (!parser) {
|
|
193
207
|
// If @babel/parser is not installed, return original code without transformation.
|
|
194
208
|
// This is not a critical issue as the user may not be using Vite-style imports with query parameters.
|
|
195
209
|
return code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/utils/typescript.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,qCAAkC;AAClC,+CAAiC;AACjC,iDAAmC;AACnC,qCAA6C;
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/utils/typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,8 @@ const { promiseMethod, promiseTimeout } = require("../../../utils/promise");
|
|
|
3
3
|
const RuntimeConfig = require("../../../config/runtime-config");
|
|
4
4
|
const logger = require("../../../utils/logger");
|
|
5
5
|
const { AbortOnReconnectError } = require("../../../errors/abort-on-reconnect-error");
|
|
6
|
+
const { Hook } = require("../../../test-reader/test-object");
|
|
7
|
+
const { REPL_SCOPED_FN_FLAG } = require("../../../constants/repl");
|
|
6
8
|
module.exports = class ExecutionThread {
|
|
7
9
|
static create(...args) {
|
|
8
10
|
return new this(...args);
|
|
@@ -37,7 +39,10 @@ module.exports = class ExecutionThread {
|
|
|
37
39
|
}
|
|
38
40
|
async _call(runnable) {
|
|
39
41
|
const { replMode } = this._runtimeConfig;
|
|
40
|
-
if (replMode?.beforeTest &&
|
|
42
|
+
if (replMode?.beforeTest &&
|
|
43
|
+
!this._isReplBeforeTestOpened &&
|
|
44
|
+
!(runnable instanceof Hook) &&
|
|
45
|
+
!runnable.fn[REPL_SCOPED_FN_FLAG]) {
|
|
41
46
|
await this._ctx.browser.switchToRepl();
|
|
42
47
|
this._isReplBeforeTestOpened = true;
|
|
43
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-thread.js","sourceRoot":"","sources":["../../../../../src/worker/runner/test-runner/execution-thread.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC5E,MAAM,aAAa,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC;AAChE,MAAM,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAChD,MAAM,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,0CAA0C,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-thread.js","sourceRoot":"","sources":["../../../../../src/worker/runner/test-runner/execution-thread.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "testplane",
|
|
3
|
-
"version": "8.44.1",
|
|
3
|
+
"version": "8.44.2-rc.1",
|
|
4
4
|
"description": "Tests framework based on mocha and wdio",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"files": [
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"@testplane/devtools": "8.32.5",
|
|
73
73
|
"@testplane/wdio-protocols": "9.4.7",
|
|
74
74
|
"@testplane/wdio-utils": "9.5.4",
|
|
75
|
-
"@testplane/webdriverio": "9.5.
|
|
75
|
+
"@testplane/webdriverio": "9.5.28",
|
|
76
76
|
"@vitest/spy": "2.1.4",
|
|
77
77
|
"buffer-crc32": "1.0.0",
|
|
78
78
|
"chalk": "2.4.2",
|