@jsenv/test 3.3.12 → 3.3.14
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/dist/js/execute_using_dynamic_import.js +58 -58
- package/dist/jsenv_test.js +1476 -1464
- package/dist/node_child_process_controlled.mjs +1 -1
- package/dist/node_worker_thread_controlled.mjs +2 -2
- package/package.json +8 -8
- package/src/coverage/empty_coverage_factory.js +2 -2
- package/src/coverage/file_by_file_coverage.js +1 -1
- package/src/coverage/generate_coverage.js +6 -6
- package/src/coverage/missing_coverage.js +1 -1
- package/src/coverage/report_coverage_as_html.js +3 -3
- package/src/coverage/report_coverage_as_json.js +1 -1
- package/src/coverage/v8_coverage_node_directory.js +2 -2
- package/src/coverage/v8_coverage_to_istanbul.js +1 -1
- package/src/execution/exception.js +1 -1
- package/src/execution/execute.js +1 -1
- package/src/execution/execute_test_plan.js +20 -20
- package/src/execution/format_error_for_terminal.js +2 -2
- package/src/execution/reporters/reporter_list.js +21 -9
- package/src/execution/run.js +1 -1
- package/src/execution/web_server/start_using_command.js +1 -1
- package/src/execution/web_server_param.js +3 -3
- package/src/helpers/cpu_usage.test_manual.js +1 -1
- package/src/helpers/web_url_converter.js +1 -1
- package/src/main.js +4 -2
- package/src/runtime_browsers/middleware_istanbul.js +2 -2
- package/src/runtime_browsers/middleware_js_supervisor.js +2 -2
- package/src/runtime_browsers/using_playwright.js +5 -5
- package/src/runtime_node/execute_using_dynamic_import.js +2 -2
- package/src/runtime_node/importmap_hooks.mjs +1 -1
- package/src/runtime_node/node_child_process.js +4 -4
- package/src/runtime_node/node_worker_thread.js +3 -3
- package/src/runtime_node/node_worker_thread_controlled.mjs +1 -1
|
@@ -1,64 +1,8 @@
|
|
|
1
1
|
import { writeFileSync } from "node:fs";
|
|
2
2
|
import { memoryUsage } from "node:process";
|
|
3
|
-
import { Session } from "node:inspector";
|
|
4
|
-
import { PerformanceObserver, performance } from "node:perf_hooks";
|
|
5
3
|
import { createException } from "./exception.js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* Calling Profiler.startPreciseCoverage DO NOT propagate to
|
|
9
|
-
* subprocesses (new Worker or child_process.fork())
|
|
10
|
-
* So the best solution remains NODE_V8_COVERAGE
|
|
11
|
-
* This profiler strategy remains useful when:
|
|
12
|
-
* - As fallback when NODE_V8_COVERAGE is not configured
|
|
13
|
-
* - If explicitely enabled with coverageMethodForNodeJs: "Profiler"
|
|
14
|
-
* - Used by jsenv during automated tests about coverage
|
|
15
|
-
* - Anyone prefering this approach over NODE_V8_COVERAGE and assuming
|
|
16
|
-
* it will not fork subprocess or don't care if coverage is missed for this code
|
|
17
|
-
* - https://v8.dev/blog/javascript-code-coverage#for-embedders
|
|
18
|
-
* - https://github.com/nodejs/node/issues/28283
|
|
19
|
-
* - https://vanilla.aslushnikov.com/?Profiler.startPreciseCoverage
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const startJsCoverage = async ({
|
|
24
|
-
callCount = true,
|
|
25
|
-
detailed = true,
|
|
26
|
-
} = {}) => {
|
|
27
|
-
const session = new Session();
|
|
28
|
-
session.connect();
|
|
29
|
-
const postSession = (action, options) => {
|
|
30
|
-
const promise = new Promise((resolve, reject) => {
|
|
31
|
-
session.post(action, options, (error, data) => {
|
|
32
|
-
if (error) {
|
|
33
|
-
reject(error);
|
|
34
|
-
} else {
|
|
35
|
-
resolve(data);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
return promise;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
await postSession("Profiler.enable");
|
|
43
|
-
await postSession("Profiler.startPreciseCoverage", { callCount, detailed });
|
|
44
|
-
|
|
45
|
-
const takeJsCoverage = async () => {
|
|
46
|
-
const coverage = await postSession("Profiler.takePreciseCoverage");
|
|
47
|
-
return coverage;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
const stopJsCoverage = async () => {
|
|
51
|
-
const coverage = await takeJsCoverage();
|
|
52
|
-
await postSession("Profiler.stopPreciseCoverage");
|
|
53
|
-
await postSession("Profiler.disable");
|
|
54
|
-
return coverage;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
return {
|
|
58
|
-
takeJsCoverage,
|
|
59
|
-
stopJsCoverage,
|
|
60
|
-
};
|
|
61
|
-
};
|
|
4
|
+
import { PerformanceObserver, performance } from "node:perf_hooks";
|
|
5
|
+
import { Session } from "node:inspector";
|
|
62
6
|
|
|
63
7
|
const startObservingPerformances = () => {
|
|
64
8
|
const measureEntries = [];
|
|
@@ -126,6 +70,62 @@ const measuresFromMeasureEntries = (measureEntries) => {
|
|
|
126
70
|
return measures;
|
|
127
71
|
};
|
|
128
72
|
|
|
73
|
+
/*
|
|
74
|
+
* Calling Profiler.startPreciseCoverage DO NOT propagate to
|
|
75
|
+
* subprocesses (new Worker or child_process.fork())
|
|
76
|
+
* So the best solution remains NODE_V8_COVERAGE
|
|
77
|
+
* This profiler strategy remains useful when:
|
|
78
|
+
* - As fallback when NODE_V8_COVERAGE is not configured
|
|
79
|
+
* - If explicitely enabled with coverageMethodForNodeJs: "Profiler"
|
|
80
|
+
* - Used by jsenv during automated tests about coverage
|
|
81
|
+
* - Anyone prefering this approach over NODE_V8_COVERAGE and assuming
|
|
82
|
+
* it will not fork subprocess or don't care if coverage is missed for this code
|
|
83
|
+
* - https://v8.dev/blog/javascript-code-coverage#for-embedders
|
|
84
|
+
* - https://github.com/nodejs/node/issues/28283
|
|
85
|
+
* - https://vanilla.aslushnikov.com/?Profiler.startPreciseCoverage
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
const startJsCoverage = async ({
|
|
90
|
+
callCount = true,
|
|
91
|
+
detailed = true,
|
|
92
|
+
} = {}) => {
|
|
93
|
+
const session = new Session();
|
|
94
|
+
session.connect();
|
|
95
|
+
const postSession = (action, options) => {
|
|
96
|
+
const promise = new Promise((resolve, reject) => {
|
|
97
|
+
session.post(action, options, (error, data) => {
|
|
98
|
+
if (error) {
|
|
99
|
+
reject(error);
|
|
100
|
+
} else {
|
|
101
|
+
resolve(data);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
return promise;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
await postSession("Profiler.enable");
|
|
109
|
+
await postSession("Profiler.startPreciseCoverage", { callCount, detailed });
|
|
110
|
+
|
|
111
|
+
const takeJsCoverage = async () => {
|
|
112
|
+
const coverage = await postSession("Profiler.takePreciseCoverage");
|
|
113
|
+
return coverage;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const stopJsCoverage = async () => {
|
|
117
|
+
const coverage = await takeJsCoverage();
|
|
118
|
+
await postSession("Profiler.stopPreciseCoverage");
|
|
119
|
+
await postSession("Profiler.disable");
|
|
120
|
+
return coverage;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
return {
|
|
124
|
+
takeJsCoverage,
|
|
125
|
+
stopJsCoverage,
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
|
|
129
129
|
const executeUsingDynamicImport = async ({
|
|
130
130
|
rootDirectoryUrl,
|
|
131
131
|
fileUrl,
|