@@ -38,6 +38,8 @@ import * as jpeg from 'jpeg-js';
38
38
import * as png from 'pngjs' ;
39
39
import { NotConnectedError } from '../errors' ;
40
40
import { logError } from '../logger' ;
41
+ import { ConsoleMessageLocation } from '../console' ;
42
+ import { JSHandle } from '../javascript' ;
41
43
42
44
const UTILITY_WORLD_NAME = '__playwright_utility_world__' ;
43
45
const BINDING_CALL_MESSAGE = '__playwright_binding_call__' ;
@@ -64,6 +66,7 @@ export class WKPage implements PageDelegate {
64
66
private _firstNonInitialNavigationCommittedPromise : Promise < void > ;
65
67
private _firstNonInitialNavigationCommittedFulfill = ( ) => { } ;
66
68
private _firstNonInitialNavigationCommittedReject = ( e : Error ) => { } ;
69
+ private _lastConsoleMessage : { derivedType : string , text : string , handles : JSHandle [ ] ; count : number , location : ConsoleMessageLocation ; } | null = null ;
67
70
68
71
constructor ( browserContext : WKBrowserContext , pageProxySession : WKSession , opener : WKPage | null ) {
69
72
this . _pageProxySession = pageProxySession ;
@@ -320,6 +323,7 @@ export class WKPage implements PageDelegate {
320
323
helper . addEventListener ( this . _session , 'Page.didRequestOpenWindow' , event => this . _onDidRequestOpenWindow ( event ) ) ,
321
324
helper . addEventListener ( this . _session , 'Runtime.executionContextCreated' , event => this . _onExecutionContextCreated ( event . context ) ) ,
322
325
helper . addEventListener ( this . _session , 'Console.messageAdded' , event => this . _onConsoleMessage ( event ) ) ,
326
+ helper . addEventListener ( this . _session , 'Console.messageRepeatCountUpdated' , event => this . _onConsoleRepeatCountUpdated ( event ) ) ,
323
327
helper . addEventListener ( this . _pageProxySession , 'Dialog.javascriptDialogOpening' , event => this . _onDialog ( event ) ) ,
324
328
helper . addEventListener ( this . _session , 'Page.fileChooserOpened' , event => this . _onFileChooserOpened ( event ) ) ,
325
329
helper . addEventListener ( this . _session , 'Network.requestWillBeSent' , e => this . _onRequestWillBeSent ( this . _session , e ) ) ,
@@ -483,7 +487,33 @@ export class WKPage implements PageDelegate {
483
487
}
484
488
return context . _createHandle ( p ) ;
485
489
} ) ;
486
- this . _page . _addConsoleMessage ( derivedType , handles , { url, lineNumber : ( lineNumber || 1 ) - 1 , columnNumber : ( columnNumber || 1 ) - 1 } , handles . length ? undefined : text ) ;
490
+ this . _lastConsoleMessage = {
491
+ derivedType,
492
+ text,
493
+ handles,
494
+ count : 0 ,
495
+ location : {
496
+ url,
497
+ lineNumber : ( lineNumber || 1 ) - 1 ,
498
+ columnNumber : ( columnNumber || 1 ) - 1 ,
499
+ }
500
+ } ;
501
+ this . _onConsoleRepeatCountUpdated ( { count : 1 } ) ;
502
+ }
503
+
504
+ _onConsoleRepeatCountUpdated ( event : Protocol . Console . messageRepeatCountUpdatedPayload ) {
505
+ if ( this . _lastConsoleMessage ) {
506
+ const {
507
+ derivedType,
508
+ text,
509
+ handles,
510
+ count,
511
+ location
512
+ } = this . _lastConsoleMessage ;
513
+ for ( let i = count ; i < event . count ; ++ i )
514
+ this . _page . _addConsoleMessage ( derivedType , handles , location , handles . length ? undefined : text ) ;
515
+ this . _lastConsoleMessage . count = event . count ;
516
+ }
487
517
}
488
518
489
519
_onDialog ( event : Protocol . Dialog . javascriptDialogOpeningPayload ) {
0 commit comments