@@ -22,7 +22,7 @@ const TEST_STACK = `Error: ${TRACE_ERROR_MESSAGE}
2222 at call2 (async https://example2.com/bundle3.js:4:5)
2323 at call1 (https://example1.com/bundle2.js:3:4)` ;
2424
25- describe ( 'wrappers full ' , ( ) => {
25+ describe ( 'wrappers' , ( ) => {
2626 let wrapper : Wrapper ;
2727
2828 beforeEach ( ( ) => {
@@ -51,16 +51,17 @@ describe('wrappers full', () => {
5151 expect ( wrapper . setTimeoutHistory . size ) . toBe ( 0 ) ;
5252 expect ( wrapper . clearTimeoutHistory . size ) . toBe ( 0 ) ;
5353
54- const handler = setTimeout ( ( ) => { } , 123 ) ;
54+ const handler = setTimeout ( ( ) => { } , 1e3 ) ;
55+
5556 expect ( wrapper . onlineTimers . size ) . toBe ( 1 ) ;
5657 clearTimeout ( handler ) ;
57-
5858 expect ( wrapper . onlineTimers . size ) . toBe ( 0 ) ;
59+
5960 expect ( wrapper . clearTimeoutHistory . size ) . toBe ( 1 ) ;
6061 expect ( wrapper . setTimeoutHistory . size ) . toBe ( 1 ) ;
6162 } ) ;
6263
63- test ( 'setTimeoutHistory - isOnline/canceledByTraceId handled after timer fired' , async ( ) => {
64+ test ( 'setTimeoutHistory - isOnline/canceledByTraceId/selfTime handled after timer fired' , async ( ) => {
6465 const DELAY = 5 ;
6566 setTimeout ( ( ) => { } , DELAY ) ;
6667
@@ -72,9 +73,10 @@ describe('wrappers full', () => {
7273
7374 expect ( rec . isOnline ) . toBe ( false ) ;
7475 expect ( rec . canceledByTraceIds ) . toBe ( null ) ;
76+ expect ( rec . selfTime ) . not . toBeNull ( ) ;
7577 } ) ;
7678
77- test ( 'setTimeoutHistory - isOnline/canceledByTraceId handled after timer canceled' , ( ) => {
79+ test ( 'setTimeoutHistory - isOnline/canceledByTraceId/selfTime handled after timer canceled' , ( ) => {
7880 function setTimeout_function ( delay : number ) {
7981 return Number ( setTimeout ( ( ) => { } , delay ) ) ;
8082 }
@@ -96,6 +98,7 @@ describe('wrappers full', () => {
9698 const rec = Array . from ( wrapper . setTimeoutHistory . values ( ) ) [ 0 ] ;
9799
98100 expect ( rec . isOnline ) . toBe ( false ) ;
101+ expect ( rec . selfTime ) . toBeNull ( ) ;
99102 if ( rec . canceledByTraceIds ) {
100103 expect ( rec . canceledByTraceIds . length ) . toBe ( 2 ) ;
101104
@@ -121,6 +124,7 @@ describe('wrappers full', () => {
121124 expect ( rec . traceId . length ) . toBeGreaterThan ( 0 ) ;
122125
123126 clearTimeout ( handler ) ;
127+ expect ( rec . selfTime ) . toBeNull ( ) ;
124128 } ) ;
125129
126130 test ( 'setTimeoutHistory - invalid delay' , ( ) => {
@@ -133,12 +137,35 @@ describe('wrappers full', () => {
133137 expect ( rec . isEval ) . toBe ( false ) ;
134138 } ) ;
135139
140+ test ( 'setTimeout - poling registers selfTime' , async ( ) => {
141+ await new Promise < void > ( ( resolve ) => {
142+ let called = 0 ;
143+ let handler : number ;
144+
145+ function poll ( ) {
146+ called ++ ;
147+
148+ if ( called > 1 ) {
149+ resolve ( ) ;
150+ } else {
151+ handler && clearTimeout ( handler ) ;
152+ handler = Number ( setTimeout ( poll , 2 ) ) ;
153+ }
154+ }
155+ poll ( ) ;
156+ } ) ;
157+
158+ const rec = Array . from ( wrapper . setTimeoutHistory . values ( ) ) [ 0 ] ;
159+ expect ( rec . selfTime ) . not . toBeNull ( ) ;
160+ } , 1e3 ) ;
161+
136162 test ( 'clearTimeoutHistory - valid handler' , ( ) => {
137163 const handler = setTimeout ( ( ) => { } , 1e3 ) ;
138164 clearTimeout ( handler ) ;
139165
140166 const rec = Array . from ( wrapper . clearTimeoutHistory . values ( ) ) [ 0 ] ;
141167
168+ expect ( rec . handler ) . toBe ( handler ) ;
142169 expect ( rec . delay ) . toBe ( 1e3 ) ;
143170 } ) ;
144171
@@ -182,16 +209,21 @@ describe('wrappers full', () => {
182209 expect ( rec . isOnline ) . toBe ( false ) ;
183210 } ) ;
184211
185- test ( 'setIntervalHistory - valid delay' , ( ) => {
212+ test ( 'setIntervalHistory - valid delay' , async ( ) => {
186213 const DELAY = 123 ;
187- const handler = setInterval ( ( ) => { } , DELAY ) ;
214+ const handler = await new Promise < number > ( ( resolve ) => {
215+ const handler = setInterval ( ( ) => {
216+ resolve ( Number ( handler ) ) ;
217+ } , DELAY ) ;
218+ } ) ;
188219 const rec = Array . from ( wrapper . setIntervalHistory . values ( ) ) [ 0 ] ;
189220
190221 expect ( rec . calls ) . toBe ( 1 ) ;
191222 expect ( rec . delay ) . toBe ( DELAY ) ;
192223 expect ( rec . isEval ) . toBe ( false ) ;
193224 expect ( rec . trace . length ) . toBeGreaterThan ( 1 ) ;
194225 expect ( rec . traceId . length ) . toBeGreaterThan ( 0 ) ;
226+ expect ( rec . selfTime ) . not . toBeNull ( ) ;
195227
196228 clearInterval ( handler ) ;
197229 } ) ;
@@ -250,6 +282,7 @@ describe('wrappers full', () => {
250282 expect ( rec . returnedValue ) . toBe ( RESULT ) ;
251283 expect ( rec . trace . length ) . toBeGreaterThan ( 1 ) ;
252284 expect ( rec . traceId . length ) . toBeGreaterThan ( 0 ) ;
285+ expect ( rec . selfTime ) . not . toBeNull ( ) ;
253286 } ) ;
254287
255288 test ( 'evalHistory - detects local scope usage' , ( ) => {
@@ -304,6 +337,7 @@ describe('wrappers full', () => {
304337 expect ( rec . calls ) . toBe ( 1 ) ;
305338 expect ( rec . trace . length ) . toBeGreaterThan ( 1 ) ;
306339 expect ( rec . traceId . length ) . toBeGreaterThan ( 1 ) ;
340+ expect ( rec . selfTime ) . not . toBeNull ( ) ;
307341 expect ( wrapper . callCounter . requestAnimationFrame ) . toBe ( 1 ) ;
308342 } ) ;
309343
0 commit comments