@@ -398,9 +398,9 @@ export async function toHaveScreenshot(
398398 expectScreenshotOptions . expected = helper . updateSnapshots === 'all' ? undefined : expected ;
399399
400400 const { actual, previous, diff, errorMessage, log, timedOut } = await page . _expectScreenshot ( expectScreenshotOptions ) ;
401- const writeFiles = ( ) => {
402- writeFileSync ( helper . expectedPath , actual ! ) ;
403- writeFileSync ( helper . actualPath , actual ! ) ;
401+ const writeFiles = ( actualBuffer : Buffer ) => {
402+ writeFileSync ( helper . expectedPath , actualBuffer ) ;
403+ writeFileSync ( helper . actualPath , actualBuffer ) ;
404404 /* eslint-disable no-console */
405405 console . log ( helper . expectedPath + ' is re-generated, writing actual.' ) ;
406406 return helper . createMatcherResult ( helper . expectedPath + ' running with --update-snapshots, writing actual.' , true ) ;
@@ -410,13 +410,18 @@ export async function toHaveScreenshot(
410410 // Screenshot is matching, but is not necessarily the same as the expected.
411411 if ( helper . updateSnapshots === 'all' && actual && compareBuffersOrStrings ( actual , expected ) ) {
412412 console . log ( helper . expectedPath + ' is re-generated, writing actual.' ) ;
413- return writeFiles ( ) ;
413+ return writeFiles ( actual ) ;
414414 }
415415 return helper . handleMatching ( ) ;
416416 }
417417
418- if ( helper . updateSnapshots === 'changed' || helper . updateSnapshots === 'all' )
419- return writeFiles ( ) ;
418+ if ( helper . updateSnapshots === 'changed' || helper . updateSnapshots === 'all' ) {
419+ if ( actual )
420+ return writeFiles ( actual ) ;
421+ let header = matcherHint ( this , undefined , 'toHaveScreenshot' , receiver , undefined , undefined , timedOut ? timeout : undefined ) ;
422+ header += ' Failed to re-generate expected.\n' ;
423+ return helper . handleDifferent ( actual , expectScreenshotOptions . expected , previous , diff , header , errorMessage , log , this . _stepInfo ) ;
424+ }
420425
421426 const header = matcherHint ( this , undefined , 'toHaveScreenshot' , receiver , undefined , undefined , timedOut ? timeout : undefined ) ;
422427 return helper . handleDifferent ( actual , expectScreenshotOptions . expected , previous , diff , header , errorMessage , log , this . _stepInfo ) ;
0 commit comments