From a1c5eda05b45b7b9ae07ef2927482105e3c636bc Mon Sep 17 00:00:00 2001
From: Dean Herbert <pe@ppy.sh>
Date: Mon, 25 Mar 2019 01:02:36 +0900
Subject: [PATCH] Add grouping of visual tests

---
 .../TestCaseBackgroundScreenBeatmap.cs        |  2 +-
 .../{ => Components}/TestCaseIdleTracker.cs   |  2 +-
 .../TestCasePollingComponent.cs               |  2 +-
 .../TestCasePreviewTrackManager.cs            |  2 +-
 .../TestCaseBeatDivisorControl.cs             |  2 +-
 .../{ => Editor}/TestCaseEditorCompose.cs     |  2 +-
 .../TestCaseEditorComposeRadioButtons.cs      |  2 +-
 .../TestCaseEditorComposeTimeline.cs          |  4 ++--
 .../{ => Editor}/TestCaseEditorMenuBar.cs     |  2 +-
 .../TestCaseEditorSeekSnapping.cs             |  2 +-
 .../TestCaseEditorSummaryTimeline.cs          |  6 ++---
 .../{ => Editor}/TestCaseHitObjectComposer.cs |  4 ++--
 .../{ => Editor}/TestCasePlaybackControl.cs   |  2 +-
 .../{ => Editor}/TestCaseWaveContainer.cs     |  2 +-
 .../Visual/{ => Editor}/TestCaseWaveform.cs   |  6 ++---
 .../TestCaseZoomableScrollContainer.cs        |  2 +-
 .../Visual/{ => Gameplay}/TestCaseAutoplay.cs |  2 +-
 .../{ => Gameplay}/TestCaseBreakOverlay.cs    |  4 ++--
 .../TestCaseGameplayMenuOverlay.cs            |  4 ++--
 .../TestCaseHoldForMenuButton.cs              |  2 +-
 .../{ => Gameplay}/TestCaseKeyCounter.cs      |  2 +-
 .../{ => Gameplay}/TestCaseMedalOverlay.cs    |  2 +-
 .../Visual/{ => Gameplay}/TestCasePause.cs    |  2 +-
 .../{ => Gameplay}/TestCasePlayerLoader.cs    |  2 +-
 .../TestCasePlayerReferenceLeaking.cs         |  2 +-
 .../Visual/{ => Gameplay}/TestCaseReplay.cs   |  2 +-
 .../TestCaseReplaySettingsOverlay.cs          |  2 +-
 .../Visual/{ => Gameplay}/TestCaseResults.cs  |  2 +-
 .../{ => Gameplay}/TestCaseScoreCounter.cs    |  2 +-
 .../TestCaseScrollingHitObjects.cs            |  4 ++--
 .../{ => Gameplay}/TestCaseSkinReloadable.cs  |  2 +-
 .../{ => Gameplay}/TestCaseSkipOverlay.cs     |  2 +-
 .../{ => Gameplay}/TestCaseSongProgress.cs    |  2 +-
 .../{ => Gameplay}/TestCaseStoryboard.cs      |  2 +-
 .../Visual/{ => Menus}/TestCaseDisclaimer.cs  |  2 +-
 .../{ => Menus}/TestCaseIntroSequence.cs      |  4 ++--
 .../{ => Menus}/TestCaseLoaderAnimation.cs    |  2 +-
 .../Visual/{ => Menus}/TestCaseToolbar.cs     |  2 +-
 .../TestCaseLoungeRoomsContainer.cs           |  2 +-
 .../{ => Multiplayer}/TestCaseMatchHeader.cs  |  2 +-
 .../TestCaseMatchHostInfo.cs                  |  2 +-
 .../{ => Multiplayer}/TestCaseMatchInfo.cs    |  2 +-
 .../TestCaseMatchLeaderboard.cs               |  2 +-
 .../TestCaseMatchParticipants.cs              |  2 +-
 .../{ => Multiplayer}/TestCaseMatchResults.cs |  2 +-
 .../TestCaseMatchSettingsOverlay.cs           |  2 +-
 .../{ => Multiplayer}/TestCaseMultiHeader.cs  |  2 +-
 .../{ => Multiplayer}/TestCaseMultiScreen.cs  |  7 +++---
 .../{ => Multiplayer}/TestCaseRoomStatus.cs   |  2 +-
 .../TestCaseAccountCreationOverlay.cs         |  2 +-
 .../{ => Online}/TestCaseBadgeContainer.cs    |  2 +-
 .../{ => Online}/TestCaseBeatmapSetOverlay.cs |  2 +-
 .../{ => Online}/TestCaseChannelTabControl.cs |  2 +-
 .../{ => Online}/TestCaseChatDisplay.cs       |  2 +-
 .../Visual/{ => Online}/TestCaseChatLink.cs   | 18 +++++++--------
 .../Visual/{ => Online}/TestCaseDirect.cs     |  2 +-
 .../{ => Online}/TestCaseDirectPanel.cs       |  2 +-
 .../TestCaseExternalLinkButton.cs             |  2 +-
 .../Visual/{ => Online}/TestCaseGraph.cs      |  2 +-
 .../{ => Online}/TestCaseHistoricalSection.cs |  2 +-
 .../Visual/{ => Online}/TestCaseRankGraph.cs  | 10 ++++-----
 .../Visual/{ => Online}/TestCaseSocial.cs     |  2 +-
 .../TestCaseStandAloneChatDisplay.cs          |  2 +-
 .../Visual/{ => Online}/TestCaseUserPanel.cs  |  2 +-
 .../{ => Online}/TestCaseUserProfile.cs       |  2 +-
 .../TestCaseUserProfileRecentSection.cs       | 10 ++++-----
 .../Visual/{ => Online}/TestCaseUserRanks.cs  |  8 +++----
 .../TestCaseKeyConfiguration.cs               |  2 +-
 .../Visual/{ => Settings}/TestCaseSettings.cs |  2 +-
 .../TestCaseBeatmapCarousel.cs                |  2 +-
 .../TestCaseBeatmapDetailArea.cs              |  2 +-
 .../TestCaseBeatmapDetails.cs                 |  2 +-
 .../TestCaseBeatmapInfoWedge.cs               |  4 ++--
 .../TestCaseBeatmapOptionsOverlay.cs          |  2 +-
 .../TestCaseBeatmapScoresContainer.cs         | 14 ++++++------
 .../{ => SongSelect}/TestCaseLeaderboard.cs   | 12 +++++-----
 .../TestCasePlaySongSelect.cs                 |  4 ++--
 .../{ => Tournament}/TestCaseDrawings.cs      |  2 +-
 .../TestCaseBeatSyncedContainer.cs            |  6 ++---
 .../TestCaseBreadcrumbs.cs                    |  2 +-
 .../TestCaseButtonSystem.cs                   |  2 +-
 .../TestCaseContextMenu.cs                    |  4 ++--
 .../{ => UserInterface}/TestCaseCursors.cs    |  2 +-
 .../TestCaseDialogOverlay.cs                  |  2 +-
 .../TestCaseDrawableDate.cs                   |  2 +-
 .../TestCaseHoldToConfirmOverlay.cs           |  2 +-
 .../{ => UserInterface}/TestCaseIconButton.cs |  6 ++---
 .../TestCaseLabelledTextBox.cs                |  6 ++---
 .../TestCaseLoadingAnimation.cs               |  2 +-
 .../{ => UserInterface}/TestCaseMods.cs       | 22 +++++++++----------
 .../TestCaseMusicController.cs                |  2 +-
 .../TestCaseNotificationOverlay.cs            |  2 +-
 .../TestCaseOnScreenDisplay.cs                |  2 +-
 .../TestCaseParallaxContainer.cs              |  2 +-
 .../TestCasePopupDialog.cs                    |  2 +-
 .../TestCaseScreenBreadcrumbControl.cs        |  2 +-
 .../{ => UserInterface}/TestCaseTabControl.cs |  2 +-
 .../TestCaseTextAwesome.cs                    |  2 +-
 .../TestCaseTwoLayerButton.cs                 |  2 +-
 ...stCaseUpdateableBeatmapBackgroundSprite.cs |  2 +-
 .../TestCaseVolumePieces.cs                   |  2 +-
 101 files changed, 162 insertions(+), 163 deletions(-)
 rename osu.Game.Tests/Visual/{ => Background}/TestCaseBackgroundScreenBeatmap.cs (99%)
 rename osu.Game.Tests/Visual/{ => Components}/TestCaseIdleTracker.cs (99%)
 rename osu.Game.Tests/Visual/{ => Components}/TestCasePollingComponent.cs (99%)
 rename osu.Game.Tests/Visual/{ => Components}/TestCasePreviewTrackManager.cs (99%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseBeatDivisorControl.cs (95%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseEditorCompose.cs (95%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseEditorComposeRadioButtons.cs (97%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseEditorComposeTimeline.cs (99%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseEditorMenuBar.cs (99%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseEditorSeekSnapping.cs (99%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseEditorSummaryTimeline.cs (96%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseHitObjectComposer.cs (98%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCasePlaybackControl.cs (96%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseWaveContainer.cs (97%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseWaveform.cs (98%)
 rename osu.Game.Tests/Visual/{ => Editor}/TestCaseZoomableScrollContainer.cs (99%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseAutoplay.cs (97%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseBreakOverlay.cs (98%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseGameplayMenuOverlay.cs (99%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseHoldForMenuButton.cs (97%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseKeyCounter.cs (98%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseMedalOverlay.cs (95%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCasePause.cs (99%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCasePlayerLoader.cs (98%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCasePlayerReferenceLeaking.cs (97%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseReplay.cs (97%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseReplaySettingsOverlay.cs (97%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseResults.cs (97%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseScoreCounter.cs (98%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseScrollingHitObjects.cs (99%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseSkinReloadable.cs (99%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseSkipOverlay.cs (91%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseSongProgress.cs (98%)
 rename osu.Game.Tests/Visual/{ => Gameplay}/TestCaseStoryboard.cs (98%)
 rename osu.Game.Tests/Visual/{ => Menus}/TestCaseDisclaimer.cs (96%)
 rename osu.Game.Tests/Visual/{ => Menus}/TestCaseIntroSequence.cs (97%)
 rename osu.Game.Tests/Visual/{ => Menus}/TestCaseLoaderAnimation.cs (99%)
 rename osu.Game.Tests/Visual/{ => Menus}/TestCaseToolbar.cs (97%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseLoungeRoomsContainer.cs (98%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseMatchHeader.cs (97%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseMatchHostInfo.cs (95%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseMatchInfo.cs (98%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseMatchLeaderboard.cs (97%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseMatchParticipants.cs (97%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseMatchResults.cs (98%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseMatchSettingsOverlay.cs (99%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseMultiHeader.cs (96%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseMultiScreen.cs (79%)
 rename osu.Game.Tests/Visual/{ => Multiplayer}/TestCaseRoomStatus.cs (97%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseAccountCreationOverlay.cs (97%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseBadgeContainer.cs (98%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseBeatmapSetOverlay.cs (99%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseChannelTabControl.cs (99%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseChatDisplay.cs (97%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseChatLink.cs (99%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseDirect.cs (99%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseDirectPanel.cs (97%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseExternalLinkButton.cs (94%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseGraph.cs (97%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseHistoricalSection.cs (97%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseRankGraph.cs (98%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseSocial.cs (98%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseStandAloneChatDisplay.cs (98%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseUserPanel.cs (98%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseUserProfile.cs (99%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseUserProfileRecentSection.cs (99%)
 rename osu.Game.Tests/Visual/{ => Online}/TestCaseUserRanks.cs (97%)
 rename osu.Game.Tests/Visual/{ => Settings}/TestCaseKeyConfiguration.cs (93%)
 rename osu.Game.Tests/Visual/{ => Settings}/TestCaseSettings.cs (95%)
 rename osu.Game.Tests/Visual/{ => SongSelect}/TestCaseBeatmapCarousel.cs (99%)
 rename osu.Game.Tests/Visual/{ => SongSelect}/TestCaseBeatmapDetailArea.cs (99%)
 rename osu.Game.Tests/Visual/{ => SongSelect}/TestCaseBeatmapDetails.cs (99%)
 rename osu.Game.Tests/Visual/{ => SongSelect}/TestCaseBeatmapInfoWedge.cs (99%)
 rename osu.Game.Tests/Visual/{ => SongSelect}/TestCaseBeatmapOptionsOverlay.cs (96%)
 rename osu.Game.Tests/Visual/{ => SongSelect}/TestCaseBeatmapScoresContainer.cs (99%)
 rename osu.Game.Tests/Visual/{ => SongSelect}/TestCaseLeaderboard.cs (99%)
 rename osu.Game.Tests/Visual/{ => SongSelect}/TestCasePlaySongSelect.cs (99%)
 rename osu.Game.Tests/Visual/{ => Tournament}/TestCaseDrawings.cs (98%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseBeatSyncedContainer.cs (99%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseBreadcrumbs.cs (96%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseButtonSystem.cs (96%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseContextMenu.cs (98%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseCursors.cs (99%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseDialogOverlay.cs (98%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseDrawableDate.cs (98%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseHoldToConfirmOverlay.cs (97%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseIconButton.cs (98%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseLabelledTextBox.cs (96%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseLoadingAnimation.cs (97%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseMods.cs (99%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseMusicController.cs (95%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseNotificationOverlay.cs (99%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseOnScreenDisplay.cs (98%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseParallaxContainer.cs (96%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCasePopupDialog.cs (96%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseScreenBreadcrumbControl.cs (99%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseTabControl.cs (96%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseTextAwesome.cs (97%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseTwoLayerButton.cs (90%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseUpdateableBeatmapBackgroundSprite.cs (98%)
 rename osu.Game.Tests/Visual/{ => UserInterface}/TestCaseVolumePieces.cs (96%)

diff --git a/osu.Game.Tests/Visual/TestCaseBackgroundScreenBeatmap.cs b/osu.Game.Tests/Visual/Background/TestCaseBackgroundScreenBeatmap.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseBackgroundScreenBeatmap.cs
rename to osu.Game.Tests/Visual/Background/TestCaseBackgroundScreenBeatmap.cs
index ba3a02a843..e05fb2b306 100644
--- a/osu.Game.Tests/Visual/TestCaseBackgroundScreenBeatmap.cs
+++ b/osu.Game.Tests/Visual/Background/TestCaseBackgroundScreenBeatmap.cs
@@ -33,7 +33,7 @@ using osu.Game.Users;
 using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Background
 {
     [TestFixture]
     public class TestCaseBackgroundScreenBeatmap : ManualInputManagerTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseIdleTracker.cs b/osu.Game.Tests/Visual/Components/TestCaseIdleTracker.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseIdleTracker.cs
rename to osu.Game.Tests/Visual/Components/TestCaseIdleTracker.cs
index a7a1831ba7..bf59c116bb 100644
--- a/osu.Game.Tests/Visual/TestCaseIdleTracker.cs
+++ b/osu.Game.Tests/Visual/Components/TestCaseIdleTracker.cs
@@ -9,7 +9,7 @@ using osu.Game.Input;
 using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Components
 {
     [TestFixture]
     public class TestCaseIdleTracker : ManualInputManagerTestCase
diff --git a/osu.Game.Tests/Visual/TestCasePollingComponent.cs b/osu.Game.Tests/Visual/Components/TestCasePollingComponent.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCasePollingComponent.cs
rename to osu.Game.Tests/Visual/Components/TestCasePollingComponent.cs
index 63f4f88948..6582145f6e 100644
--- a/osu.Game.Tests/Visual/TestCasePollingComponent.cs
+++ b/osu.Game.Tests/Visual/Components/TestCasePollingComponent.cs
@@ -13,7 +13,7 @@ using osu.Game.Online;
 using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Components
 {
     public class TestCasePollingComponent : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCasePreviewTrackManager.cs b/osu.Game.Tests/Visual/Components/TestCasePreviewTrackManager.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCasePreviewTrackManager.cs
rename to osu.Game.Tests/Visual/Components/TestCasePreviewTrackManager.cs
index 87a1fb0faf..4b6ae696fe 100644
--- a/osu.Game.Tests/Visual/TestCasePreviewTrackManager.cs
+++ b/osu.Game.Tests/Visual/Components/TestCasePreviewTrackManager.cs
@@ -8,7 +8,7 @@ using osu.Framework.Graphics.Containers;
 using osu.Game.Audio;
 using osu.Game.Beatmaps;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Components
 {
     public class TestCasePreviewTrackManager : OsuTestCase, IPreviewTrackOwner
     {
diff --git a/osu.Game.Tests/Visual/TestCaseBeatDivisorControl.cs b/osu.Game.Tests/Visual/Editor/TestCaseBeatDivisorControl.cs
similarity index 95%
rename from osu.Game.Tests/Visual/TestCaseBeatDivisorControl.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseBeatDivisorControl.cs
index daf71a6447..e822e01110 100644
--- a/osu.Game.Tests/Visual/TestCaseBeatDivisorControl.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseBeatDivisorControl.cs
@@ -9,7 +9,7 @@ using osu.Game.Screens.Edit;
 using osu.Game.Screens.Edit.Compose.Components;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     public class TestCaseBeatDivisorControl : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseEditorCompose.cs b/osu.Game.Tests/Visual/Editor/TestCaseEditorCompose.cs
similarity index 95%
rename from osu.Game.Tests/Visual/TestCaseEditorCompose.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseEditorCompose.cs
index a52454d684..aa7c7f5cb3 100644
--- a/osu.Game.Tests/Visual/TestCaseEditorCompose.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseEditorCompose.cs
@@ -9,7 +9,7 @@ using osu.Game.Rulesets.Osu;
 using osu.Game.Screens.Edit.Compose;
 using osu.Game.Tests.Beatmaps;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     public class TestCaseEditorCompose : EditorClockTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseEditorComposeRadioButtons.cs b/osu.Game.Tests/Visual/Editor/TestCaseEditorComposeRadioButtons.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseEditorComposeRadioButtons.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseEditorComposeRadioButtons.cs
index 5a4ac77372..499db1b69f 100644
--- a/osu.Game.Tests/Visual/TestCaseEditorComposeRadioButtons.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseEditorComposeRadioButtons.cs
@@ -7,7 +7,7 @@ using NUnit.Framework;
 using osu.Framework.Graphics;
 using osu.Game.Screens.Edit.Components.RadioButtons;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     public class TestCaseEditorComposeRadioButtons : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseEditorComposeTimeline.cs b/osu.Game.Tests/Visual/Editor/TestCaseEditorComposeTimeline.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseEditorComposeTimeline.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseEditorComposeTimeline.cs
index 9ae9b55546..d7712293c3 100644
--- a/osu.Game.Tests/Visual/TestCaseEditorComposeTimeline.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseEditorComposeTimeline.cs
@@ -6,7 +6,6 @@ using System.Collections.Generic;
 using NUnit.Framework;
 using osu.Framework.Allocation;
 using osu.Framework.Bindables;
-using osuTK;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Shapes;
@@ -14,9 +13,10 @@ using osu.Framework.Graphics.UserInterface;
 using osu.Framework.Timing;
 using osu.Game.Beatmaps;
 using osu.Game.Screens.Edit.Compose.Components.Timeline;
+using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     public class TestCaseEditorComposeTimeline : EditorClockTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseEditorMenuBar.cs b/osu.Game.Tests/Visual/Editor/TestCaseEditorMenuBar.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseEditorMenuBar.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseEditorMenuBar.cs
index 2abbf7cb80..b012d4b52d 100644
--- a/osu.Game.Tests/Visual/TestCaseEditorMenuBar.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseEditorMenuBar.cs
@@ -10,7 +10,7 @@ using osu.Framework.Graphics.UserInterface;
 using osu.Game.Graphics.UserInterface;
 using osu.Game.Screens.Edit.Components.Menus;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     public class TestCaseEditorMenuBar : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseEditorSeekSnapping.cs b/osu.Game.Tests/Visual/Editor/TestCaseEditorSeekSnapping.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseEditorSeekSnapping.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseEditorSeekSnapping.cs
index 0ec87e6f52..9daba54b58 100644
--- a/osu.Game.Tests/Visual/TestCaseEditorSeekSnapping.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseEditorSeekSnapping.cs
@@ -14,7 +14,7 @@ using osu.Game.Tests.Beatmaps;
 using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     public class TestCaseEditorSeekSnapping : EditorClockTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseEditorSummaryTimeline.cs b/osu.Game.Tests/Visual/Editor/TestCaseEditorSummaryTimeline.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseEditorSummaryTimeline.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseEditorSummaryTimeline.cs
index 305924958b..99d6385804 100644
--- a/osu.Game.Tests/Visual/TestCaseEditorSummaryTimeline.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseEditorSummaryTimeline.cs
@@ -6,12 +6,12 @@ using System.Collections.Generic;
 using NUnit.Framework;
 using osu.Framework.Allocation;
 using osu.Framework.Graphics;
-using osuTK;
-using osu.Game.Screens.Edit.Components.Timelines.Summary;
 using osu.Game.Rulesets.Osu;
+using osu.Game.Screens.Edit.Components.Timelines.Summary;
 using osu.Game.Tests.Beatmaps;
+using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     public class TestCaseEditorSummaryTimeline : EditorClockTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseHitObjectComposer.cs b/osu.Game.Tests/Visual/Editor/TestCaseHitObjectComposer.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseHitObjectComposer.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseHitObjectComposer.cs
index 988c0459d4..be335fb71f 100644
--- a/osu.Game.Tests/Visual/TestCaseHitObjectComposer.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseHitObjectComposer.cs
@@ -7,7 +7,6 @@ using JetBrains.Annotations;
 using NUnit.Framework;
 using osu.Framework.Allocation;
 using osu.Framework.Timing;
-using osuTK;
 using osu.Game.Beatmaps;
 using osu.Game.Rulesets.Edit;
 using osu.Game.Rulesets.Objects;
@@ -20,8 +19,9 @@ using osu.Game.Rulesets.Osu.Objects;
 using osu.Game.Screens.Edit.Compose;
 using osu.Game.Screens.Edit.Compose.Components;
 using osu.Game.Tests.Beatmaps;
+using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     [Cached(Type = typeof(IPlacementHandler))]
diff --git a/osu.Game.Tests/Visual/TestCasePlaybackControl.cs b/osu.Game.Tests/Visual/Editor/TestCasePlaybackControl.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCasePlaybackControl.cs
rename to osu.Game.Tests/Visual/Editor/TestCasePlaybackControl.cs
index abcff24c67..7d9b43251e 100644
--- a/osu.Game.Tests/Visual/TestCasePlaybackControl.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCasePlaybackControl.cs
@@ -10,7 +10,7 @@ using osu.Game.Screens.Edit.Components;
 using osu.Game.Tests.Beatmaps;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     public class TestCasePlaybackControl : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseWaveContainer.cs b/osu.Game.Tests/Visual/Editor/TestCaseWaveContainer.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseWaveContainer.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseWaveContainer.cs
index 07a282a1a7..e87304ded6 100644
--- a/osu.Game.Tests/Visual/TestCaseWaveContainer.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseWaveContainer.cs
@@ -12,7 +12,7 @@ using osu.Game.Graphics.Sprites;
 using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     public class TestCaseWaveContainer : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseWaveform.cs b/osu.Game.Tests/Visual/Editor/TestCaseWaveform.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseWaveform.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseWaveform.cs
index 9330070392..c35e8741c1 100644
--- a/osu.Game.Tests/Visual/TestCaseWaveform.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseWaveform.cs
@@ -2,16 +2,16 @@
 // See the LICENCE file in the repository root for full licence text.
 
 using NUnit.Framework;
-using osuTK;
-using osuTK.Graphics;
 using osu.Framework.Allocation;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Audio;
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Shapes;
 using osu.Game.Graphics.Sprites;
+using osuTK;
+using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     [TestFixture]
     public class TestCaseWaveform : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseZoomableScrollContainer.cs b/osu.Game.Tests/Visual/Editor/TestCaseZoomableScrollContainer.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseZoomableScrollContainer.cs
rename to osu.Game.Tests/Visual/Editor/TestCaseZoomableScrollContainer.cs
index c3e8e4e05f..e2cf1ef28a 100644
--- a/osu.Game.Tests/Visual/TestCaseZoomableScrollContainer.cs
+++ b/osu.Game.Tests/Visual/Editor/TestCaseZoomableScrollContainer.cs
@@ -14,7 +14,7 @@ using osu.Game.Screens.Edit.Compose.Components.Timeline;
 using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Editor
 {
     public class TestCaseZoomableScrollContainer : ManualInputManagerTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseAutoplay.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseAutoplay.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseAutoplay.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseAutoplay.cs
index 4d6a0ae7b8..2b0254f232 100644
--- a/osu.Game.Tests/Visual/TestCaseAutoplay.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseAutoplay.cs
@@ -7,7 +7,7 @@ using osu.Game.Rulesets;
 using osu.Game.Rulesets.Scoring;
 using osu.Game.Screens.Play;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [Description("Player instantiated with an autoplay mod.")]
     public class TestCaseAutoplay : AllPlayersTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseBreakOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseBreakOverlay.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseBreakOverlay.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseBreakOverlay.cs
index f45d3c98ca..dda8005f70 100644
--- a/osu.Game.Tests/Visual/TestCaseBreakOverlay.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseBreakOverlay.cs
@@ -1,12 +1,12 @@
 // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.
 
-using osu.Game.Beatmaps.Timing;
 using System.Collections.Generic;
 using NUnit.Framework;
+using osu.Game.Beatmaps.Timing;
 using osu.Game.Screens.Play;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseBreakOverlay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseGameplayMenuOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseGameplayMenuOverlay.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseGameplayMenuOverlay.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseGameplayMenuOverlay.cs
index 0a240186d2..8e43bf6d3a 100644
--- a/osu.Game.Tests/Visual/TestCaseGameplayMenuOverlay.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseGameplayMenuOverlay.cs
@@ -5,7 +5,6 @@ using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Linq;
-using osuTK.Input;
 using osu.Framework.Allocation;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
@@ -13,8 +12,9 @@ using osu.Framework.Logging;
 using osu.Game.Input.Bindings;
 using osu.Game.Screens.Play;
 using osuTK;
+using osuTK.Input;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [Description("player pause/fail screens")]
     public class TestCaseGameplayMenuOverlay : ManualInputManagerTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseHoldForMenuButton.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseHoldForMenuButton.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseHoldForMenuButton.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseHoldForMenuButton.cs
index a4fadbd3db..14e9c7cdb6 100644
--- a/osu.Game.Tests/Visual/TestCaseHoldForMenuButton.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseHoldForMenuButton.cs
@@ -10,7 +10,7 @@ using osu.Game.Screens.Play.HUD;
 using osuTK;
 using osuTK.Input;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [Description("'Hold to Quit' UI element")]
     public class TestCaseHoldForMenuButton : ManualInputManagerTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseKeyCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseKeyCounter.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseKeyCounter.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseKeyCounter.cs
index 52caffc29f..f616ffe4ed 100644
--- a/osu.Game.Tests/Visual/TestCaseKeyCounter.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseKeyCounter.cs
@@ -11,7 +11,7 @@ using osu.Framework.Timing;
 using osu.Game.Screens.Play;
 using osuTK.Input;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseKeyCounter : ManualInputManagerTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseMedalOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseMedalOverlay.cs
similarity index 95%
rename from osu.Game.Tests/Visual/TestCaseMedalOverlay.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseMedalOverlay.cs
index c7c85fc412..dd686c36e6 100644
--- a/osu.Game.Tests/Visual/TestCaseMedalOverlay.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseMedalOverlay.cs
@@ -8,7 +8,7 @@ using osu.Game.Overlays;
 using osu.Game.Overlays.MedalSplash;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseMedalOverlay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCasePause.cs b/osu.Game.Tests/Visual/Gameplay/TestCasePause.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCasePause.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCasePause.cs
index d5d2cebbab..1ed61c9fe1 100644
--- a/osu.Game.Tests/Visual/TestCasePause.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCasePause.cs
@@ -9,7 +9,7 @@ using osu.Game.Rulesets.Osu;
 using osu.Game.Rulesets.Scoring;
 using osu.Game.Screens.Play;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     public class TestCasePause : PlayerTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCasePlayerLoader.cs b/osu.Game.Tests/Visual/Gameplay/TestCasePlayerLoader.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCasePlayerLoader.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCasePlayerLoader.cs
index 2bc416f7f4..bcedcb10a6 100644
--- a/osu.Game.Tests/Visual/TestCasePlayerLoader.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCasePlayerLoader.cs
@@ -9,7 +9,7 @@ using osu.Game.Beatmaps;
 using osu.Game.Screens;
 using osu.Game.Screens.Play;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     public class TestCasePlayerLoader : ManualInputManagerTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCasePlayerReferenceLeaking.cs b/osu.Game.Tests/Visual/Gameplay/TestCasePlayerReferenceLeaking.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCasePlayerReferenceLeaking.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCasePlayerReferenceLeaking.cs
index 3e009ae080..5937d489f2 100644
--- a/osu.Game.Tests/Visual/TestCasePlayerReferenceLeaking.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCasePlayerReferenceLeaking.cs
@@ -8,7 +8,7 @@ using osu.Game.Beatmaps;
 using osu.Game.Rulesets;
 using osu.Game.Screens.Play;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     public class TestCasePlayerReferenceLeaking : AllPlayersTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseReplay.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseReplay.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseReplay.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseReplay.cs
index 3a7e2352f8..b98ce96fbb 100644
--- a/osu.Game.Tests/Visual/TestCaseReplay.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseReplay.cs
@@ -8,7 +8,7 @@ using osu.Game.Rulesets.Scoring;
 using osu.Game.Scoring;
 using osu.Game.Screens.Play;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [Description("Player instantiated with a replay.")]
     public class TestCaseReplay : AllPlayersTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseReplaySettingsOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseReplaySettingsOverlay.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseReplaySettingsOverlay.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseReplaySettingsOverlay.cs
index af71efb9e7..2fdfda0d80 100644
--- a/osu.Game.Tests/Visual/TestCaseReplaySettingsOverlay.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseReplaySettingsOverlay.cs
@@ -7,7 +7,7 @@ using osu.Game.Graphics.UserInterface;
 using osu.Game.Screens.Play.HUD;
 using osu.Game.Screens.Play.PlayerSettings;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseReplaySettingsOverlay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseResults.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseResults.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseResults.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseResults.cs
index c2880c1ea2..d9da45f39a 100644
--- a/osu.Game.Tests/Visual/TestCaseResults.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseResults.cs
@@ -13,7 +13,7 @@ using osu.Game.Screens.Ranking;
 using osu.Game.Screens.Ranking.Pages;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseResults : ScreenTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseScoreCounter.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseScoreCounter.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseScoreCounter.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseScoreCounter.cs
index 3519ea67a6..3dd5c99e45 100644
--- a/osu.Game.Tests/Visual/TestCaseScoreCounter.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseScoreCounter.cs
@@ -9,7 +9,7 @@ using osu.Game.Graphics.UserInterface;
 using osu.Game.Screens.Play.HUD;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseScoreCounter : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseScrollingHitObjects.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseScrollingHitObjects.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseScrollingHitObjects.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseScrollingHitObjects.cs
index 5ebb9b270f..a1cec1e18f 100644
--- a/osu.Game.Tests/Visual/TestCaseScrollingHitObjects.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseScrollingHitObjects.cs
@@ -5,7 +5,6 @@ using System;
 using System.Collections.Generic;
 using NUnit.Framework;
 using osu.Framework.Extensions.IEnumerableExtensions;
-using osuTK;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Shapes;
@@ -15,8 +14,9 @@ using osu.Game.Rulesets.Objects.Drawables;
 using osu.Game.Rulesets.Timing;
 using osu.Game.Rulesets.UI;
 using osu.Game.Rulesets.UI.Scrolling;
+using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseScrollingHitObjects : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseSkinReloadable.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseSkinReloadable.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseSkinReloadable.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseSkinReloadable.cs
index 94f01e9d32..a9fbf35d37 100644
--- a/osu.Game.Tests/Visual/TestCaseSkinReloadable.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseSkinReloadable.cs
@@ -13,7 +13,7 @@ using osu.Game.Graphics;
 using osu.Game.Skinning;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     public class TestCaseSkinReloadable : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseSkipOverlay.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseSkipOverlay.cs
similarity index 91%
rename from osu.Game.Tests/Visual/TestCaseSkipOverlay.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseSkipOverlay.cs
index b51ba9c563..b46d79ac04 100644
--- a/osu.Game.Tests/Visual/TestCaseSkipOverlay.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseSkipOverlay.cs
@@ -4,7 +4,7 @@
 using NUnit.Framework;
 using osu.Game.Screens.Play;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseSkipOverlay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseSongProgress.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseSongProgress.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseSongProgress.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseSongProgress.cs
index 511272a5ae..e17dcef19c 100644
--- a/osu.Game.Tests/Visual/TestCaseSongProgress.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseSongProgress.cs
@@ -10,7 +10,7 @@ using osu.Framework.Timing;
 using osu.Game.Rulesets.Objects;
 using osu.Game.Screens.Play;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseSongProgress : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseStoryboard.cs b/osu.Game.Tests/Visual/Gameplay/TestCaseStoryboard.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseStoryboard.cs
rename to osu.Game.Tests/Visual/Gameplay/TestCaseStoryboard.cs
index c4b41e40f4..651683a671 100644
--- a/osu.Game.Tests/Visual/TestCaseStoryboard.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestCaseStoryboard.cs
@@ -13,7 +13,7 @@ using osu.Game.Overlays;
 using osu.Game.Storyboards.Drawables;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Gameplay
 {
     [TestFixture]
     public class TestCaseStoryboard : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseDisclaimer.cs b/osu.Game.Tests/Visual/Menus/TestCaseDisclaimer.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseDisclaimer.cs
rename to osu.Game.Tests/Visual/Menus/TestCaseDisclaimer.cs
index 8bba16e4b4..68a1ceec16 100644
--- a/osu.Game.Tests/Visual/TestCaseDisclaimer.cs
+++ b/osu.Game.Tests/Visual/Menus/TestCaseDisclaimer.cs
@@ -6,7 +6,7 @@ using osu.Game.Online.API;
 using osu.Game.Screens.Menu;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Menus
 {
     public class TestCaseDisclaimer : ScreenTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseIntroSequence.cs b/osu.Game.Tests/Visual/Menus/TestCaseIntroSequence.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseIntroSequence.cs
rename to osu.Game.Tests/Visual/Menus/TestCaseIntroSequence.cs
index 0e57a76167..0b924e56f5 100644
--- a/osu.Game.Tests/Visual/TestCaseIntroSequence.cs
+++ b/osu.Game.Tests/Visual/Menus/TestCaseIntroSequence.cs
@@ -4,14 +4,14 @@
 using System;
 using System.Collections.Generic;
 using NUnit.Framework;
-using osuTK.Graphics;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Shapes;
 using osu.Framework.Timing;
 using osu.Game.Screens.Menu;
+using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Menus
 {
     [TestFixture]
     public class TestCaseIntroSequence : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseLoaderAnimation.cs b/osu.Game.Tests/Visual/Menus/TestCaseLoaderAnimation.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseLoaderAnimation.cs
rename to osu.Game.Tests/Visual/Menus/TestCaseLoaderAnimation.cs
index 3803764194..899f9d431b 100644
--- a/osu.Game.Tests/Visual/TestCaseLoaderAnimation.cs
+++ b/osu.Game.Tests/Visual/Menus/TestCaseLoaderAnimation.cs
@@ -9,7 +9,7 @@ using osu.Game.Screens;
 using osu.Game.Screens.Menu;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Menus
 {
     [TestFixture]
     public class TestCaseLoaderAnimation : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseToolbar.cs b/osu.Game.Tests/Visual/Menus/TestCaseToolbar.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseToolbar.cs
rename to osu.Game.Tests/Visual/Menus/TestCaseToolbar.cs
index cb5f33911b..4da17f9944 100644
--- a/osu.Game.Tests/Visual/TestCaseToolbar.cs
+++ b/osu.Game.Tests/Visual/Menus/TestCaseToolbar.cs
@@ -8,7 +8,7 @@ using NUnit.Framework;
 using osu.Framework.Graphics.Containers;
 using osu.Game.Overlays.Toolbar;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Menus
 {
     [TestFixture]
     public class TestCaseToolbar : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseLoungeRoomsContainer.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseLoungeRoomsContainer.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseLoungeRoomsContainer.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseLoungeRoomsContainer.cs
index 13bc5e24d9..34de61cb5b 100644
--- a/osu.Game.Tests/Visual/TestCaseLoungeRoomsContainer.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseLoungeRoomsContainer.cs
@@ -14,7 +14,7 @@ using osu.Game.Screens.Multi.Lounge.Components;
 using osu.Game.Users;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     public class TestCaseLoungeRoomsContainer : MultiplayerTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseMatchHeader.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchHeader.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseMatchHeader.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseMatchHeader.cs
index 296e5f24ac..81cb90c7cd 100644
--- a/osu.Game.Tests/Visual/TestCaseMatchHeader.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchHeader.cs
@@ -10,7 +10,7 @@ using osu.Game.Rulesets.Osu;
 using osu.Game.Rulesets.Osu.Mods;
 using osu.Game.Screens.Multi.Match.Components;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     public class TestCaseMatchHeader : MultiplayerTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseMatchHostInfo.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchHostInfo.cs
similarity index 95%
rename from osu.Game.Tests/Visual/TestCaseMatchHostInfo.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseMatchHostInfo.cs
index 45092c5b93..d2dc417100 100644
--- a/osu.Game.Tests/Visual/TestCaseMatchHostInfo.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchHostInfo.cs
@@ -8,7 +8,7 @@ using osu.Framework.Graphics;
 using osu.Game.Screens.Multi.Match.Components;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     public class TestCaseMatchHostInfo : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseMatchInfo.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchInfo.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseMatchInfo.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseMatchInfo.cs
index 901c4f1644..6b04b71da4 100644
--- a/osu.Game.Tests/Visual/TestCaseMatchInfo.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchInfo.cs
@@ -11,7 +11,7 @@ using osu.Game.Online.Multiplayer.RoomStatuses;
 using osu.Game.Rulesets;
 using osu.Game.Screens.Multi.Match.Components;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     [TestFixture]
     public class TestCaseMatchInfo : MultiplayerTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseMatchLeaderboard.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchLeaderboard.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseMatchLeaderboard.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseMatchLeaderboard.cs
index 484a212a38..8ec323dbc3 100644
--- a/osu.Game.Tests/Visual/TestCaseMatchLeaderboard.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchLeaderboard.cs
@@ -10,7 +10,7 @@ using osu.Game.Screens.Multi.Match.Components;
 using osu.Game.Users;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     public class TestCaseMatchLeaderboard : MultiplayerTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseMatchParticipants.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchParticipants.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseMatchParticipants.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseMatchParticipants.cs
index 716523c23c..5382726516 100644
--- a/osu.Game.Tests/Visual/TestCaseMatchParticipants.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchParticipants.cs
@@ -6,7 +6,7 @@ using osu.Framework.Graphics;
 using osu.Game.Screens.Multi.Match.Components;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     [TestFixture]
     public class TestCaseMatchParticipants : MultiplayerTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseMatchResults.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchResults.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseMatchResults.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseMatchResults.cs
index 582c035e82..69606c9ba7 100644
--- a/osu.Game.Tests/Visual/TestCaseMatchResults.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchResults.cs
@@ -16,7 +16,7 @@ using osu.Game.Screens.Multi.Ranking.Types;
 using osu.Game.Screens.Ranking;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     public class TestCaseMatchResults : MultiplayerTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseMatchSettingsOverlay.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchSettingsOverlay.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseMatchSettingsOverlay.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseMatchSettingsOverlay.cs
index 11c7d3ef70..51854800e3 100644
--- a/osu.Game.Tests/Visual/TestCaseMatchSettingsOverlay.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseMatchSettingsOverlay.cs
@@ -15,7 +15,7 @@ using osu.Game.Online.Multiplayer;
 using osu.Game.Screens.Multi;
 using osu.Game.Screens.Multi.Match.Components;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     public class TestCaseMatchSettingsOverlay : MultiplayerTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseMultiHeader.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseMultiHeader.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseMultiHeader.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseMultiHeader.cs
index f7802e2d08..b74c303726 100644
--- a/osu.Game.Tests/Visual/TestCaseMultiHeader.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseMultiHeader.cs
@@ -7,7 +7,7 @@ using osu.Framework.Screens;
 using osu.Game.Screens;
 using osu.Game.Screens.Multi;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     [TestFixture]
     public class TestCaseMultiHeader : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseMultiScreen.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseMultiScreen.cs
similarity index 79%
rename from osu.Game.Tests/Visual/TestCaseMultiScreen.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseMultiScreen.cs
index 804e3c5b1f..ef381efd67 100644
--- a/osu.Game.Tests/Visual/TestCaseMultiScreen.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseMultiScreen.cs
@@ -4,25 +4,24 @@
 using System;
 using System.Collections.Generic;
 using NUnit.Framework;
-using osu.Game.Screens.Multi;
 using osu.Game.Screens.Multi.Lounge;
 using osu.Game.Screens.Multi.Lounge.Components;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     [TestFixture]
     public class TestCaseMultiScreen : ScreenTestCase
     {
         public override IReadOnlyList<Type> RequiredTypes => new[]
         {
-            typeof(Multiplayer),
+            typeof(Screens.Multi.Multiplayer),
             typeof(LoungeSubScreen),
             typeof(FilterControl)
         };
 
         public TestCaseMultiScreen()
         {
-            Multiplayer multi = new Multiplayer();
+            Screens.Multi.Multiplayer multi = new Screens.Multi.Multiplayer();
 
             AddStep(@"show", () => LoadScreen(multi));
         }
diff --git a/osu.Game.Tests/Visual/TestCaseRoomStatus.cs b/osu.Game.Tests/Visual/Multiplayer/TestCaseRoomStatus.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseRoomStatus.cs
rename to osu.Game.Tests/Visual/Multiplayer/TestCaseRoomStatus.cs
index 7d175c3c49..a7c7d41ed4 100644
--- a/osu.Game.Tests/Visual/TestCaseRoomStatus.cs
+++ b/osu.Game.Tests/Visual/Multiplayer/TestCaseRoomStatus.cs
@@ -9,7 +9,7 @@ using osu.Game.Online.Multiplayer;
 using osu.Game.Online.Multiplayer.RoomStatuses;
 using osu.Game.Screens.Multi.Lounge.Components;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Multiplayer
 {
     public class TestCaseRoomStatus : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseAccountCreationOverlay.cs b/osu.Game.Tests/Visual/Online/TestCaseAccountCreationOverlay.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseAccountCreationOverlay.cs
rename to osu.Game.Tests/Visual/Online/TestCaseAccountCreationOverlay.cs
index 24380645d1..5cdb90b61f 100644
--- a/osu.Game.Tests/Visual/TestCaseAccountCreationOverlay.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseAccountCreationOverlay.cs
@@ -11,7 +11,7 @@ using osu.Game.Overlays;
 using osu.Game.Overlays.AccountCreation;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     public class TestCaseAccountCreationOverlay : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseBadgeContainer.cs b/osu.Game.Tests/Visual/Online/TestCaseBadgeContainer.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseBadgeContainer.cs
rename to osu.Game.Tests/Visual/Online/TestCaseBadgeContainer.cs
index 892c87653d..631cb190d2 100644
--- a/osu.Game.Tests/Visual/TestCaseBadgeContainer.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseBadgeContainer.cs
@@ -9,7 +9,7 @@ using osu.Framework.Graphics;
 using osu.Game.Overlays.Profile.Header;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseBadgeContainer : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapSetOverlay.cs b/osu.Game.Tests/Visual/Online/TestCaseBeatmapSetOverlay.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseBeatmapSetOverlay.cs
rename to osu.Game.Tests/Visual/Online/TestCaseBeatmapSetOverlay.cs
index b98014b866..e2985623fc 100644
--- a/osu.Game.Tests/Visual/TestCaseBeatmapSetOverlay.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseBeatmapSetOverlay.cs
@@ -14,7 +14,7 @@ using osu.Game.Overlays.BeatmapSet.Scores;
 using osu.Game.Rulesets;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseBeatmapSetOverlay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseChannelTabControl.cs b/osu.Game.Tests/Visual/Online/TestCaseChannelTabControl.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseChannelTabControl.cs
rename to osu.Game.Tests/Visual/Online/TestCaseChannelTabControl.cs
index e90b5f5372..fdc3d5394f 100644
--- a/osu.Game.Tests/Visual/TestCaseChannelTabControl.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseChannelTabControl.cs
@@ -15,7 +15,7 @@ using osu.Game.Overlays.Chat.Tabs;
 using osu.Game.Users;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     public class TestCaseChannelTabControl : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseChatDisplay.cs b/osu.Game.Tests/Visual/Online/TestCaseChatDisplay.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseChatDisplay.cs
rename to osu.Game.Tests/Visual/Online/TestCaseChatDisplay.cs
index 57e4850f84..6e20165c1b 100644
--- a/osu.Game.Tests/Visual/TestCaseChatDisplay.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseChatDisplay.cs
@@ -12,7 +12,7 @@ using osu.Game.Overlays;
 using osu.Game.Overlays.Chat;
 using osu.Game.Overlays.Chat.Tabs;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [Description("Testing chat api and overlay")]
     public class TestCaseChatDisplay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseChatLink.cs b/osu.Game.Tests/Visual/Online/TestCaseChatLink.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseChatLink.cs
rename to osu.Game.Tests/Visual/Online/TestCaseChatLink.cs
index ecab64ccf3..8843f136a1 100644
--- a/osu.Game.Tests/Visual/TestCaseChatLink.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseChatLink.cs
@@ -1,24 +1,24 @@
 // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.
 
-using osuTK.Graphics;
-using osu.Framework.Allocation;
-using osu.Framework.Graphics;
-using osu.Framework.Graphics.Containers;
-using osu.Game.Graphics;
-using osu.Game.Online.Chat;
-using osu.Game.Overlays.Chat;
-using osu.Game.Users;
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using NUnit.Framework;
+using osu.Framework.Allocation;
 using osu.Framework.Bindables;
+using osu.Framework.Graphics;
+using osu.Framework.Graphics.Containers;
+using osu.Game.Graphics;
 using osu.Game.Graphics.Containers;
 using osu.Game.Graphics.Sprites;
+using osu.Game.Online.Chat;
 using osu.Game.Overlays;
+using osu.Game.Overlays.Chat;
+using osu.Game.Users;
+using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseChatLink : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseDirect.cs b/osu.Game.Tests/Visual/Online/TestCaseDirect.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseDirect.cs
rename to osu.Game.Tests/Visual/Online/TestCaseDirect.cs
index 24ac38c128..ff57104d8a 100644
--- a/osu.Game.Tests/Visual/TestCaseDirect.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseDirect.cs
@@ -8,7 +8,7 @@ using osu.Game.Beatmaps;
 using osu.Game.Overlays;
 using osu.Game.Rulesets;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseDirect : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseDirectPanel.cs b/osu.Game.Tests/Visual/Online/TestCaseDirectPanel.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseDirectPanel.cs
rename to osu.Game.Tests/Visual/Online/TestCaseDirectPanel.cs
index beb88ac56c..fbda531792 100644
--- a/osu.Game.Tests/Visual/TestCaseDirectPanel.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseDirectPanel.cs
@@ -11,7 +11,7 @@ using osu.Game.Rulesets.Osu;
 using osu.Game.Tests.Beatmaps;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     public class TestCaseDirectPanel : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseExternalLinkButton.cs b/osu.Game.Tests/Visual/Online/TestCaseExternalLinkButton.cs
similarity index 94%
rename from osu.Game.Tests/Visual/TestCaseExternalLinkButton.cs
rename to osu.Game.Tests/Visual/Online/TestCaseExternalLinkButton.cs
index 6f807e96f1..a73cbd86d0 100644
--- a/osu.Game.Tests/Visual/TestCaseExternalLinkButton.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseExternalLinkButton.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
 using osu.Game.Graphics.UserInterface;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     public class TestCaseExternalLinkButton : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseGraph.cs b/osu.Game.Tests/Visual/Online/TestCaseGraph.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseGraph.cs
rename to osu.Game.Tests/Visual/Online/TestCaseGraph.cs
index 6a5865b752..77e850fc92 100644
--- a/osu.Game.Tests/Visual/TestCaseGraph.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseGraph.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics;
 using osu.Game.Graphics.UserInterface;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseGraph : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseHistoricalSection.cs b/osu.Game.Tests/Visual/Online/TestCaseHistoricalSection.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseHistoricalSection.cs
rename to osu.Game.Tests/Visual/Online/TestCaseHistoricalSection.cs
index 60e6148c49..92aa9320c8 100644
--- a/osu.Game.Tests/Visual/TestCaseHistoricalSection.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseHistoricalSection.cs
@@ -12,7 +12,7 @@ using osu.Game.Overlays.Profile.Sections;
 using osu.Game.Overlays.Profile.Sections.Historical;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseHistoricalSection : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseRankGraph.cs b/osu.Game.Tests/Visual/Online/TestCaseRankGraph.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseRankGraph.cs
rename to osu.Game.Tests/Visual/Online/TestCaseRankGraph.cs
index f41033c0be..dff018bf91 100644
--- a/osu.Game.Tests/Visual/TestCaseRankGraph.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseRankGraph.cs
@@ -1,19 +1,19 @@
 // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.
 
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
-using osuTK;
 using osu.Framework.Graphics.Shapes;
 using osu.Game.Graphics;
-using System.Collections.Generic;
-using System;
-using NUnit.Framework;
 using osu.Game.Graphics.UserInterface;
 using osu.Game.Overlays.Profile.Header;
 using osu.Game.Users;
+using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseRankGraph : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseSocial.cs b/osu.Game.Tests/Visual/Online/TestCaseSocial.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseSocial.cs
rename to osu.Game.Tests/Visual/Online/TestCaseSocial.cs
index d621bc600d..48325713df 100644
--- a/osu.Game.Tests/Visual/TestCaseSocial.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseSocial.cs
@@ -8,7 +8,7 @@ using osu.Game.Overlays;
 using osu.Game.Overlays.Social;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseSocial : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseStandAloneChatDisplay.cs b/osu.Game.Tests/Visual/Online/TestCaseStandAloneChatDisplay.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseStandAloneChatDisplay.cs
rename to osu.Game.Tests/Visual/Online/TestCaseStandAloneChatDisplay.cs
index 65ae70168e..4c4b3b2612 100644
--- a/osu.Game.Tests/Visual/TestCaseStandAloneChatDisplay.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseStandAloneChatDisplay.cs
@@ -7,7 +7,7 @@ using osu.Game.Online.Chat;
 using osu.Game.Users;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     public class TestCaseStandAloneChatDisplay : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseUserPanel.cs b/osu.Game.Tests/Visual/Online/TestCaseUserPanel.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseUserPanel.cs
rename to osu.Game.Tests/Visual/Online/TestCaseUserPanel.cs
index 8caa608d5e..b2877f7bd7 100644
--- a/osu.Game.Tests/Visual/TestCaseUserPanel.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseUserPanel.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics.Containers;
 using osu.Game.Users;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseUserPanel : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseUserProfile.cs b/osu.Game.Tests/Visual/Online/TestCaseUserProfile.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseUserProfile.cs
rename to osu.Game.Tests/Visual/Online/TestCaseUserProfile.cs
index aa0bd37449..5b86de28f9 100644
--- a/osu.Game.Tests/Visual/TestCaseUserProfile.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseUserProfile.cs
@@ -13,7 +13,7 @@ using osu.Game.Overlays.Profile;
 using osu.Game.Overlays.Profile.Header;
 using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseUserProfile : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseUserProfileRecentSection.cs b/osu.Game.Tests/Visual/Online/TestCaseUserProfileRecentSection.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseUserProfileRecentSection.cs
rename to osu.Game.Tests/Visual/Online/TestCaseUserProfileRecentSection.cs
index da50653831..6b29ed1e85 100644
--- a/osu.Game.Tests/Visual/TestCaseUserProfileRecentSection.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseUserProfileRecentSection.cs
@@ -1,20 +1,20 @@
 // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.
 
+using System;
+using System.Collections.Generic;
+using System.Linq;
 using NUnit.Framework;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Shapes;
 using osu.Game.Graphics;
 using osu.Game.Online.API.Requests;
+using osu.Game.Online.API.Requests.Responses;
 using osu.Game.Overlays.Profile.Sections;
 using osu.Game.Overlays.Profile.Sections.Recent;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using osu.Game.Online.API.Requests.Responses;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseUserProfileRecentSection : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseUserRanks.cs b/osu.Game.Tests/Visual/Online/TestCaseUserRanks.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseUserRanks.cs
rename to osu.Game.Tests/Visual/Online/TestCaseUserRanks.cs
index 96638ef703..64257f8877 100644
--- a/osu.Game.Tests/Visual/TestCaseUserRanks.cs
+++ b/osu.Game.Tests/Visual/Online/TestCaseUserRanks.cs
@@ -1,6 +1,9 @@
 // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.
 
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Shapes;
@@ -8,11 +11,8 @@ using osu.Game.Graphics;
 using osu.Game.Overlays.Profile.Sections;
 using osu.Game.Overlays.Profile.Sections.Ranks;
 using osu.Game.Users;
-using System;
-using System.Collections.Generic;
-using NUnit.Framework;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Online
 {
     [TestFixture]
     public class TestCaseUserRanks : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseKeyConfiguration.cs b/osu.Game.Tests/Visual/Settings/TestCaseKeyConfiguration.cs
similarity index 93%
rename from osu.Game.Tests/Visual/TestCaseKeyConfiguration.cs
rename to osu.Game.Tests/Visual/Settings/TestCaseKeyConfiguration.cs
index cd299be1e9..ce179c21ba 100644
--- a/osu.Game.Tests/Visual/TestCaseKeyConfiguration.cs
+++ b/osu.Game.Tests/Visual/Settings/TestCaseKeyConfiguration.cs
@@ -4,7 +4,7 @@
 using NUnit.Framework;
 using osu.Game.Overlays;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Settings
 {
     [TestFixture]
     public class TestCaseKeyConfiguration : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseSettings.cs b/osu.Game.Tests/Visual/Settings/TestCaseSettings.cs
similarity index 95%
rename from osu.Game.Tests/Visual/TestCaseSettings.cs
rename to osu.Game.Tests/Visual/Settings/TestCaseSettings.cs
index 67f32a8335..e846d5c020 100644
--- a/osu.Game.Tests/Visual/TestCaseSettings.cs
+++ b/osu.Game.Tests/Visual/Settings/TestCaseSettings.cs
@@ -6,7 +6,7 @@ using osu.Framework.Allocation;
 using osu.Framework.Graphics.Containers;
 using osu.Game.Overlays;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Settings
 {
     [TestFixture]
     public class TestCaseSettings : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapCarousel.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs
rename to osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapCarousel.cs
index 956d84618c..1500605896 100644
--- a/osu.Game.Tests/Visual/TestCaseBeatmapCarousel.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapCarousel.cs
@@ -17,7 +17,7 @@ using osu.Game.Screens.Select;
 using osu.Game.Screens.Select.Carousel;
 using osu.Game.Screens.Select.Filter;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.SongSelect
 {
     [TestFixture]
     public class TestCaseBeatmapCarousel : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapDetailArea.cs b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapDetailArea.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseBeatmapDetailArea.cs
rename to osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapDetailArea.cs
index 6cc3982f9c..722a63f2b0 100644
--- a/osu.Game.Tests/Visual/TestCaseBeatmapDetailArea.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapDetailArea.cs
@@ -10,7 +10,7 @@ using osu.Game.Beatmaps;
 using osu.Game.Screens.Select;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.SongSelect
 {
     [TestFixture]
     [System.ComponentModel.Description("PlaySongSelect leaderboard/details area")]
diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapDetails.cs b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapDetails.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseBeatmapDetails.cs
rename to osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapDetails.cs
index 84af6453f5..37987b8884 100644
--- a/osu.Game.Tests/Visual/TestCaseBeatmapDetails.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapDetails.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics;
 using osu.Game.Beatmaps;
 using osu.Game.Screens.Select;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.SongSelect
 {
     [Description("PlaySongSelect beatmap details")]
     public class TestCaseBeatmapDetails : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapInfoWedge.cs b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapInfoWedge.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseBeatmapInfoWedge.cs
rename to osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapInfoWedge.cs
index 0d77ac666b..f3e44bd808 100644
--- a/osu.Game.Tests/Visual/TestCaseBeatmapInfoWedge.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapInfoWedge.cs
@@ -5,7 +5,6 @@ using System.Collections.Generic;
 using System.Linq;
 using JetBrains.Annotations;
 using NUnit.Framework;
-using osuTK;
 using osu.Framework.Allocation;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
@@ -20,8 +19,9 @@ using osu.Game.Rulesets.Osu;
 using osu.Game.Rulesets.Taiko;
 using osu.Game.Screens.Select;
 using osu.Game.Tests.Beatmaps;
+using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.SongSelect
 {
     [TestFixture]
     public class TestCaseBeatmapInfoWedge : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapOptionsOverlay.cs b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapOptionsOverlay.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseBeatmapOptionsOverlay.cs
rename to osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapOptionsOverlay.cs
index fdab57193b..49038dc2cf 100644
--- a/osu.Game.Tests/Visual/TestCaseBeatmapOptionsOverlay.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapOptionsOverlay.cs
@@ -7,7 +7,7 @@ using osu.Game.Screens.Select.Options;
 using osuTK.Graphics;
 using osuTK.Input;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.SongSelect
 {
     [Description("bottom beatmap details")]
     public class TestCaseBeatmapOptionsOverlay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseBeatmapScoresContainer.cs b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapScoresContainer.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseBeatmapScoresContainer.cs
rename to osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapScoresContainer.cs
index bb55c0b1e8..c7970b6ebb 100644
--- a/osu.Game.Tests/Visual/TestCaseBeatmapScoresContainer.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestCaseBeatmapScoresContainer.cs
@@ -1,24 +1,24 @@
 // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.
 
+using System.Collections.Generic;
 using osu.Framework.Allocation;
 using osu.Framework.Graphics;
+using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Shapes;
 using osu.Framework.MathUtils;
+using osu.Game.Beatmaps;
 using osu.Game.Graphics;
+using osu.Game.Online.API.Requests.Responses;
 using osu.Game.Overlays.BeatmapSet.Scores;
 using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.Osu;
 using osu.Game.Rulesets.Osu.Mods;
 using osu.Game.Rulesets.Scoring;
-using osu.Game.Users;
-using System.Collections.Generic;
-using osu.Framework.Graphics.Containers;
-using osu.Game.Beatmaps;
-using osu.Game.Online.API.Requests.Responses;
-using osu.Game.Rulesets.Osu;
 using osu.Game.Scoring;
+using osu.Game.Users;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.SongSelect
 {
     [System.ComponentModel.Description("in BeatmapOverlay")]
     public class TestCaseBeatmapScoresContainer : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseLeaderboard.cs b/osu.Game.Tests/Visual/SongSelect/TestCaseLeaderboard.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseLeaderboard.cs
rename to osu.Game.Tests/Visual/SongSelect/TestCaseLeaderboard.cs
index eb1a2c0249..13ae6f228a 100644
--- a/osu.Game.Tests/Visual/TestCaseLeaderboard.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestCaseLeaderboard.cs
@@ -4,18 +4,18 @@
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
-using osu.Framework.Graphics;
-using osu.Game.Screens.Select.Leaderboards;
-using osu.Game.Users;
-using osu.Framework.Allocation;
-using osuTK;
 using System.Linq;
+using osu.Framework.Allocation;
+using osu.Framework.Graphics;
 using osu.Game.Beatmaps;
 using osu.Game.Online.Leaderboards;
 using osu.Game.Rulesets;
 using osu.Game.Scoring;
+using osu.Game.Screens.Select.Leaderboards;
+using osu.Game.Users;
+using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.SongSelect
 {
     [Description("PlaySongSelect leaderboard")]
     public class TestCaseLeaderboard : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCasePlaySongSelect.cs b/osu.Game.Tests/Visual/SongSelect/TestCasePlaySongSelect.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCasePlaySongSelect.cs
rename to osu.Game.Tests/Visual/SongSelect/TestCasePlaySongSelect.cs
index 4a2cf24c6d..d5bc452d75 100644
--- a/osu.Game.Tests/Visual/TestCasePlaySongSelect.cs
+++ b/osu.Game.Tests/Visual/SongSelect/TestCasePlaySongSelect.cs
@@ -23,7 +23,7 @@ using osu.Game.Screens.Select;
 using osu.Game.Screens.Select.Carousel;
 using osu.Game.Screens.Select.Filter;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.SongSelect
 {
     [TestFixture]
     public class TestCasePlaySongSelect : ScreenTestCase
@@ -41,7 +41,7 @@ namespace osu.Game.Tests.Visual
 
         public override IReadOnlyList<Type> RequiredTypes => new[]
         {
-            typeof(SongSelect),
+            typeof(Screens.Select.SongSelect),
             typeof(BeatmapCarousel),
 
             typeof(CarouselItem),
diff --git a/osu.Game.Tests/Visual/TestCaseDrawings.cs b/osu.Game.Tests/Visual/Tournament/TestCaseDrawings.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseDrawings.cs
rename to osu.Game.Tests/Visual/Tournament/TestCaseDrawings.cs
index aad135b71f..9453d0a5b2 100644
--- a/osu.Game.Tests/Visual/TestCaseDrawings.cs
+++ b/osu.Game.Tests/Visual/Tournament/TestCaseDrawings.cs
@@ -6,7 +6,7 @@ using System.ComponentModel;
 using osu.Game.Screens.Tournament;
 using osu.Game.Screens.Tournament.Teams;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.Tournament
 {
     [Description("for tournament use")]
     public class TestCaseDrawings : ScreenTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseBeatSyncedContainer.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseBeatSyncedContainer.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseBeatSyncedContainer.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseBeatSyncedContainer.cs
index 2fd8d467f6..dcd194e050 100644
--- a/osu.Game.Tests/Visual/TestCaseBeatSyncedContainer.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseBeatSyncedContainer.cs
@@ -8,16 +8,16 @@ using osu.Framework.Extensions.Color4Extensions;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Shapes;
+using osu.Framework.Lists;
 using osu.Framework.Timing;
 using osu.Game.Beatmaps.ControlPoints;
+using osu.Game.Graphics;
 using osu.Game.Graphics.Containers;
 using osu.Game.Graphics.Sprites;
 using osu.Game.Overlays;
 using osuTK.Graphics;
-using osu.Framework.Lists;
-using osu.Game.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseBeatSyncedContainer : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseBreadcrumbs.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseBreadcrumbs.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseBreadcrumbs.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseBreadcrumbs.cs
index 98ab884ead..5e09e0a5b9 100644
--- a/osu.Game.Tests/Visual/TestCaseBreadcrumbs.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseBreadcrumbs.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics;
 using osu.Game.Graphics;
 using osu.Game.Graphics.UserInterface;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseBreadcrumbs : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseButtonSystem.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseButtonSystem.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseButtonSystem.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseButtonSystem.cs
index 8ea2ab9dde..261e87ff07 100644
--- a/osu.Game.Tests/Visual/TestCaseButtonSystem.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseButtonSystem.cs
@@ -11,7 +11,7 @@ using osu.Framework.Graphics.Shapes;
 using osu.Game.Screens.Menu;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseButtonSystem : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseContextMenu.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseContextMenu.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseContextMenu.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseContextMenu.cs
index 5cbe97e21d..71cde787f9 100644
--- a/osu.Game.Tests/Visual/TestCaseContextMenu.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseContextMenu.cs
@@ -7,12 +7,12 @@ using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Cursor;
 using osu.Framework.Graphics.Shapes;
 using osu.Framework.Graphics.UserInterface;
+using osu.Game.Graphics.Cursor;
 using osu.Game.Graphics.UserInterface;
 using osuTK;
 using osuTK.Graphics;
-using osu.Game.Graphics.Cursor;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseContextMenu : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseCursors.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseCursors.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseCursors.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseCursors.cs
index 7d38a76c7d..5f45d9ba4d 100644
--- a/osu.Game.Tests/Visual/TestCaseCursors.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseCursors.cs
@@ -14,7 +14,7 @@ using osu.Game.Graphics.Sprites;
 using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseCursors : ManualInputManagerTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseDialogOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseDialogOverlay.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseDialogOverlay.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseDialogOverlay.cs
index e832793fc2..6b32f711e9 100644
--- a/osu.Game.Tests/Visual/TestCaseDialogOverlay.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseDialogOverlay.cs
@@ -6,7 +6,7 @@ using osu.Game.Graphics;
 using osu.Game.Overlays;
 using osu.Game.Overlays.Dialog;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseDialogOverlay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseDrawableDate.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseDrawableDate.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseDrawableDate.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseDrawableDate.cs
index 8d2182dd78..e8662ce965 100644
--- a/osu.Game.Tests/Visual/TestCaseDrawableDate.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseDrawableDate.cs
@@ -9,7 +9,7 @@ using osu.Game.Graphics;
 using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     public class TestCaseDrawableDate : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseHoldToConfirmOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseHoldToConfirmOverlay.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseHoldToConfirmOverlay.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseHoldToConfirmOverlay.cs
index c9a7e9c39f..38dc4a11dc 100644
--- a/osu.Game.Tests/Visual/TestCaseHoldToConfirmOverlay.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseHoldToConfirmOverlay.cs
@@ -8,7 +8,7 @@ using osu.Game.Graphics;
 using osu.Game.Graphics.Sprites;
 using osu.Game.Screens.Menu;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     public class TestCaseHoldToConfirmOverlay : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseIconButton.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseIconButton.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseIconButton.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseIconButton.cs
index 63e10b6ecc..2898d1a1cc 100644
--- a/osu.Game.Tests/Visual/TestCaseIconButton.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseIconButton.cs
@@ -2,16 +2,16 @@
 // See the LICENCE file in the repository root for full licence text.
 
 using NUnit.Framework;
-using osuTK;
-using osuTK.Graphics;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
 using osu.Framework.Graphics.Shapes;
 using osu.Game.Graphics;
 using osu.Game.Graphics.Sprites;
 using osu.Game.Graphics.UserInterface;
+using osuTK;
+using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseIconButton : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseLabelledTextBox.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseLabelledTextBox.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseLabelledTextBox.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseLabelledTextBox.cs
index 4b424f9875..781dfbdcc1 100644
--- a/osu.Game.Tests/Visual/TestCaseLabelledTextBox.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseLabelledTextBox.cs
@@ -1,15 +1,15 @@
 // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
 // See the LICENCE file in the repository root for full licence text.
 
+using System;
+using System.Collections.Generic;
 using NUnit.Framework;
 using osu.Framework.Allocation;
 using osu.Framework.Graphics;
 using osu.Framework.Graphics.Containers;
-using System;
-using System.Collections.Generic;
 using osu.Game.Screens.Edit.Setup.Components.LabelledComponents;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseLabelledTextBox : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseLoadingAnimation.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseLoadingAnimation.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseLoadingAnimation.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseLoadingAnimation.cs
index f5dc1d449a..43f6f0e4db 100644
--- a/osu.Game.Tests/Visual/TestCaseLoadingAnimation.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseLoadingAnimation.cs
@@ -7,7 +7,7 @@ using osu.Framework.Testing;
 using osu.Game.Graphics.UserInterface;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     public class TestCaseLoadingAnimation : GridTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseMods.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseMods.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseMods.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseMods.cs
index cb7e783bee..aab44f7d92 100644
--- a/osu.Game.Tests/Visual/TestCaseMods.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseMods.cs
@@ -2,26 +2,26 @@
 // See the LICENCE file in the repository root for full licence text.
 
 using System;
+using System.Collections.Generic;
+using System.Linq;
+using NUnit.Framework;
 using osu.Framework.Allocation;
+using osu.Framework.Bindables;
 using osu.Framework.Graphics;
+using osu.Game.Graphics.Sprites;
+using osu.Game.Graphics.UserInterface;
 using osu.Game.Overlays.Mods;
+using osu.Game.Overlays.Mods.Sections;
 using osu.Game.Rulesets;
-using osu.Game.Screens.Play.HUD;
-using osuTK;
+using osu.Game.Rulesets.Mania.Mods;
 using osu.Game.Rulesets.Mods;
 using osu.Game.Rulesets.Osu.Mods;
-using System.Linq;
-using System.Collections.Generic;
-using NUnit.Framework;
-using osu.Framework.Bindables;
-using osu.Game.Graphics.UserInterface;
-using osu.Game.Graphics.Sprites;
-using osu.Game.Overlays.Mods.Sections;
-using osu.Game.Rulesets.Mania.Mods;
 using osu.Game.Rulesets.UI;
+using osu.Game.Screens.Play.HUD;
+using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [Description("mod select and icon display")]
     public class TestCaseMods : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseMusicController.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseMusicController.cs
similarity index 95%
rename from osu.Game.Tests/Visual/TestCaseMusicController.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseMusicController.cs
index b4a1c11b1a..644c7eb4fc 100644
--- a/osu.Game.Tests/Visual/TestCaseMusicController.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseMusicController.cs
@@ -7,7 +7,7 @@ using osu.Framework.Graphics.Containers;
 using osu.Framework.Timing;
 using osu.Game.Overlays;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseMusicController : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseNotificationOverlay.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseNotificationOverlay.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseNotificationOverlay.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseNotificationOverlay.cs
index 9e70df91b6..4819597d22 100644
--- a/osu.Game.Tests/Visual/TestCaseNotificationOverlay.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseNotificationOverlay.cs
@@ -12,7 +12,7 @@ using osu.Framework.MathUtils;
 using osu.Game.Overlays;
 using osu.Game.Overlays.Notifications;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseNotificationOverlay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseOnScreenDisplay.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseOnScreenDisplay.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseOnScreenDisplay.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseOnScreenDisplay.cs
index 8b5ae0b208..7ad42cb926 100644
--- a/osu.Game.Tests/Visual/TestCaseOnScreenDisplay.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseOnScreenDisplay.cs
@@ -8,7 +8,7 @@ using osu.Framework.Configuration.Tracking;
 using osu.Framework.Graphics;
 using osu.Game.Overlays;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseOnScreenDisplay : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseParallaxContainer.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseParallaxContainer.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseParallaxContainer.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseParallaxContainer.cs
index 41b029d69e..5de4c3f41f 100644
--- a/osu.Game.Tests/Visual/TestCaseParallaxContainer.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseParallaxContainer.cs
@@ -6,7 +6,7 @@ using osu.Framework.Screens;
 using osu.Game.Graphics.Containers;
 using osu.Game.Screens.Backgrounds;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     public class TestCaseParallaxContainer : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCasePopupDialog.cs b/osu.Game.Tests/Visual/UserInterface/TestCasePopupDialog.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCasePopupDialog.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCasePopupDialog.cs
index 51b5c41e0d..490903a906 100644
--- a/osu.Game.Tests/Visual/TestCasePopupDialog.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCasePopupDialog.cs
@@ -6,7 +6,7 @@ using osu.Framework.Graphics;
 using osu.Game.Graphics;
 using osu.Game.Overlays.Dialog;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCasePopupDialog : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseScreenBreadcrumbControl.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseScreenBreadcrumbControl.cs
similarity index 99%
rename from osu.Game.Tests/Visual/TestCaseScreenBreadcrumbControl.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseScreenBreadcrumbControl.cs
index dad684689e..b4b24ae4df 100644
--- a/osu.Game.Tests/Visual/TestCaseScreenBreadcrumbControl.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseScreenBreadcrumbControl.cs
@@ -13,7 +13,7 @@ using osu.Game.Graphics.UserInterface;
 using osu.Game.Screens;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseScreenBreadcrumbControl : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseTabControl.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseTabControl.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseTabControl.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseTabControl.cs
index ebf8f3bb30..480dc73dde 100644
--- a/osu.Game.Tests/Visual/TestCaseTabControl.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseTabControl.cs
@@ -8,7 +8,7 @@ using osu.Game.Graphics.UserInterface;
 using osu.Game.Screens.Select.Filter;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [Description("SongSelect filter control")]
     public class TestCaseTabControl : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseTextAwesome.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseTextAwesome.cs
similarity index 97%
rename from osu.Game.Tests/Visual/TestCaseTextAwesome.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseTextAwesome.cs
index 6ab9a46e8d..40179387e2 100644
--- a/osu.Game.Tests/Visual/TestCaseTextAwesome.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseTextAwesome.cs
@@ -9,7 +9,7 @@ using osu.Framework.Graphics.Cursor;
 using osu.Game.Graphics;
 using osuTK;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [TestFixture]
     public class TestCaseTextAwesome : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseTwoLayerButton.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseTwoLayerButton.cs
similarity index 90%
rename from osu.Game.Tests/Visual/TestCaseTwoLayerButton.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseTwoLayerButton.cs
index 9141aaa580..8d3cc7a0f2 100644
--- a/osu.Game.Tests/Visual/TestCaseTwoLayerButton.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseTwoLayerButton.cs
@@ -4,7 +4,7 @@
 using System.ComponentModel;
 using osu.Game.Graphics.UserInterface;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     [Description("mostly back button")]
     public class TestCaseTwoLayerButton : OsuTestCase
diff --git a/osu.Game.Tests/Visual/TestCaseUpdateableBeatmapBackgroundSprite.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseUpdateableBeatmapBackgroundSprite.cs
similarity index 98%
rename from osu.Game.Tests/Visual/TestCaseUpdateableBeatmapBackgroundSprite.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseUpdateableBeatmapBackgroundSprite.cs
index 0981b482a1..74114b2e53 100644
--- a/osu.Game.Tests/Visual/TestCaseUpdateableBeatmapBackgroundSprite.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseUpdateableBeatmapBackgroundSprite.cs
@@ -12,7 +12,7 @@ using osu.Game.Online.API.Requests;
 using osu.Game.Rulesets;
 using osu.Game.Tests.Beatmaps.IO;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     public class TestCaseUpdateableBeatmapBackgroundSprite : OsuTestCase
     {
diff --git a/osu.Game.Tests/Visual/TestCaseVolumePieces.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseVolumePieces.cs
similarity index 96%
rename from osu.Game.Tests/Visual/TestCaseVolumePieces.cs
rename to osu.Game.Tests/Visual/UserInterface/TestCaseVolumePieces.cs
index 6dee047ae6..3ad1c922e4 100644
--- a/osu.Game.Tests/Visual/TestCaseVolumePieces.cs
+++ b/osu.Game.Tests/Visual/UserInterface/TestCaseVolumePieces.cs
@@ -8,7 +8,7 @@ using osu.Game.Overlays.Volume;
 using osuTK;
 using osuTK.Graphics;
 
-namespace osu.Game.Tests.Visual
+namespace osu.Game.Tests.Visual.UserInterface
 {
     public class TestCaseVolumePieces : OsuTestCase
     {