Skip to content

Make Song Select v2 the new default #33970

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jul 2, 2025
Merged

Conversation

peppy
Copy link
Member

@peppy peppy commented Jul 1, 2025

There are still multiple issues with the new song select, but the most critical ones will be fixed before the next mainstream release. In the mean time, getting the new version in front of devs and (tachyon) users is a good next step.

I can imagine this is going to be a classified in the "painful review" category, but the majority of the changes are in test logic. I did have to refactor or rewrite multiple tests (and delete a few) in order to account for intentional behavioural differences.

The two non-test behavioural changes (562c637 and f8e8041) fix tests which failed after being migrated to v2, where the old behaviours were expected but not implemented yet in v2.

peppy added 5 commits July 1, 2025 17:25
This is being run in the flow where we are providing a specific beatmap
for immediately selection. In an edge case scenario, the carousel may be
pending on a filter operation, which would cause the whole `SelectAndRun`
call to fail when it doesn't need to.

This is reproduced by multiple test scenes. One example is
`TestSceneOpenEditorTimestamp.TestErrorNotifications`.
@peppy peppy force-pushed the song-select-v2-default branch from a40b622 to 94d6260 Compare July 1, 2025 08:25
@@ -81,11 +81,9 @@ public void TestFromSongSelectDifferentRulesetWithConvertDisallowed()
presentAndConfirm(osuImport);

var maniaImport = importBeatmap(2, new ManiaRuleset().RulesetInfo);
confirmBeatmapInSongSelect(maniaImport);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was confirming panel presence, which is no longer a thing because panels which are filtered away do not get created upfront.

@peppy
Copy link
Member Author

peppy commented Jul 1, 2025

First run overlay has a weird issue, footer not displaying and logo in wrong place:

osu! 2025-07-01 at 08 38 12

Fixed via 46dab76


AddStep("Present same beatmap", () => Game.PresentBeatmap(Game.BeatmapManager.QueryBeatmapSet(set => set.ID == beatmapSetGuid)!.Value, beatmap => beatmap.ID == beatmapGuid));
AddUntilStep("Wait for beatmap selected", () => Game.Beatmap.Value.BeatmapInfo.ID == beatmapGuid);
AddStep("Open options", () => InputManager.Key(Key.F3));
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still have to fix these hotkeys no longer aligning. Took the easier way out for now though.

@bdach
Copy link
Collaborator

bdach commented Jul 1, 2025

tests timed out... 🙈

@peppy
Copy link
Member Author

peppy commented Jul 1, 2025

Timeouts will be related to

. I can repro locally but very rarely, will investigate.

@bdach bdach self-requested a review July 1, 2025 11:57
Copy link
Collaborator

@bdach bdach left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would describe review experience as 'not great not terrible'

-2k net diffstat though 🙌🙌🙌🙌

Comment on lines -452 to -453
if (!ensureGlobalBeatmapValid())
return;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this removed call is referenced in a commit a few lines above that should probably be trimmed

// `ensureGlobalBeatmapValid` also performs this checks, but it will change the active selection on fail.
// By checking locally first, we can correctly perform a no-op rather than changing selection.
if (!checkBeatmapValidForSelection(beatmap, carousel.Criteria))
return;

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'm choosing to trust that all relevant tests from here have already been ported for song select v2 and am not double checking it

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did one pass but it wasn't exhaustive. I'll do a second pass tomorrow comparing test-for-test.

Copy link
Member Author

@peppy peppy Jul 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is an absolute clusterfuck as expected. And I'm not sure what the forward path here is. Probably need to go through one-by-one on the removed methods and check whether we want to add back coverage?

Would you rather that's done in this PR or separately? My preference would be opening an issue tracking this separately so it's not blocking this already-delayed task of getting song select out on tachyon as default.

diff --git a/test_comparison b/test_comparison
index e66df27cc2..8c57a07f8f 100644
--- a/test_comparison
+++ b/test_comparison
@@ -1,46 +1,25 @@
-TestScenePlaySongSelect
+TestSceneSongSelect
 
-TestAudioRemainsCorrectOnRulesetChange(bool rulesetsInSameBeatmap)
-TestAudioResuming()
 TestAutoplayShortcut()
 TestAutoplayShortcutKeepsAutoplayIfSelectedAlready()
 TestAutoplayShortcutReturnsInitialModsOnExit()
-TestBeatmapOptionsDisabled()
-TestCarouselSelectionUpdatesOnResume()
-TestChangeBeatmapAfterEnter()
-TestChangeBeatmapBeforeEnter()
-TestChangeBeatmapViaMouseAfterEnter()
-TestChangeBeatmapViaMouseBeforeEnter()
-TestChangeBeatmapWhilePresentingScore()
-TestChangeRulesetWhilePresentingScore()
-TestChangingRulesetOnMultiRulesetBeatmap()
-TestCutInFilterTextBox()
+TestClearModsViaModButtonRightClick()
+TestCookieDoesNothingIfNothingSelected()
 TestDeleteHotkey()
-TestDifficultyIconSelecting()
-TestDifficultyIconSelectingForDifferentRuleset()
-TestDummy()
-TestExternalBeatmapChangeWhileFiltered(bool differentRuleset)
-TestExternalBeatmapChangeWhileFilteredThenRefilter()
-TestFilterOnResumeAfterChange()
-TestFilterableModChange()
-TestGroupedDifficultyIconSelecting()
-TestHardDeleteHandledCorrectly()
-TestHideSetSelectsCorrectBeatmap()
-TestImportUnderCurrentRuleset()
-TestImportUnderDifferentRuleset()
-TestModOverlayToggling()
-TestModsRetainedBetweenSongSelect()
-TestNoFilterOnSimpleResume()
-TestNonFilterableModChange()
-TestPlaceholderBeatmapPresence()
-TestPlaceholderConvertSetting()
-TestPlaceholderStarDifficulty()
-TestPresentNewBeatmapNewRuleset()
-TestPresentNewRulesetNewBeatmap()
-TestSearchTextWithRulesetCriteria()
-TestSelectionRetainedOnBeatmapUpdate()
-TestSingleFilterOnEnter()
-TestSorting()
+TestFooterModOverlay()
+TestFooterMods()
+TestFooterOptions()
+TestFooterOptionsState()
+TestFooterRandom()
+TestFooterRandomViaMouse()
+TestFooterRewind()
+TestFooterRewindViaMouseRight()
+TestFooterRewindViaShiftMouseLeft()
+TestInvalidRulesetDoesNotEnterGameplay()
+TestModSelectCannotBeOpenedAfterConfirmingSelection()
+TestResultsScreenWhenClickingLeaderboardScore()
+TestSelectAfterDeletion()
+TestSelectionChangedFromProtectedToNone()
+TestSelectionChangedFromProtectedToSomething()
+TestSingleFilterWhenEntering()
 TestSpeedChange()
-TestStartAfterUnMatchingFilterDoesNotStart()
-TestTextBoxBeatmapDifficultyCount()

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fine doing this separately as long as it's tracked.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tracking at #33978.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here, trusting the new one has comparable coverage here

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one has 100% coverage (one new test)

diff --git a/test_comparison b/test_comparison
index fc96594abc..205a2ba503 100644
--- a/test_comparison
+++ b/test_comparison
@@ -1,4 +1,4 @@
-TestSceneBeatmapLeaderboard
+TestSceneBeatmapLeaderboardWedge
 
 TestPersonalBest()
 TestGlobalScoresDisplay()
@@ -7,3 +7,4 @@ TestLocalScoresDisplayWorksWhenStartingOffline()
 TestLocalScoresDisplayOnBeatmapEdit()
 TestPlaceholderStates()
 TestUseTheseModsDoesNotCopySystemMods()
+TestPersonalBestWithNullPosition()

@bdach bdach merged commit e270be6 into ppy:master Jul 2, 2025
9 checks passed
@peppy peppy deleted the song-select-v2-default branch July 4, 2025 03:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants