@@ -7,6 +7,7 @@ const promisify = require('../src/utils/promisify');
77const ncp = promisify ( require ( 'ncp' ) ) ;
88const WebSocket = require ( 'ws' ) ;
99const json5 = require ( 'json5' ) ;
10+ const sinon = require ( 'sinon' ) ;
1011
1112describe ( 'hmr' , function ( ) {
1213 let b , ws ;
@@ -299,20 +300,26 @@ describe('hmr', function() {
299300 assert . deepEqual ( outputs , [ 3 , 10 ] ) ;
300301 } ) ;
301302
302- it ( 'should log emitted errors' , async function ( ) {
303+ it ( 'should log emitted errors and show an error overlay ' , async function ( ) {
303304 await ncp ( __dirname + '/integration/commonjs' , __dirname + '/input' ) ;
304305
305306 b = bundler ( __dirname + '/input/index.js' , { watch : true , hmr : true } ) ;
306307 let bundle = await b . bundle ( ) ;
307308
308309 let logs = [ ] ;
309- run ( bundle , {
310- console : {
311- error ( msg ) {
312- logs . push ( msg ) ;
310+ let ctx = run (
311+ bundle ,
312+ {
313+ console : {
314+ error ( msg ) {
315+ logs . push ( msg ) ;
316+ }
313317 }
314- }
315- } ) ;
318+ } ,
319+ { require : false }
320+ ) ;
321+
322+ let spy = sinon . spy ( ctx . document . body , 'appendChild' ) ;
316323
317324 fs . writeFileSync (
318325 __dirname + '/input/local.js' ,
@@ -323,6 +330,7 @@ describe('hmr', function() {
323330
324331 assert . equal ( logs . length , 1 ) ;
325332 assert ( logs [ 0 ] . trim ( ) . startsWith ( '[parcel] 🚨' ) ) ;
333+ assert ( spy . calledOnce ) ;
326334 } ) ;
327335
328336 it ( 'should log when errors resolve' , async function ( ) {
@@ -332,22 +340,32 @@ describe('hmr', function() {
332340 let bundle = await b . bundle ( ) ;
333341
334342 let logs = [ ] ;
335- run ( bundle , {
336- console : {
337- error ( msg ) {
338- logs . push ( msg ) ;
339- } ,
340- log ( msg ) {
341- logs . push ( msg ) ;
343+ let ctx = run (
344+ bundle ,
345+ {
346+ console : {
347+ error ( msg ) {
348+ logs . push ( msg ) ;
349+ } ,
350+ log ( msg ) {
351+ logs . push ( msg ) ;
352+ }
342353 }
343- }
344- } ) ;
354+ } ,
355+ { require : false }
356+ ) ;
357+
358+ let appendSpy = sinon . spy ( ctx . document . body , 'appendChild' ) ;
359+ let removeSpy = sinon . spy ( ctx . document . getElementById ( 'tmp' ) , 'remove' ) ;
345360
346361 fs . writeFileSync (
347362 __dirname + '/input/local.js' ,
348363 'require("fs"; exports.a = 5; exports.b = 5;'
349364 ) ;
350365 await nextEvent ( b , 'buildEnd' ) ;
366+ await sleep ( 50 ) ;
367+
368+ assert ( appendSpy . called ) ;
351369
352370 fs . writeFileSync (
353371 __dirname + '/input/local.js' ,
@@ -356,6 +374,8 @@ describe('hmr', function() {
356374 await nextEvent ( b , 'buildEnd' ) ;
357375 await sleep ( 50 ) ;
358376
377+ assert ( removeSpy . called ) ;
378+
359379 assert . equal ( logs . length , 2 ) ;
360380 assert ( logs [ 0 ] . trim ( ) . startsWith ( '[parcel] 🚨' ) ) ;
361381 assert ( logs [ 1 ] . trim ( ) . startsWith ( '[parcel] ✨' ) ) ;
0 commit comments