diff --git a/CMakePresets.json b/CMakePresets.json
index 85536bb086d5bb82675f26c563395d4f8bee2ca5..051de3e0e66d90c656463f9a6446fa73cae0e9d1 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -242,12 +242,9 @@
       "inherits": [
         "_release"
       ],
-      "execution": {
-        "timeout": 900
-      },
       "filter": {
         "exclude": {
-          "name": "LARGE"
+          "label": "large"
         }
       }
     },
@@ -256,12 +253,9 @@
       "inherits": [
         "_release"
       ],
-      "execution": {
-        "timeout": 5400
-      },
       "filter": {
         "include": {
-          "name": "LARGE"
+          "label": "large"
         }
       }
     },
diff --git a/scripts/cmake/test/AddTest.cmake b/scripts/cmake/test/AddTest.cmake
index 6c9f67af01b0a0549c7314012c0dded352cd9ac0..1fe4689786c2ef58b3af340d5add0bb760cf320e 100644
--- a/scripts/cmake/test/AddTest.cmake
+++ b/scripts/cmake/test/AddTest.cmake
@@ -412,13 +412,18 @@ Use six arguments version of AddTest with absolute and relative tolerances"
         )
     endif()
 
-    current_dir_as_list(ProcessLib DIR_LABELS)
+    current_dir_as_list(ProcessLib labels)
+    if(${AddTest_RUNTIME} LESS_EQUAL ${ogs.ctest.large_runtime})
+        list(APPEND labels default)
+    else()
+        list(APPEND labels large)
+    endif()
 
     set_tests_properties( ${TEST_NAME}
         PROPERTIES
             COST ${AddTest_RUNTIME}
             DISABLED ${AddTest_DISABLED}
-            LABELS "${DIR_LABELS}"
+            LABELS "${labels}"
             TIMEOUT ${timeout}
     )
 
@@ -470,9 +475,11 @@ Use six arguments version of AddTest with absolute and relative tolerances"
             --debug-output
         WORKING_DIRECTORY ${AddTest_SOURCE_PATH}
     )
-    set_tests_properties(
-        ${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME} DISABLED
-                                  ${AddTest_DISABLED}
+    set_tests_properties(${TESTER_NAME}
+        PROPERTIES
+            DEPENDS ${TEST_NAME}
+            DISABLED ${AddTest_DISABLED}
+            LABELS "tester;${labels}"
     )
 
 endfunction()
diff --git a/scripts/cmake/test/MeshTest.cmake b/scripts/cmake/test/MeshTest.cmake
index 0fe743d2185960ff9519e8370144386392f7c61b..e4548f1f257b342f6a47627e643d1e1a9873e8e7 100644
--- a/scripts/cmake/test/MeshTest.cmake
+++ b/scripts/cmake/test/MeshTest.cmake
@@ -42,7 +42,10 @@ function(MeshTest)
     if(NOT DEFINED MeshTest_REQUIREMENTS)
         set(MeshTest_REQUIREMENTS TRUE)
     endif()
-    if(NOT DEFINED MeshTest_RUNTIME)
+    set(timeout ${ogs.ctest.large_runtime})
+    if(DEFINED MeshTest_RUNTIME)
+        math(EXPR timeout "${MeshTest_RUNTIME} * 3")
+    else()
         set(MeshTest_RUNTIME 1)
     endif()
     if(NOT DEFINED MeshTest_WORKING_DIRECTORY)
@@ -189,7 +192,18 @@ function(MeshTest)
             -DWORKING_DIRECTORY=${MeshTest_WORKING_DIRECTORY} -P
             ${PROJECT_SOURCE_DIR}/scripts/cmake/test/AddTestWrapper.cmake
     )
-    set_tests_properties(${TEST_NAME} PROPERTIES COST ${MeshTest_RUNTIME})
+    current_dir_as_list(ProcessLib labels)
+    if(${MeshTest_RUNTIME} LESS_EQUAL ${ogs.ctest.large_runtime})
+        list(APPEND labels default)
+    else()
+        list(APPEND labels large)
+    endif()
+    set_tests_properties(${TEST_NAME}
+        PROPERTIES
+            COST ${MeshTest_RUNTIME}
+            LABELS "meshtest;${labels}"
+            TIMEOUT ${timeout}
+    )
 
     if(TARGET ${MeshTest_EXECUTABLE})
         add_dependencies(ctest ${MeshTest_EXECUTABLE})
@@ -214,6 +228,10 @@ function(MeshTest)
             --debug-output
         WORKING_DIRECTORY ${MeshTest_SOURCE_PATH}
     )
-    set_tests_properties(${TESTER_NAME} PROPERTIES DEPENDS ${TEST_NAME})
+    set_tests_properties(${TESTER_NAME}
+        PROPERTIES
+            DEPENDS ${TEST_NAME}
+            LABELS "tester;${labels}"
+    )
 
 endfunction()
diff --git a/scripts/cmake/test/Test.cmake b/scripts/cmake/test/Test.cmake
index e8be884df48e4ae2e49fcffcd0950e01828fb759..40c6c1404c112e7a4e6476ab22fe4cd9d9275e55 100644
--- a/scripts/cmake/test/Test.cmake
+++ b/scripts/cmake/test/Test.cmake
@@ -62,7 +62,7 @@ add_custom_target(
     ctest
     COMMAND
         ${CMAKE_CTEST_COMMAND} -T Test --force-new-ctest-process
-        --output-on-failure --output-log Tests/ctest.log --exclude-regex LARGE
+        --output-on-failure --output-log Tests/ctest.log -LE large
         ${CONFIG_PARAMETER}
     DEPENDS ${test_dependencies} ctest-cleanup
     USES_TERMINAL
@@ -76,8 +76,8 @@ add_custom_target(
     ctest-large
     COMMAND
         ${CMAKE_CTEST_COMMAND} -T Test --force-new-ctest-process
-        --output-on-failure --output-log Tests/ctest-large.log --tests-regex
-        LARGE ${CONFIG_PARAMETER}
+        --output-on-failure --output-log Tests/ctest-large.log -L large
+        ${CONFIG_PARAMETER}
     DEPENDS ${test_dependencies} ctest-large-cleanup
     USES_TERMINAL
 )