352
// selectTopFlakyTests selects the top-N flakiest tests that meet minimum signal thresholds.
353
// allRuns is the full set of test runs. Returns normalized test names sorted by failure rate desc.
355
>
type testStats struct {
356
>
fails int
357
>
total int
358
>
}
359
>
stats := make(map[string]*testStats)
360
>
for _, run := range allRuns {
361
>
if run.Skipped {
362
continue
363
}
365
>
if stats[name] == nil {
366
>
stats[name] = &testStats{}
367
>
}
368
>
stats[name].total++
369
>
if run.Failed {
370
>
stats[name].fails++
371
>
}
372
}
373
375
>
name string
376
>
rate float64
377
>
fails int
378
>
}
379
>
var candidates []ranked
380
>
for name, s := range stats {
382
continue
383
}
385
>
name: name,
386
>
rate: float64(s.fails) / float64(s.total),
387
>
fails: s.fails,
388
>
})
389
}
390
393
return candidates[i].rate > candidates[j].rate
394
}
396
})
397
399
>
if cfg.TopN > 0 && cfg.TopN < n {
401
>
}
402
404
>
for i := range names {
406
>
}
408
}
409