@@ -4,6 +4,7 @@ var d3SelectAll = require('../../strict-d3').selectAll;
4
4
var Plotly = require ( '../../../lib/index' ) ;
5
5
var downloadCSV = require ( './assets/post_process' ) . downloadCSV ;
6
6
var nSamples = require ( './assets/constants' ) . nSamples ;
7
+ var MAX_RENDERING_TIME = 4000 ;
7
8
8
9
var gd = createGraphDiv ( ) ;
9
10
@@ -277,31 +278,48 @@ describe('Performance test various traces', function() {
277
278
tests . forEach ( function ( spec , index ) {
278
279
samples . forEach ( function ( t ) {
279
280
it ( 'turn: ' + t , function ( done ) {
280
- var startTime , endTime ;
281
+ if ( t === 0 ) {
282
+ tests [ index ] . raw = [ ] ;
283
+ }
281
284
282
- requestAnimationFrame ( function ( ) {
285
+ var timerID ;
286
+ var requestID1 , requestID2 ;
287
+
288
+ var startTime , endTime ;
289
+
290
+ requestID1 = requestAnimationFrame ( function ( ) {
283
291
// Wait for actual rendering instead of promise
284
- requestAnimationFrame ( function ( ) {
292
+ requestID2 = requestAnimationFrame ( function ( ) {
285
293
endTime = performance . now ( ) ;
286
294
287
295
var delta = endTime - startTime ;
288
296
289
- if ( t === 0 ) {
290
- tests [ index ] . raw = [ ] ;
297
+ if ( tests [ index ] . raw [ t ] === undefined ) {
298
+ tests [ index ] . raw [ t ] = delta ;
291
299
}
292
- tests [ index ] . raw [ t ] = delta ;
293
300
294
301
if ( spec . selector ) {
295
302
var nodes = d3SelectAll ( spec . selector ) ;
296
303
expect ( nodes . size ( ) ) . toEqual ( spec . nTraces ) ;
297
304
}
298
305
306
+ clearTimeout ( timerID ) ;
307
+
299
308
done ( ) ;
300
309
} ) ;
301
310
} ) ;
302
311
303
312
var mock = generateMock ( spec ) ;
304
313
314
+ timerID = setTimeout ( ( ) => {
315
+ tests [ index ] . raw [ t ] = 'none' ;
316
+
317
+ cancelAnimationFrame ( requestID2 ) ;
318
+ cancelAnimationFrame ( requestID1 ) ;
319
+
320
+ done . fail ( 'Takes too much time' ) ;
321
+ } , MAX_RENDERING_TIME ) ;
322
+
305
323
startTime = performance . now ( ) ;
306
324
307
325
Plotly . newPlot ( gd , mock ) ;
0 commit comments