Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

Commit 18a237a

Browse files
committed
feat: add total slow tests field to testResultsAggregates
1 parent f6b2bb0 commit 18a237a

File tree

3 files changed

+22
-9
lines changed

3 files changed

+22
-9
lines changed

graphql_api/tests/test_test_analytics.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -662,17 +662,19 @@ def test_test_results_aggregates(self) -> None:
662662
)
663663
res = self.fetch_test_analytics(
664664
repo.name,
665-
"""testResultsAggregates { totalDuration, slowestTestsDuration, totalFails, totalSkips, totalDurationPercentChange, slowestTestsDurationPercentChange, totalFailsPercentChange, totalSkipsPercentChange }""",
665+
"""testResultsAggregates { totalDuration, slowestTestsDuration, totalFails, totalSkips, totalSlowTests, totalDurationPercentChange, slowestTestsDurationPercentChange, totalFailsPercentChange, totalSkipsPercentChange, totalSlowTestsPercentChange }""",
666666
)
667667
assert res["testResultsAggregates"] == {
668668
"totalDuration": 570.0,
669-
"slowestTestsDuration": 29.0,
670-
"totalFails": 10,
671-
"totalSkips": 5,
672669
"totalDurationPercentChange": -63.1068,
670+
"slowestTestsDuration": 29.0,
673671
"slowestTestsDurationPercentChange": -50.84746,
672+
"totalFails": 10,
674673
"totalFailsPercentChange": 100.0,
674+
"totalSkips": 5,
675675
"totalSkipsPercentChange": -50.0,
676+
"totalSlowTests": 1,
677+
"totalSlowTestsPercentChange": 0.0,
676678
}
677679

678680
def test_test_results_aggregates_no_history(self) -> None:
@@ -696,18 +698,20 @@ def test_test_results_aggregates_no_history(self) -> None:
696698

697699
res = self.fetch_test_analytics(
698700
repo.name,
699-
"""testResultsAggregates { totalDuration, slowestTestsDuration, totalFails, totalSkips, totalDurationPercentChange, slowestTestsDurationPercentChange, totalFailsPercentChange, totalSkipsPercentChange }""",
701+
"""testResultsAggregates { totalDuration, slowestTestsDuration, totalFails, totalSkips, totalSlowTests, totalDurationPercentChange, slowestTestsDurationPercentChange, totalFailsPercentChange, totalSkipsPercentChange, totalSlowTestsPercentChange }""",
700702
)
701703

702704
assert res["testResultsAggregates"] == {
703705
"totalDuration": 570.0,
704-
"slowestTestsDuration": 29.0,
705-
"totalFails": 10,
706-
"totalSkips": 5,
707706
"totalDurationPercentChange": None,
707+
"slowestTestsDuration": 29.0,
708708
"slowestTestsDurationPercentChange": None,
709+
"totalFails": 10,
709710
"totalFailsPercentChange": None,
711+
"totalSkips": 5,
710712
"totalSkipsPercentChange": None,
713+
"totalSlowTests": 1,
714+
"totalSlowTestsPercentChange": None,
711715
}
712716

713717
def test_flake_aggregates(self) -> None:

graphql_api/types/test_results_aggregates/test_results_aggregates.graphql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ type TestResultsAggregates {
77
totalFailsPercentChange: Float
88
totalSkips: Int!
99
totalSkipsPercentChange: Float
10+
totalSlowTests: Int!
11+
totalSlowTestsPercentChange: Float
1012
}

utils/test_results.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ def get_test_results_aggregate_numbers(
264264
slowest_tests_duration=slowest_tests_duration,
265265
skips=Sum("skip_count"),
266266
fails=Sum("fail_count"),
267+
total_slow_tests=Value(slow_test_threshold(num_tests)),
267268
)
268269

269270
return test_headers[0] if len(test_headers) > 0 else {}
@@ -282,7 +283,13 @@ def generate_test_results_aggregates(
282283
past_numbers = get_test_results_aggregate_numbers(repo, double_time_ago, since)
283284

284285
return curr_numbers | get_percent_change(
285-
["total_duration", "slowest_tests_duration", "skips", "fails"],
286+
[
287+
"total_duration",
288+
"slowest_tests_duration",
289+
"skips",
290+
"fails",
291+
"total_slow_tests",
292+
],
286293
curr_numbers,
287294
past_numbers,
288295
)

0 commit comments

Comments
 (0)