@@ -4,6 +4,7 @@ const path = require("path");
4
4
const fs = require ( "graceful-fs" ) ;
5
5
const prettier = require ( "prettier" ) ;
6
6
const webpack = require ( "webpack" ) ;
7
+ const waitForExpect = require ( "wait-for-expect" ) ;
7
8
const Server = require ( "../../lib/Server" ) ;
8
9
const config = require ( "../fixtures/overlay-config/webpack.config" ) ;
9
10
const trustedTypesConfig = require ( "../fixtures/overlay-config/trusted-types.webpack.config" ) ;
@@ -478,6 +479,55 @@ describe("overlay", () => {
478
479
await server . stop ( ) ;
479
480
} ) ;
480
481
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
+
481
531
it ( 'should not show a warning when "client.overlay" is "false"' , async ( ) => {
482
532
const compiler = webpack ( config ) ;
483
533
0 commit comments