Skip to content

Commit 87987ca

Browse files
authored
test: add test
1 parent 67c5aae commit 87987ca

6 files changed

Lines changed: 132 additions & 0 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default "chunk1";
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default "chunk2";
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
__webpack_public_path__ = "https://example.com/public/path/";
2+
3+
it("should handle low fetchPriority for direct dynamic import in universal target", async() => {
4+
const hasBrowser = typeof document !== "undefined";
5+
const before = hasBrowser ? document.head._children.length : 0;
6+
const originalEnsure = __webpack_require__.e;
7+
/** @type {undefined | false | "auto" | "low" | "high"} */
8+
let capturedFetchPriority;
9+
10+
__webpack_require__.e = (chunkId, fetchPriority) => {
11+
capturedFetchPriority = fetchPriority;
12+
return originalEnsure(chunkId, fetchPriority);
13+
};
14+
15+
return import(
16+
/* webpackChunkName: "chunk1", webpackFetchPriority: "low" */ "./chunk1.mjs"
17+
).then(() => {
18+
__webpack_require__.e = originalEnsure;
19+
expect(capturedFetchPriority).toBe("low");
20+
21+
if (hasBrowser) {
22+
const after = document.head._children.length;
23+
expect(after).toBeGreaterThanOrEqual(before);
24+
25+
const insertedNodes = document.head._children.slice(before, after);
26+
const node = insertedNodes.find(item => {
27+
const srcOrHref = item.src || item.href;
28+
return (
29+
item._attributes.fetchpriority === "low" &&
30+
typeof srcOrHref === "string" &&
31+
/chunk1\.mjs$/.test(srcOrHref)
32+
);
33+
});
34+
35+
if (after > before) {
36+
expect(node).toBeDefined();
37+
}
38+
}
39+
}).catch(err => {
40+
__webpack_require__.e = originalEnsure;
41+
throw err;
42+
});
43+
});
44+
45+
it("should handle high fetchPriority for direct dynamic import in universal target", async() => {
46+
const hasBrowser = typeof document !== "undefined";
47+
const before = hasBrowser ? document.head._children.length : 0;
48+
const originalEnsure = __webpack_require__.e;
49+
/** @type {undefined | false | "auto" | "low" | "high"} */
50+
let capturedFetchPriority;
51+
52+
__webpack_require__.e = (chunkId, fetchPriority) => {
53+
capturedFetchPriority = fetchPriority;
54+
return originalEnsure(chunkId, fetchPriority);
55+
};
56+
57+
return import(
58+
/* webpackChunkName: "chunk2", webpackFetchPriority: "high" */ "./chunk2.mjs"
59+
).then(() => {
60+
__webpack_require__.e = originalEnsure;
61+
expect(capturedFetchPriority).toBe("high");
62+
63+
if (hasBrowser) {
64+
const after = document.head._children.length;
65+
expect(after).toBeGreaterThanOrEqual(before);
66+
67+
const insertedNodes = document.head._children.slice(before, after);
68+
const node = insertedNodes.find(item => {
69+
const srcOrHref = item.src || item.href;
70+
return (
71+
item._attributes.fetchpriority === "high" &&
72+
typeof srcOrHref === "string" &&
73+
/chunk2\.mjs$/.test(srcOrHref)
74+
);
75+
});
76+
77+
if (after > before) {
78+
expect(node).toBeDefined();
79+
}
80+
}
81+
}).catch(err => {
82+
__webpack_require__.e = originalEnsure;
83+
throw err;
84+
});
85+
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"use strict";
2+
3+
module.exports = {
4+
moduleScope(scope, options) {
5+
if (options.name.includes("node")) {
6+
delete scope.window;
7+
delete scope.document;
8+
delete scope.self;
9+
}
10+
},
11+
findBundle() {
12+
return "./bundle0.mjs";
13+
}
14+
};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"use strict";
2+
3+
const supportsGlobalThis = require("../../../helpers/supportsGlobalThis");
4+
5+
module.exports = () => supportsGlobalThis();
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"use strict";
2+
3+
const base = {
4+
target: ["web", "node"],
5+
entry: "./index.mjs",
6+
experiments: {
7+
outputModule: true
8+
},
9+
output: {
10+
publicPath: "",
11+
module: true,
12+
filename: "bundle0.mjs",
13+
chunkFilename: "[name].mjs",
14+
crossOriginLoading: "anonymous"
15+
},
16+
optimization: {
17+
minimize: false,
18+
chunkIds: "named"
19+
}
20+
};
21+
22+
/** @type {import("../../../../").Configuration[]} */
23+
module.exports = [
24+
{ name: "web", ...base },
25+
{ name: "node", ...base }
26+
];

0 commit comments

Comments
 (0)