Index: trunk/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java	(revision 19223)
@@ -48,4 +48,5 @@
 import org.junit.jupiter.api.Test;
 import org.openstreetmap.josm.testutils.annotations.HTTPS;
+import org.openstreetmap.josm.testutils.annotations.IntegrationTest;
 import org.openstreetmap.josm.tools.Logging;
 
@@ -58,4 +59,5 @@
  */
 @HTTPS
+@IntegrationTest
 class DomainValidatorTestIT {
     /**
Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTestIT.java	(revision 19223)
@@ -6,4 +6,5 @@
 import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser;
 import org.openstreetmap.josm.testutils.annotations.HTTPS;
+import org.openstreetmap.josm.testutils.annotations.IntegrationTest;
 import org.openstreetmap.josm.testutils.annotations.Projection;
 
@@ -13,4 +14,5 @@
 @HTTPS
 @Projection
+@IntegrationTest
 class MapCSSParserTestIT {
     /**
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreferenceTestIT.java	(revision 19223)
@@ -68,4 +68,5 @@
 import org.openstreetmap.josm.testutils.annotations.HTTPS;
 import org.openstreetmap.josm.testutils.annotations.I18n;
+import org.openstreetmap.josm.testutils.annotations.IntegrationTest;
 import org.openstreetmap.josm.testutils.annotations.ProjectionNadGrids;
 import org.openstreetmap.josm.tools.HttpClient;
@@ -79,4 +80,5 @@
 @HTTPS
 @I18n
+@IntegrationTest
 @org.openstreetmap.josm.testutils.annotations.Projection
 @ProjectionNadGrids
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/MapPaintPreferenceTestIT.java	(revision 19223)
@@ -27,4 +27,5 @@
 import org.openstreetmap.josm.gui.preferences.AbstractExtendedSourceEntryTestCase;
 import org.openstreetmap.josm.testutils.annotations.HTTPS;
+import org.openstreetmap.josm.testutils.annotations.IntegrationTest;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -33,4 +34,5 @@
  */
 @HTTPS
+@IntegrationTest
 @Timeout(value = 15, unit = TimeUnit.MINUTES)
 class MapPaintPreferenceTestIT extends AbstractExtendedSourceEntryTestCase {
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/map/TaggingPresetPreferenceTestIT.java	(revision 19223)
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.testutils.annotations.HTTPS;
+import org.openstreetmap.josm.testutils.annotations.IntegrationTest;
 import org.openstreetmap.josm.testutils.annotations.Territories;
 import org.openstreetmap.josm.tools.HttpClient;
@@ -51,4 +52,5 @@
  */
 @HTTPS
+@IntegrationTest
 @Territories
 @Timeout(value = 20, unit = TimeUnit.MINUTES)
Index: trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/gui/preferences/validator/ValidatorTagCheckerRulesPreferenceTestIT.java	(revision 19223)
@@ -25,4 +25,5 @@
 import org.openstreetmap.josm.gui.preferences.AbstractExtendedSourceEntryTestCase;
 import org.openstreetmap.josm.testutils.annotations.HTTPS;
+import org.openstreetmap.josm.testutils.annotations.IntegrationTest;
 
 /**
@@ -30,4 +31,5 @@
  */
 @HTTPS
+@IntegrationTest
 @Timeout(20)
 class ValidatorTagCheckerRulesPreferenceTestIT extends AbstractExtendedSourceEntryTestCase {
Index: trunk/test/unit/org/openstreetmap/josm/io/CertificateAmendmentTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/io/CertificateAmendmentTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/io/CertificateAmendmentTestIT.java	(revision 19223)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.testutils.annotations.HTTPS;
+import org.openstreetmap.josm.testutils.annotations.IntegrationTest;
 
 /**
@@ -23,4 +24,5 @@
  */
 @HTTPS
+@IntegrationTest
 @Timeout(20)
 class CertificateAmendmentTestIT {
Index: trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/plugins/PluginHandlerTestIT.java	(revision 19223)
@@ -42,4 +42,5 @@
 import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 import org.openstreetmap.josm.testutils.annotations.HTTPS;
+import org.openstreetmap.josm.testutils.annotations.IntegrationTest;
 import org.openstreetmap.josm.testutils.annotations.Main;
 import org.openstreetmap.josm.testutils.annotations.Plugins;
@@ -56,4 +57,5 @@
 @BasicPreferences
 @HTTPS
+@IntegrationTest
 @Main
 @Projection
Index: trunk/test/unit/org/openstreetmap/josm/testutils/ImageTestUtils.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/testutils/ImageTestUtils.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/testutils/ImageTestUtils.java	(revision 19223)
@@ -148,5 +148,5 @@
     public static void writeDebugImages(@Nonnull Path directory, @Nonnull String filePrefix, @Nonnull BufferedImage diff,
                                         @Nullable BufferedImage oldImage, @Nullable BufferedImage newImage) {
-        if (!UPDATE_ALL) {
+        if (!UPDATE_ALL && false) {
             return;
         }
Index: trunk/test/unit/org/openstreetmap/josm/testutils/annotations/FunctionalTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/testutils/annotations/FunctionalTest.java	(revision 19223)
+++ trunk/test/unit/org/openstreetmap/josm/testutils/annotations/FunctionalTest.java	(revision 19223)
@@ -0,0 +1,25 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.testutils.annotations;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import org.junit.jupiter.api.Tag;
+
+/**
+ * Mark this test as a <a href="https://en.wikipedia.org/wiki/Functional_testing">Functional</a> test
+ * @author Taylor Smock
+ */
+@Inherited
+@Documented
+@Retention(RUNTIME)
+@Target({TYPE, METHOD})
+@Tag("FunctionalTest")
+public @interface FunctionalTest {
+}
Index: trunk/test/unit/org/openstreetmap/josm/testutils/annotations/IntegrationTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/testutils/annotations/IntegrationTest.java	(revision 19223)
+++ trunk/test/unit/org/openstreetmap/josm/testutils/annotations/IntegrationTest.java	(revision 19223)
@@ -0,0 +1,25 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.testutils.annotations;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import org.junit.jupiter.api.Tag;
+
+/**
+ * Mark this test as an <a href="https://en.wikipedia.org/wiki/Integration_testing">Integration</a> test
+ * @author Taylor Smock
+ */
+@Inherited
+@Documented
+@Retention(RUNTIME)
+@Target({TYPE, METHOD})
+@Tag("IntegrationTest")
+public @interface IntegrationTest {
+}
Index: trunk/test/unit/org/openstreetmap/josm/testutils/annotations/PerformanceTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/testutils/annotations/PerformanceTest.java	(revision 19223)
+++ trunk/test/unit/org/openstreetmap/josm/testutils/annotations/PerformanceTest.java	(revision 19223)
@@ -0,0 +1,25 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.testutils.annotations;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import org.junit.jupiter.api.Tag;
+
+/**
+ * Mark this test as a <a href="https://en.wikipedia.org/wiki/Software_performance_testing">Performance</a> test
+ * @author Taylor Smock
+ */
+@Inherited
+@Documented
+@Retention(RUNTIME)
+@Target({TYPE, METHOD})
+@Tag("PerformanceTest")
+public @interface PerformanceTest {
+}
Index: trunk/test/unit/org/openstreetmap/josm/tools/PlatformHookTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/tools/PlatformHookTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/tools/PlatformHookTestIT.java	(revision 19223)
@@ -11,8 +11,10 @@
 
 import jakarta.json.Json;
+import org.openstreetmap.josm.testutils.annotations.IntegrationTest;
 
 /**
  * Integration tests of {@link PlatformHook} class.
  */
+@IntegrationTest
 class PlatformHookTestIT {
     /**
Index: trunk/test/unit/org/openstreetmap/josm/tools/TerritoriesTestIT.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/tools/TerritoriesTestIT.java	(revision 19221)
+++ trunk/test/unit/org/openstreetmap/josm/tools/TerritoriesTestIT.java	(revision 19223)
@@ -14,4 +14,5 @@
  */
 @Projection
+@org.openstreetmap.josm.testutils.annotations.Territories
 class TerritoriesTestIT {
     /**
