Skip to content

Commit dfb0050

Browse files
feat: add cause for errorObject
1 parent 24a8f62 commit dfb0050

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

client-src/overlay.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,9 @@ const createOverlay = (options) => {
637637
*/
638638
const handleError = (error, fallbackMessage) => {
639639
const errorObject =
640-
error instanceof Error ? error : new Error(error || fallbackMessage);
640+
error instanceof Error
641+
? error
642+
: new Error(error || fallbackMessage, { cause: error });
641643

642644
const shouldDisplay =
643645
typeof options.catchRuntimeError === "function"

test/e2e/overlay.test.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1930,6 +1930,53 @@ describe("overlay", () => {
19301930
}
19311931
});
19321932

1933+
it("should not show filtered promise rejection with specific error cause", async () => {
1934+
const compiler = webpack(config);
1935+
1936+
const server = new Server(
1937+
{
1938+
port,
1939+
client: {
1940+
overlay: {
1941+
runtimeErrors: (error) =>
1942+
!/Injected/.test(error.cause.error.message),
1943+
},
1944+
},
1945+
},
1946+
compiler,
1947+
);
1948+
1949+
await server.start();
1950+
1951+
const { page, browser } = await runBrowser();
1952+
1953+
try {
1954+
await page.goto(`http://localhost:${port}/`, {
1955+
waitUntil: "networkidle0",
1956+
});
1957+
1958+
await page.addScriptTag({
1959+
content: `(function throwError() {
1960+
setTimeout(function () {
1961+
Promise.reject({ error: new Error('Injected async error') });
1962+
}, 0);
1963+
})();`,
1964+
});
1965+
1966+
// Delay for the overlay to appear
1967+
await delay(1000);
1968+
1969+
const overlayHandle = await page.$("#webpack-dev-server-client-overlay");
1970+
1971+
expect(overlayHandle).toBe(null);
1972+
} catch (error) {
1973+
throw error;
1974+
} finally {
1975+
await browser.close();
1976+
await server.stop();
1977+
}
1978+
});
1979+
19331980
it('should show overlay when "Content-Security-Policy" is "default-src \'self\'" was used', async () => {
19341981
const compiler = webpack({ ...config, devtool: false });
19351982

0 commit comments

Comments
 (0)