From c39e06c8a0d510a5bb96574556d059b92da7963b Mon Sep 17 00:00:00 2001 From: Ajay Singh Date: Wed, 16 Oct 2024 11:50:27 -0700 Subject: [PATCH] add slowest test resolvers in API --- .../tests/test_test_results_headers.py | 27 +++++++++++++++++++ .../test_results_aggregates.py | 14 ++++++++++ 2 files changed, 41 insertions(+) diff --git a/graphql_api/tests/test_test_results_headers.py b/graphql_api/tests/test_test_results_headers.py index b6f85fc292..3b05525f60 100644 --- a/graphql_api/tests/test_test_results_headers.py +++ b/graphql_api/tests/test_test_results_headers.py @@ -137,3 +137,30 @@ def test_fetch_test_result_skipped_tests(self) -> None: ] == 29 ) + + def test_fetch_test_result_slow_tests(self) -> None: + query = """ + query { + owner(username: "%s") { + repository(name: "%s") { + ... on Repository { + testAnalytics { + testResultsAggregates { + totalSlowTests + } + } + } + } + } + } + """ % (self.owner.username, self.repository.name) + + result = self.gql_request(query, owner=self.owner) + + assert "errors" not in result + assert ( + result["owner"]["repository"]["testAnalytics"]["testResultsAggregates"][ + "totalSlowTests" + ] + == 1 + ) diff --git a/graphql_api/types/test_results_aggregates/test_results_aggregates.py b/graphql_api/types/test_results_aggregates/test_results_aggregates.py index 0ae81fc477..93b425f94e 100644 --- a/graphql_api/types/test_results_aggregates/test_results_aggregates.py +++ b/graphql_api/types/test_results_aggregates/test_results_aggregates.py @@ -11,6 +11,8 @@ class TestResultsAggregates(TypedDict): total_duration_percent_change: float | None slowest_tests_duration: float slowest_tests_duration_percent_change: float | None + total_slow_tests: int + total_slow_tests_percent_change: float | None fails: int fails_percent_change: float | None skips: int @@ -43,6 +45,18 @@ def resolve_slowest_tests_duration_percent_change( return obj.get("slowest_tests_duration_percent_change") +@test_results_aggregates_bindable.field("totalSlowTests") +def resolve_total_slow_tests(obj: TestResultsAggregates, _: GraphQLResolveInfo) -> int: + return obj["total_slow_tests"] + + +@test_results_aggregates_bindable.field("totalSlowTestsPercentChange") +def resolve_total_slow_tests_percent_change( + obj: TestResultsAggregates, _: GraphQLResolveInfo +) -> float | None: + return obj.get("total_slow_tests_percent_change") + + @test_results_aggregates_bindable.field("totalFails") def resolve_total_fails(obj: TestResultsAggregates, _: GraphQLResolveInfo) -> int: return obj["fails"]