@@ -4,6 +4,7 @@ const path = require("path");
44const fs = require ( "graceful-fs" ) ;
55const prettier = require ( "prettier" ) ;
66const webpack = require ( "webpack" ) ;
7+ const waitForExpect = require ( "wait-for-expect" ) ;
78const Server = require ( "../../lib/Server" ) ;
89const config = require ( "../fixtures/overlay-config/webpack.config" ) ;
910const trustedTypesConfig = require ( "../fixtures/overlay-config/trusted-types.webpack.config" ) ;
@@ -478,6 +479,55 @@ describe("overlay", () => {
478479 await server . stop ( ) ;
479480 } ) ;
480481
482+ ( isWebpack5 ? it : it . skip ) (
483+ "should open editor when error with file info is clicked" ,
484+ async ( ) => {
485+ const mockLaunchEditorCb = jest . fn ( ) ;
486+ jest . mock ( "launch-editor" , ( ) => mockLaunchEditorCb ) ;
487+
488+ const compiler = webpack ( config ) ;
489+ const devServerOptions = {
490+ port,
491+ } ;
492+ const server = new Server ( devServerOptions , compiler ) ;
493+
494+ await server . start ( ) ;
495+
496+ const { page, browser } = await runBrowser ( ) ;
497+
498+ await page . goto ( `http://localhost:${ port } /` , {
499+ waitUntil : "networkidle0" ,
500+ } ) ;
501+
502+ const pathToFile = path . resolve (
503+ __dirname ,
504+ "../fixtures/overlay-config/foo.js"
505+ ) ;
506+ const originalCode = fs . readFileSync ( pathToFile ) ;
507+
508+ fs . writeFileSync ( pathToFile , "`;" ) ;
509+
510+ await page . waitForSelector ( "#webpack-dev-server-client-overlay" ) ;
511+
512+ const frame = page
513+ . frames ( )
514+ . find ( ( item ) => item . name ( ) === "webpack-dev-server-client-overlay" ) ;
515+
516+ const errorHandle = await frame . $ ( "[data-can-open]" ) ;
517+
518+ await errorHandle . click ( ) ;
519+
520+ await waitForExpect ( ( ) => {
521+ expect ( mockLaunchEditorCb ) . toHaveBeenCalledTimes ( 1 ) ;
522+ } ) ;
523+
524+ fs . writeFileSync ( pathToFile , originalCode ) ;
525+
526+ await browser . close ( ) ;
527+ await server . stop ( ) ;
528+ }
529+ ) ;
530+
481531 it ( 'should not show a warning when "client.overlay" is "false"' , async ( ) => {
482532 const compiler = webpack ( config ) ;
483533
0 commit comments