diff --git a/java/ide-customization/BUILD.bazel b/java/ide-customization/BUILD.bazel
index 779471b4a3a6..355868f234c1 100644
--- a/java/ide-customization/BUILD.bazel
+++ b/java/ide-customization/BUILD.bazel
@@ -30,4 +30,29 @@ jvm_library(
"//notebooks/visualization",
]
)
-### auto-generated section `build intellij.java.ide.customization` end
\ No newline at end of file
+
+jvm_library(
+ name = "ide-customization_test_lib",
+ visibility = ["//visibility:public"],
+ srcs = glob(["test/**/*.kt", "test/**/*.java", "test/**/*.form"], allow_empty = True),
+ associates = [":ide-customization"],
+ deps = [
+ "//java/java-psi-api:psi",
+ "//platform/core-api:core",
+ "//platform/lang-api:lang",
+ "//platform/platform-impl:ide-impl",
+ "//platform/lang-core",
+ "//platform/testFramework",
+ "//platform/testFramework:testFramework_test_lib",
+ ]
+)
+### auto-generated section `build intellij.java.ide.customization` end
+
+### auto-generated section `test intellij.java.ide.customization` start
+load("@community//build:tests-options.bzl", "jps_test")
+
+jps_test(
+ name = "ide-customization_test",
+ runtime_deps = [":ide-customization_test_lib"]
+)
+### auto-generated section `test intellij.java.ide.customization` end
\ No newline at end of file
diff --git a/java/ide-customization/intellij.java.ide.customization.iml b/java/ide-customization/intellij.java.ide.customization.iml
index d6ca27feb9ca..072baf309993 100644
--- a/java/ide-customization/intellij.java.ide.customization.iml
+++ b/java/ide-customization/intellij.java.ide.customization.iml
@@ -5,6 +5,7 @@
+
@@ -20,5 +21,6 @@
+
\ No newline at end of file
diff --git a/java/ide-customization/test/com/intellij/ide/customization/java/FusSchedulersRegistrationTest.java b/java/ide-customization/test/com/intellij/ide/customization/java/FusSchedulersRegistrationTest.java
new file mode 100644
index 000000000000..f81498908e25
--- /dev/null
+++ b/java/ide-customization/test/com/intellij/ide/customization/java/FusSchedulersRegistrationTest.java
@@ -0,0 +1,47 @@
+// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package com.intellij.ide.customization.java;
+
+import com.intellij.ide.ApplicationActivity;
+import com.intellij.openapi.extensions.ExtensionPointName;
+import com.intellij.openapi.extensions.impl.ExtensionPointImpl;
+import com.intellij.openapi.util.Pair;
+import com.intellij.testFramework.fixtures.BasePlatformTestCase;
+import com.intellij.util.containers.ContainerUtil;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Map;
+
+public class FusSchedulersRegistrationTest extends BasePlatformTestCase {
+ // runs with intellij.java.tests classpath
+
+ public static final String PLUGIN_ID = "com.intellij.java.ide";
+
+ private final ExtensionPointName APP_ACTIVITIES_EP =
+ new ExtensionPointName<>("com.intellij.applicationActivity");
+ private final ExtensionPointName POST_STARTUP_ACTIVITIES_EP =
+ new ExtensionPointName<>("com.intellij.postStartupActivity");
+
+ public void testSchedulerActivitiesAvailable() {
+ var applicationActivities = getExtensionClasses(APP_ACTIVITIES_EP);
+ assertTrue("StatisticsJobsScheduler is missing",
+ applicationActivities.containsKey("com.intellij.internal.statistic.updater.StatisticsJobsScheduler"));
+ assertTrue("StatisticsStateCollectorsScheduler is missing",
+ applicationActivities.containsKey("com.intellij.internal.statistic.updater.StatisticsStateCollectorsScheduler"));
+
+ assertEquals(PLUGIN_ID, applicationActivities.get("com.intellij.internal.statistic.updater.StatisticsJobsScheduler"));
+ assertEquals(PLUGIN_ID, applicationActivities.get("com.intellij.internal.statistic.updater.StatisticsStateCollectorsScheduler"));
+
+ var postStartup = getExtensionClasses(POST_STARTUP_ACTIVITIES_EP);
+ assertTrue("StatisticsStateCollectorsScheduler$MyStartupActivity is missing",
+ postStartup.containsKey("com.intellij.internal.statistic.updater.StatisticsStateCollectorsScheduler$MyStartupActivity"));
+
+ assertEquals(PLUGIN_ID, applicationActivities.get("com.intellij.internal.statistic.updater.StatisticsStateCollectorsScheduler"));
+ }
+
+ // operates with EP adapters instead of instances, because those activities are not created in unit tests mode
+ // they throw ExtensionNotApplicableException.create() from init
+ private static @NotNull Map<@NotNull String, String> getExtensionClasses(ExtensionPointName epName) {
+ return ContainerUtil.map2Map(((ExtensionPointImpl>)epName.getPoint()).getSortedAdapters(),
+ it -> new Pair<>(it.getAssignableToClassName(), it.pluginDescriptor.getPluginId().getIdString()));
+ }
+}
diff --git a/java/java-tests/BUILD.bazel b/java/java-tests/BUILD.bazel
index 31e2572ed489..a7e315b0a955 100644
--- a/java/java-tests/BUILD.bazel
+++ b/java/java-tests/BUILD.bazel
@@ -178,6 +178,7 @@ jvm_library(
"//platform/testFramework/junit5:junit5_test_lib",
"//platform/ml-api:ml",
"//java/ide-customization",
+ "//java/ide-customization:ide-customization_test_lib",
"//platform/backend/workspace",
"//platform/util",
"//platform/core-api:core",
diff --git a/platform/testFramework/testResources/tests/testGroups.properties b/platform/testFramework/testResources/tests/testGroups.properties
index 66738229af30..cf5c50f69966 100644
--- a/platform/testFramework/testResources/tests/testGroups.properties
+++ b/platform/testFramework/testResources/tests/testGroups.properties
@@ -312,6 +312,7 @@ com.intellij.java.*
org.jetbrains.java.*
org.jetbrains.uast.test.java.*
com.intellij.codeInspection.tests.java.*
+com.intellij.ide.customization.java.*
com.siyeh.*
-com.intellij.java.compiler.*
-com.intellij.java.propertyBased.*
diff --git a/plugins/kotlin/idea/tests/BUILD.bazel b/plugins/kotlin/idea/tests/BUILD.bazel
index f78f2fa0202a..78d430574418 100644
--- a/plugins/kotlin/idea/tests/BUILD.bazel
+++ b/plugins/kotlin/idea/tests/BUILD.bazel
@@ -218,6 +218,7 @@ jvm_library(
"//plugins/kotlin/kotlin.searching/base",
"//plugins/kotlin/j2k/k1.old.post-processing",
"//java/ide-customization",
+ "//java/ide-customization:ide-customization_test_lib",
"//plugins/kotlin/refactorings/kotlin.refactorings.common:kotlin-refactorings-common",
"//plugins/kotlin/base/test:test_test_lib",
"@lib//:hamcrest",