diff --git a/Content.IntegrationTests/Tests/FollowerSystemTest.cs b/Content.IntegrationTests/Tests/FollowerSystemTest.cs
new file mode 100644
index 0000000000..fa8c1968d0
--- /dev/null
+++ b/Content.IntegrationTests/Tests/FollowerSystemTest.cs
@@ -0,0 +1,63 @@
+using System.Linq;
+using System.Threading.Tasks;
+using Content.Shared.Follower;
+using NUnit.Framework;
+using Robust.Shared.GameObjects;
+using Robust.Shared.IoC;
+using Robust.Shared.Log;
+using Robust.Shared.Map;
+
+namespace Content.IntegrationTests.Tests;
+
+[TestFixture, TestOf(typeof(FollowerSystem))]
+public sealed class FollowerSystemTest : ContentIntegrationTest
+{
+ ///
+ /// This test ensures that deleting a map while an entity follows another doesn't throw any exceptions.
+ ///
+ [Test]
+ public async Task FollowerMapDeleteTest()
+ {
+ var server = StartServerDummyTicker();
+ await server.WaitIdleAsync();
+
+ await server.WaitPost(() =>
+ {
+ var mapMan = IoCManager.Resolve();
+ var entMan = IoCManager.Resolve();
+ var sysMan = IoCManager.Resolve();
+ var logger = IoCManager.Resolve().RootSawmill;
+ var followerSystem = sysMan.GetEntitySystem();
+
+ // Create a map to spawn the observers on.
+ var map = mapMan.CreateMap();
+
+ // Spawn an observer to be followed.
+ var followed = entMan.SpawnEntity("MobObserver", new MapCoordinates(0, 0, map));
+ logger.Info($"Spawned followed observer: {entMan.ToPrettyString(followed)}");
+
+ // Spawn an observer to follow another observer.
+ var follower = entMan.SpawnEntity("MobObserver", new MapCoordinates(0, 0, map));
+ logger.Info($"Spawned follower observer: {entMan.ToPrettyString(follower)}");
+
+ followerSystem.StartFollowingEntity(follower, followed);
+
+ foreach (var ent in entMan.GetEntities().ToArray())
+ {
+ // Let's skip entities that have been deleted, as we want to get their TransformComp for extra info.
+ if (entMan.Deleted(ent))
+ {
+ logger.Info($"Skipping {entMan.ToPrettyString(ent)}...");
+ continue;
+ }
+
+ // Log some information about the entity before we delete it.
+ var transform = entMan.GetComponent(ent);
+ logger.Info($"Deleting entity {entMan.ToPrettyString(ent)}... Parent: {entMan.ToPrettyString(transform.ParentUid)} | Children: {string.Join(", ", transform.Children.Select(c => entMan.ToPrettyString(c.Owner)))}");
+
+ // Actually delete the entity now.
+ entMan.DeleteEntity(ent);
+ }
+ });
+ }
+}