diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs
index 803cab9325..e04315894e 100644
--- a/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs
+++ b/osu.Game.Tests/Visual/Gameplay/TestScenePause.cs
@@ -285,8 +285,6 @@ namespace osu.Game.Tests.Visual.Gameplay
 
         protected class PausePlayer : TestPlayer
         {
-            public new GameplayClockContainer GameplayClockContainer => base.GameplayClockContainer;
-
             public new ScoreProcessor ScoreProcessor => base.ScoreProcessor;
 
             public new HUDOverlay HUDOverlay => base.HUDOverlay;
diff --git a/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs b/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs
new file mode 100644
index 0000000000..5f29b46fe6
--- /dev/null
+++ b/osu.Game.Tests/Visual/Gameplay/TestScenePauseWhenInactive.cs
@@ -0,0 +1,49 @@
+// 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 NUnit.Framework;
+using osu.Framework.Allocation;
+using osu.Framework.Bindables;
+using osu.Framework.Platform;
+using osu.Framework.Testing;
+using osu.Game.Beatmaps;
+using osu.Game.Rulesets;
+using osu.Game.Rulesets.Osu;
+using osu.Game.Screens.Play;
+
+namespace osu.Game.Tests.Visual.Gameplay
+{
+    [HeadlessTest] // we alter unsafe properties on the game host to test inactive window state.
+    public class TestScenePauseWhenInactive : PlayerTestScene
+    {
+        protected new TestPlayer Player => (TestPlayer)base.Player;
+
+        protected override IBeatmap CreateBeatmap(RulesetInfo ruleset)
+        {
+            var beatmap = (Beatmap)base.CreateBeatmap(ruleset);
+
+            beatmap.HitObjects.RemoveAll(h => h.StartTime < 30000);
+
+            return beatmap;
+        }
+
+        [Resolved]
+        private GameHost host { get; set; }
+
+        public TestScenePauseWhenInactive()
+            : base(new OsuRuleset())
+        {
+        }
+
+        [Test]
+        public void TestDoesntPauseDuringIntro()
+        {
+            AddStep("set inactive", () => ((Bindable<bool>)host.IsActive).Value = false);
+            AddStep("resume player", () => Player.GameplayClockContainer.Start());
+            AddUntilStep("wait for pause", () => Player.GameplayClockContainer.IsPaused.Value);
+            AddAssert("time of pause is after gameplay start time", () => Player.GameplayClockContainer.GameplayClock.CurrentTime >= Player.DrawableRuleset.GameplayStartTime);
+        }
+
+        protected override Player CreatePlayer(Ruleset ruleset) => new TestPlayer(true, true, true);
+    }
+}
diff --git a/osu.Game/Tests/Visual/TestPlayer.cs b/osu.Game/Tests/Visual/TestPlayer.cs
index 31f6edadec..8e3821f1a0 100644
--- a/osu.Game/Tests/Visual/TestPlayer.cs
+++ b/osu.Game/Tests/Visual/TestPlayer.cs
@@ -8,13 +8,16 @@ namespace osu.Game.Tests.Visual
 {
     public class TestPlayer : Player
     {
-        protected override bool PauseOnFocusLost => false;
+        protected override bool PauseOnFocusLost { get; }
 
         public new DrawableRuleset DrawableRuleset => base.DrawableRuleset;
 
-        public TestPlayer(bool allowPause = true, bool showResults = true)
+        public new GameplayClockContainer GameplayClockContainer => base.GameplayClockContainer;
+
+        public TestPlayer(bool allowPause = true, bool showResults = true, bool pauseOnFocusLost = false)
             : base(allowPause, showResults)
         {
+            PauseOnFocusLost = pauseOnFocusLost;
         }
     }
 }