Skip to content

Commit

Permalink
Merge pull request ppy#18227 from frenzibyte/fix-results-screen-test-…
Browse files Browse the repository at this point in the history
…failure

Fix intermittent test failures in results screen
  • Loading branch information
smoogipoo authored May 12, 2022
2 parents d4122f1 + 9d30b49 commit effc924
Showing 1 changed file with 24 additions and 8 deletions.
32 changes: 24 additions & 8 deletions osu.Game.Tests/Visual/Ranking/TestSceneResultsScreen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public void TestResultsWithPlayer(double accuracy, ScoreRank rank)
score.Accuracy = accuracy;
score.Rank = rank;

AddStep("load results", () => Child = new TestResultsContainer(screen = createResultsScreen(score)));
loadResultsScreen(() => screen = createResultsScreen(score));
AddUntilStep("wait for loaded", () => screen.IsLoaded);
AddAssert("retry overlay present", () => screen.RetryOverlay != null);
}
Expand All @@ -113,7 +113,7 @@ public void TestResultsForUnranked()
{
UnrankedSoloResultsScreen screen = null;

AddStep("load results", () => Child = new TestResultsContainer(screen = createUnrankedSoloResultsScreen()));
loadResultsScreen(() => screen = createUnrankedSoloResultsScreen());
AddUntilStep("wait for loaded", () => screen.IsLoaded);
AddAssert("retry overlay present", () => screen.RetryOverlay != null);
}
Expand All @@ -123,7 +123,7 @@ public void TestShowHideStatisticsViaOutsideClick()
{
TestResultsScreen screen = null;

AddStep("load results", () => Child = new TestResultsContainer(screen = createResultsScreen()));
loadResultsScreen(() => screen = createResultsScreen());
AddUntilStep("wait for load", () => this.ChildrenOfType<ScorePanelList>().Single().AllPanelsVisible);

AddStep("click expanded panel", () =>
Expand Down Expand Up @@ -162,7 +162,7 @@ public void TestShowHideStatistics()
{
TestResultsScreen screen = null;

AddStep("load results", () => Child = new TestResultsContainer(screen = createResultsScreen()));
loadResultsScreen(() => screen = createResultsScreen());
AddUntilStep("wait for load", () => this.ChildrenOfType<ScorePanelList>().Single().AllPanelsVisible);

AddStep("click expanded panel", () =>
Expand Down Expand Up @@ -201,7 +201,7 @@ public void TestShowStatisticsAndClickOtherPanel()
{
TestResultsScreen screen = null;

AddStep("load results", () => Child = new TestResultsContainer(screen = createResultsScreen()));
loadResultsScreen(() => screen = createResultsScreen());
AddUntilStep("wait for load", () => this.ChildrenOfType<ScorePanelList>().Single().AllPanelsVisible);

ScorePanel expandedPanel = null;
Expand Down Expand Up @@ -231,7 +231,7 @@ public void TestFetchScoresAfterShowingStatistics()

var tcs = new TaskCompletionSource<bool>();

AddStep("load results", () => Child = new TestResultsContainer(screen = new DelayedFetchResultsScreen(TestResources.CreateTestScoreInfo(), tcs.Task)));
loadResultsScreen(() => screen = new DelayedFetchResultsScreen(TestResources.CreateTestScoreInfo(), tcs.Task));

AddUntilStep("wait for loaded", () => screen.IsLoaded);

Expand All @@ -255,7 +255,7 @@ public void TestDownloadButtonInitiallyDisabled()
{
TestResultsScreen screen = null;

AddStep("load results", () => Child = new TestResultsContainer(screen = createResultsScreen()));
loadResultsScreen(() => screen = createResultsScreen());
AddUntilStep("wait for load", () => this.ChildrenOfType<ScorePanelList>().Single().AllPanelsVisible);

AddAssert("download button is disabled", () => !screen.ChildrenOfType<DownloadButton>().Last().Enabled.Value);
Expand All @@ -276,7 +276,7 @@ public void TestRulesetWithNoPerformanceCalculator()
var ruleset = new RulesetWithNoPerformanceCalculator();
var score = TestResources.CreateTestScoreInfo(ruleset.RulesetInfo);

AddStep("load results", () => Child = new TestResultsContainer(createResultsScreen(score)));
loadResultsScreen(() => createResultsScreen(score));
AddUntilStep("wait for load", () => this.ChildrenOfType<ScorePanelList>().Single().AllPanelsVisible);

AddAssert("PP displayed as 0", () =>
Expand All @@ -287,6 +287,22 @@ public void TestRulesetWithNoPerformanceCalculator()
});
}

private void loadResultsScreen(Func<ResultsScreen> createResults)
{
ResultsScreen results = null;

AddStep("load results", () => Child = new TestResultsContainer(results = createResults()));

// expanded panel should be centered the moment results screen is loaded
// but can potentially be scrolled away on certain specific load scenarios.
// see: https://github.com/ppy/osu/issues/18226
AddUntilStep("expanded panel in centre of screen", () =>
{
var expandedPanel = this.ChildrenOfType<ScorePanel>().Single(p => p.State == PanelState.Expanded);
return Precision.AlmostEquals(expandedPanel.ScreenSpaceDrawQuad.Centre.X, results.ScreenSpaceDrawQuad.Centre.X, 1);
});
}

private TestResultsScreen createResultsScreen(ScoreInfo score = null) => new TestResultsScreen(score ?? TestResources.CreateTestScoreInfo());

private UnrankedSoloResultsScreen createUnrankedSoloResultsScreen() => new UnrankedSoloResultsScreen(TestResources.CreateTestScoreInfo());
Expand Down

0 comments on commit effc924

Please sign in to comment.