patchright-bun 1.58.0 → 1.58.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 +225 -225
- package/ThirdPartyNotices.txt +5041 -5041
- package/cli.js +19 -19
- package/index.d.ts +17 -17
- package/index.js +17 -17
- package/index.mjs +18 -18
- package/jsx-runtime.js +42 -42
- package/jsx-runtime.mjs +21 -21
- package/lib/agents/agentParser.js +89 -89
- package/lib/agents/copilot-setup-steps.yml +34 -34
- package/lib/agents/generateAgents.js +348 -348
- package/lib/agents/playwright-test-coverage.prompt.md +31 -31
- package/lib/agents/playwright-test-generate.prompt.md +8 -8
- package/lib/agents/playwright-test-generator.agent.md +88 -88
- package/lib/agents/playwright-test-heal.prompt.md +6 -6
- package/lib/agents/playwright-test-healer.agent.md +55 -55
- package/lib/agents/playwright-test-plan.prompt.md +9 -9
- package/lib/agents/playwright-test-planner.agent.md +73 -73
- package/lib/common/config.js +282 -282
- package/lib/common/configLoader.js +344 -344
- package/lib/common/esmLoaderHost.js +104 -104
- package/lib/common/expectBundle.js +28 -28
- package/lib/common/expectBundleImpl.js +407 -407
- package/lib/common/fixtures.js +302 -302
- package/lib/common/globals.js +58 -58
- package/lib/common/ipc.js +60 -60
- package/lib/common/poolBuilder.js +85 -85
- package/lib/common/process.js +132 -132
- package/lib/common/suiteUtils.js +140 -140
- package/lib/common/test.js +321 -321
- package/lib/common/testLoader.js +101 -101
- package/lib/common/testType.js +298 -298
- package/lib/common/validators.js +68 -68
- package/lib/fsWatcher.js +67 -67
- package/lib/index.js +726 -726
- package/lib/internalsForTest.js +42 -42
- package/lib/isomorphic/events.js +77 -77
- package/lib/isomorphic/folders.js +30 -30
- package/lib/isomorphic/stringInternPool.js +69 -69
- package/lib/isomorphic/teleReceiver.js +521 -521
- package/lib/isomorphic/teleSuiteUpdater.js +157 -157
- package/lib/isomorphic/testServerConnection.js +225 -225
- package/lib/isomorphic/testServerInterface.js +16 -16
- package/lib/isomorphic/testTree.js +329 -329
- package/lib/isomorphic/types.d.js +16 -16
- package/lib/loader/loaderMain.js +59 -59
- package/lib/matchers/expect.js +311 -311
- package/lib/matchers/matcherHint.js +44 -44
- package/lib/matchers/matchers.js +383 -383
- package/lib/matchers/toBeTruthy.js +75 -75
- package/lib/matchers/toEqual.js +100 -100
- package/lib/matchers/toHaveURL.js +101 -101
- package/lib/matchers/toMatchAriaSnapshot.js +159 -159
- package/lib/matchers/toMatchSnapshot.js +342 -342
- package/lib/matchers/toMatchText.js +99 -99
- package/lib/mcp/browser/browserContextFactory.js +329 -329
- package/lib/mcp/browser/browserServerBackend.js +84 -84
- package/lib/mcp/browser/config.js +421 -421
- package/lib/mcp/browser/context.js +244 -244
- package/lib/mcp/browser/response.js +278 -278
- package/lib/mcp/browser/sessionLog.js +75 -75
- package/lib/mcp/browser/tab.js +343 -343
- package/lib/mcp/browser/tools/common.js +65 -65
- package/lib/mcp/browser/tools/console.js +46 -46
- package/lib/mcp/browser/tools/dialogs.js +60 -60
- package/lib/mcp/browser/tools/evaluate.js +61 -61
- package/lib/mcp/browser/tools/files.js +58 -58
- package/lib/mcp/browser/tools/form.js +63 -63
- package/lib/mcp/browser/tools/install.js +72 -72
- package/lib/mcp/browser/tools/keyboard.js +107 -107
- package/lib/mcp/browser/tools/mouse.js +107 -107
- package/lib/mcp/browser/tools/navigate.js +71 -71
- package/lib/mcp/browser/tools/network.js +63 -63
- package/lib/mcp/browser/tools/open.js +57 -57
- package/lib/mcp/browser/tools/pdf.js +49 -49
- package/lib/mcp/browser/tools/runCode.js +78 -78
- package/lib/mcp/browser/tools/screenshot.js +93 -93
- package/lib/mcp/browser/tools/snapshot.js +173 -173
- package/lib/mcp/browser/tools/tabs.js +67 -67
- package/lib/mcp/browser/tools/tool.js +47 -47
- package/lib/mcp/browser/tools/tracing.js +74 -74
- package/lib/mcp/browser/tools/utils.js +94 -94
- package/lib/mcp/browser/tools/verify.js +143 -143
- package/lib/mcp/browser/tools/wait.js +63 -63
- package/lib/mcp/browser/tools.js +84 -84
- package/lib/mcp/browser/watchdog.js +44 -44
- package/lib/mcp/config.d.js +16 -16
- package/lib/mcp/extension/cdpRelay.js +351 -351
- package/lib/mcp/extension/extensionContextFactory.js +76 -76
- package/lib/mcp/extension/protocol.js +28 -28
- package/lib/mcp/index.js +61 -61
- package/lib/mcp/log.js +35 -35
- package/lib/mcp/program.js +111 -111
- package/lib/mcp/sdk/exports.js +28 -28
- package/lib/mcp/sdk/http.js +152 -152
- package/lib/mcp/sdk/inProcessTransport.js +71 -71
- package/lib/mcp/sdk/server.js +223 -223
- package/lib/mcp/sdk/tool.js +47 -47
- package/lib/mcp/terminal/cli.js +296 -296
- package/lib/mcp/terminal/command.js +56 -56
- package/lib/mcp/terminal/commands.js +333 -333
- package/lib/mcp/terminal/daemon.js +129 -129
- package/lib/mcp/terminal/help.json +31 -31
- package/lib/mcp/terminal/helpGenerator.js +88 -88
- package/lib/mcp/terminal/socketConnection.js +80 -80
- package/lib/mcp/test/browserBackend.js +98 -98
- package/lib/mcp/test/generatorTools.js +122 -122
- package/lib/mcp/test/plannerTools.js +145 -145
- package/lib/mcp/test/seed.js +82 -82
- package/lib/mcp/test/streams.js +44 -44
- package/lib/mcp/test/testBackend.js +99 -99
- package/lib/mcp/test/testContext.js +285 -285
- package/lib/mcp/test/testTool.js +30 -30
- package/lib/mcp/test/testTools.js +108 -108
- package/lib/plugins/gitCommitInfoPlugin.js +198 -198
- package/lib/plugins/index.js +28 -28
- package/lib/plugins/webServerPlugin.js +237 -237
- package/lib/program.js +417 -417
- package/lib/reporters/base.js +634 -634
- package/lib/reporters/blob.js +138 -138
- package/lib/reporters/dot.js +99 -99
- package/lib/reporters/empty.js +32 -32
- package/lib/reporters/github.js +128 -128
- package/lib/reporters/html.js +633 -633
- package/lib/reporters/internalReporter.js +138 -138
- package/lib/reporters/json.js +254 -254
- package/lib/reporters/junit.js +232 -232
- package/lib/reporters/line.js +131 -131
- package/lib/reporters/list.js +253 -253
- package/lib/reporters/listModeReporter.js +69 -69
- package/lib/reporters/markdown.js +144 -144
- package/lib/reporters/merge.js +558 -558
- package/lib/reporters/multiplexer.js +112 -112
- package/lib/reporters/reporterV2.js +102 -102
- package/lib/reporters/teleEmitter.js +317 -317
- package/lib/reporters/versions/blobV1.js +16 -16
- package/lib/runner/dispatcher.js +530 -530
- package/lib/runner/failureTracker.js +72 -72
- package/lib/runner/lastRun.js +77 -77
- package/lib/runner/loadUtils.js +334 -334
- package/lib/runner/loaderHost.js +89 -89
- package/lib/runner/processHost.js +180 -180
- package/lib/runner/projectUtils.js +241 -241
- package/lib/runner/rebase.js +189 -189
- package/lib/runner/reporters.js +138 -138
- package/lib/runner/sigIntWatcher.js +96 -96
- package/lib/runner/storage.js +91 -91
- package/lib/runner/taskRunner.js +127 -127
- package/lib/runner/tasks.js +410 -410
- package/lib/runner/testGroups.js +125 -125
- package/lib/runner/testRunner.js +398 -398
- package/lib/runner/testServer.js +269 -269
- package/lib/runner/uiModeReporter.js +30 -30
- package/lib/runner/vcs.js +72 -72
- package/lib/runner/watchMode.js +396 -396
- package/lib/runner/workerHost.js +104 -104
- package/lib/third_party/pirates.js +62 -62
- package/lib/third_party/tsconfig-loader.js +103 -103
- package/lib/transform/babelBundle.js +46 -46
- package/lib/transform/babelBundleImpl.js +461 -461
- package/lib/transform/compilationCache.js +274 -274
- package/lib/transform/esmLoader.js +103 -103
- package/lib/transform/md.js +221 -221
- package/lib/transform/portTransport.js +67 -67
- package/lib/transform/transform.js +303 -303
- package/lib/util.js +400 -400
- package/lib/utilsBundle.js +50 -50
- package/lib/utilsBundleImpl.js +103 -103
- package/lib/worker/fixtureRunner.js +262 -262
- package/lib/worker/testInfo.js +536 -536
- package/lib/worker/testTracing.js +345 -345
- package/lib/worker/timeoutManager.js +174 -174
- package/lib/worker/util.js +31 -31
- package/lib/worker/workerMain.js +530 -530
- package/package.json +2 -2
- package/test.d.ts +18 -18
- package/test.js +24 -24
- package/test.mjs +34 -34
- package/types/test.d.ts +10251 -10251
- package/types/testReporter.d.ts +822 -822
package/lib/runner/testGroups.js
CHANGED
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var testGroups_exports = {};
|
|
20
|
-
__export(testGroups_exports, {
|
|
21
|
-
createTestGroups: () => createTestGroups,
|
|
22
|
-
filterForShard: () => filterForShard
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(testGroups_exports);
|
|
25
|
-
function createTestGroups(projectSuite, expectedParallelism) {
|
|
26
|
-
const groups = /* @__PURE__ */ new Map();
|
|
27
|
-
const createGroup = (test) => {
|
|
28
|
-
return {
|
|
29
|
-
workerHash: test._workerHash,
|
|
30
|
-
requireFile: test._requireFile,
|
|
31
|
-
repeatEachIndex: test.repeatEachIndex,
|
|
32
|
-
projectId: test._projectId,
|
|
33
|
-
tests: []
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
for (const test of projectSuite.allTests()) {
|
|
37
|
-
let withWorkerHash = groups.get(test._workerHash);
|
|
38
|
-
if (!withWorkerHash) {
|
|
39
|
-
withWorkerHash = /* @__PURE__ */ new Map();
|
|
40
|
-
groups.set(test._workerHash, withWorkerHash);
|
|
41
|
-
}
|
|
42
|
-
let withRequireFile = withWorkerHash.get(test._requireFile);
|
|
43
|
-
if (!withRequireFile) {
|
|
44
|
-
withRequireFile = {
|
|
45
|
-
general: createGroup(test),
|
|
46
|
-
parallel: /* @__PURE__ */ new Map(),
|
|
47
|
-
parallelWithHooks: createGroup(test)
|
|
48
|
-
};
|
|
49
|
-
withWorkerHash.set(test._requireFile, withRequireFile);
|
|
50
|
-
}
|
|
51
|
-
let insideParallel = false;
|
|
52
|
-
let outerMostSequentialSuite;
|
|
53
|
-
let hasAllHooks = false;
|
|
54
|
-
for (let parent = test.parent; parent; parent = parent.parent) {
|
|
55
|
-
if (parent._parallelMode === "serial" || parent._parallelMode === "default")
|
|
56
|
-
outerMostSequentialSuite = parent;
|
|
57
|
-
insideParallel = insideParallel || parent._parallelMode === "parallel";
|
|
58
|
-
hasAllHooks = hasAllHooks || parent._hooks.some((hook) => hook.type === "beforeAll" || hook.type === "afterAll");
|
|
59
|
-
}
|
|
60
|
-
if (insideParallel) {
|
|
61
|
-
if (hasAllHooks && !outerMostSequentialSuite) {
|
|
62
|
-
withRequireFile.parallelWithHooks.tests.push(test);
|
|
63
|
-
} else {
|
|
64
|
-
const key = outerMostSequentialSuite || test;
|
|
65
|
-
let group = withRequireFile.parallel.get(key);
|
|
66
|
-
if (!group) {
|
|
67
|
-
group = createGroup(test);
|
|
68
|
-
withRequireFile.parallel.set(key, group);
|
|
69
|
-
}
|
|
70
|
-
group.tests.push(test);
|
|
71
|
-
}
|
|
72
|
-
} else {
|
|
73
|
-
withRequireFile.general.tests.push(test);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
const result = [];
|
|
77
|
-
for (const withWorkerHash of groups.values()) {
|
|
78
|
-
for (const withRequireFile of withWorkerHash.values()) {
|
|
79
|
-
if (withRequireFile.general.tests.length)
|
|
80
|
-
result.push(withRequireFile.general);
|
|
81
|
-
result.push(...withRequireFile.parallel.values());
|
|
82
|
-
const parallelWithHooksGroupSize = Math.ceil(withRequireFile.parallelWithHooks.tests.length / expectedParallelism);
|
|
83
|
-
let lastGroup;
|
|
84
|
-
for (const test of withRequireFile.parallelWithHooks.tests) {
|
|
85
|
-
if (!lastGroup || lastGroup.tests.length >= parallelWithHooksGroupSize) {
|
|
86
|
-
lastGroup = createGroup(test);
|
|
87
|
-
result.push(lastGroup);
|
|
88
|
-
}
|
|
89
|
-
lastGroup.tests.push(test);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return result;
|
|
94
|
-
}
|
|
95
|
-
function filterForShard(shard, weights, testGroups) {
|
|
96
|
-
weights ??= Array.from({ length: shard.total }, () => 1);
|
|
97
|
-
if (weights.length !== shard.total)
|
|
98
|
-
throw new Error(`PWTEST_SHARD_WEIGHTS number of weights must match the shard total of ${shard.total}`);
|
|
99
|
-
const totalWeight = weights.reduce((a, b) => a + b, 0);
|
|
100
|
-
let shardableTotal = 0;
|
|
101
|
-
for (const group of testGroups)
|
|
102
|
-
shardableTotal += group.tests.length;
|
|
103
|
-
const shardSizes = weights.map((w) => Math.floor(w * shardableTotal / totalWeight));
|
|
104
|
-
const remainder = shardableTotal - shardSizes.reduce((a, b) => a + b, 0);
|
|
105
|
-
for (let i = 0; i < remainder; i++) {
|
|
106
|
-
shardSizes[i % shardSizes.length]++;
|
|
107
|
-
}
|
|
108
|
-
let from = 0;
|
|
109
|
-
for (let i = 0; i < shard.current - 1; i++)
|
|
110
|
-
from += shardSizes[i];
|
|
111
|
-
const to = from + shardSizes[shard.current - 1];
|
|
112
|
-
let current = 0;
|
|
113
|
-
const result = /* @__PURE__ */ new Set();
|
|
114
|
-
for (const group of testGroups) {
|
|
115
|
-
if (current >= from && current < to)
|
|
116
|
-
result.add(group);
|
|
117
|
-
current += group.tests.length;
|
|
118
|
-
}
|
|
119
|
-
return result;
|
|
120
|
-
}
|
|
121
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
122
|
-
0 && (module.exports = {
|
|
123
|
-
createTestGroups,
|
|
124
|
-
filterForShard
|
|
125
|
-
});
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var testGroups_exports = {};
|
|
20
|
+
__export(testGroups_exports, {
|
|
21
|
+
createTestGroups: () => createTestGroups,
|
|
22
|
+
filterForShard: () => filterForShard
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(testGroups_exports);
|
|
25
|
+
function createTestGroups(projectSuite, expectedParallelism) {
|
|
26
|
+
const groups = /* @__PURE__ */ new Map();
|
|
27
|
+
const createGroup = (test) => {
|
|
28
|
+
return {
|
|
29
|
+
workerHash: test._workerHash,
|
|
30
|
+
requireFile: test._requireFile,
|
|
31
|
+
repeatEachIndex: test.repeatEachIndex,
|
|
32
|
+
projectId: test._projectId,
|
|
33
|
+
tests: []
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
for (const test of projectSuite.allTests()) {
|
|
37
|
+
let withWorkerHash = groups.get(test._workerHash);
|
|
38
|
+
if (!withWorkerHash) {
|
|
39
|
+
withWorkerHash = /* @__PURE__ */ new Map();
|
|
40
|
+
groups.set(test._workerHash, withWorkerHash);
|
|
41
|
+
}
|
|
42
|
+
let withRequireFile = withWorkerHash.get(test._requireFile);
|
|
43
|
+
if (!withRequireFile) {
|
|
44
|
+
withRequireFile = {
|
|
45
|
+
general: createGroup(test),
|
|
46
|
+
parallel: /* @__PURE__ */ new Map(),
|
|
47
|
+
parallelWithHooks: createGroup(test)
|
|
48
|
+
};
|
|
49
|
+
withWorkerHash.set(test._requireFile, withRequireFile);
|
|
50
|
+
}
|
|
51
|
+
let insideParallel = false;
|
|
52
|
+
let outerMostSequentialSuite;
|
|
53
|
+
let hasAllHooks = false;
|
|
54
|
+
for (let parent = test.parent; parent; parent = parent.parent) {
|
|
55
|
+
if (parent._parallelMode === "serial" || parent._parallelMode === "default")
|
|
56
|
+
outerMostSequentialSuite = parent;
|
|
57
|
+
insideParallel = insideParallel || parent._parallelMode === "parallel";
|
|
58
|
+
hasAllHooks = hasAllHooks || parent._hooks.some((hook) => hook.type === "beforeAll" || hook.type === "afterAll");
|
|
59
|
+
}
|
|
60
|
+
if (insideParallel) {
|
|
61
|
+
if (hasAllHooks && !outerMostSequentialSuite) {
|
|
62
|
+
withRequireFile.parallelWithHooks.tests.push(test);
|
|
63
|
+
} else {
|
|
64
|
+
const key = outerMostSequentialSuite || test;
|
|
65
|
+
let group = withRequireFile.parallel.get(key);
|
|
66
|
+
if (!group) {
|
|
67
|
+
group = createGroup(test);
|
|
68
|
+
withRequireFile.parallel.set(key, group);
|
|
69
|
+
}
|
|
70
|
+
group.tests.push(test);
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
withRequireFile.general.tests.push(test);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const result = [];
|
|
77
|
+
for (const withWorkerHash of groups.values()) {
|
|
78
|
+
for (const withRequireFile of withWorkerHash.values()) {
|
|
79
|
+
if (withRequireFile.general.tests.length)
|
|
80
|
+
result.push(withRequireFile.general);
|
|
81
|
+
result.push(...withRequireFile.parallel.values());
|
|
82
|
+
const parallelWithHooksGroupSize = Math.ceil(withRequireFile.parallelWithHooks.tests.length / expectedParallelism);
|
|
83
|
+
let lastGroup;
|
|
84
|
+
for (const test of withRequireFile.parallelWithHooks.tests) {
|
|
85
|
+
if (!lastGroup || lastGroup.tests.length >= parallelWithHooksGroupSize) {
|
|
86
|
+
lastGroup = createGroup(test);
|
|
87
|
+
result.push(lastGroup);
|
|
88
|
+
}
|
|
89
|
+
lastGroup.tests.push(test);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
function filterForShard(shard, weights, testGroups) {
|
|
96
|
+
weights ??= Array.from({ length: shard.total }, () => 1);
|
|
97
|
+
if (weights.length !== shard.total)
|
|
98
|
+
throw new Error(`PWTEST_SHARD_WEIGHTS number of weights must match the shard total of ${shard.total}`);
|
|
99
|
+
const totalWeight = weights.reduce((a, b) => a + b, 0);
|
|
100
|
+
let shardableTotal = 0;
|
|
101
|
+
for (const group of testGroups)
|
|
102
|
+
shardableTotal += group.tests.length;
|
|
103
|
+
const shardSizes = weights.map((w) => Math.floor(w * shardableTotal / totalWeight));
|
|
104
|
+
const remainder = shardableTotal - shardSizes.reduce((a, b) => a + b, 0);
|
|
105
|
+
for (let i = 0; i < remainder; i++) {
|
|
106
|
+
shardSizes[i % shardSizes.length]++;
|
|
107
|
+
}
|
|
108
|
+
let from = 0;
|
|
109
|
+
for (let i = 0; i < shard.current - 1; i++)
|
|
110
|
+
from += shardSizes[i];
|
|
111
|
+
const to = from + shardSizes[shard.current - 1];
|
|
112
|
+
let current = 0;
|
|
113
|
+
const result = /* @__PURE__ */ new Set();
|
|
114
|
+
for (const group of testGroups) {
|
|
115
|
+
if (current >= from && current < to)
|
|
116
|
+
result.add(group);
|
|
117
|
+
current += group.tests.length;
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
122
|
+
0 && (module.exports = {
|
|
123
|
+
createTestGroups,
|
|
124
|
+
filterForShard
|
|
125
|
+
});
|