[current results ui] Add tab showing flaky tests
Change-Id: I1eb3598b104827a1fe24314e43c598ef0aad48b6
Reviewed-on: https://dart-review.googlesource.com/c/dart_ci/+/164922
Reviewed-by: Alexander Thomas <athom@google.com>
diff --git a/current_results_ui/lib/main.dart b/current_results_ui/lib/main.dart
index 4306d9b..6eaf2f3 100644
--- a/current_results_ui/lib/main.dart
+++ b/current_results_ui/lib/main.dart
@@ -51,7 +51,7 @@
create: (context) => QueryResults(filter)..fetchCurrentResults()),
],
child: const DefaultTabController(
- length: 2,
+ length: 3,
child: const CurrentResultsApp(),
));
}
@@ -78,6 +78,7 @@
tabs: [
Tab(text: 'ALL'),
Tab(text: 'FAILURES'),
+ Tab(text: 'FLAKY'),
],
indicatorColor: Color.fromARGB(255, 63, 81, 181),
labelColor: Color.fromARGB(255, 63, 81, 181),
@@ -108,7 +109,8 @@
builder: (context, results, child) => TabBarView(
children: [
ResultsPanel(results, showAll: true),
- ResultsPanel(results, showAll: false)
+ ResultsPanel(results, showAll: false),
+ ResultsPanel(results, flaky: true),
],
),
),
diff --git a/current_results_ui/lib/results.dart b/current_results_ui/lib/results.dart
index 902f371..423f5df 100644
--- a/current_results_ui/lib/results.dart
+++ b/current_results_ui/lib/results.dart
@@ -23,19 +23,23 @@
class ResultsPanel extends StatelessWidget {
final QueryResults queryResults;
final bool showAll;
+ final bool flaky;
- ResultsPanel(this.queryResults, {this.showAll = true});
+ ResultsPanel(this.queryResults, {this.showAll = false, this.flaky = false});
@override
Widget build(BuildContext context) {
if (queryResults.noQuery) {
return Align(child: QuerySuggestionsPage());
}
- bool hasFailedResult(String name) =>
- queryResults.grouped[name].keys.any((change) => !change.matches);
- final filteredNames = showAll
- ? queryResults.names
- : queryResults.names.where(hasFailedResult).toList();
+ bool isFailed(String name) => queryResults.counts[name].countFailing > 0;
+ bool isFlaky(String name) => queryResults.counts[name].countFlaky > 0;
+ final filter = flaky
+ ? isFlaky
+ : showAll
+ ? (name) => true
+ : isFailed;
+ final filteredNames = queryResults.names.where(filter).toList();
return ListView.builder(
itemCount: filteredNames.length,
itemBuilder: (BuildContext context, int index) {