diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2472e6b96a9b57a3459c613738d90f7ca8078e2d..7b1b3fe0d5298d48854971056b2efcbab414e63e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -231,30 +231,44 @@ Markdown Lint:
       junit: ${JUNIT_FILES}
   coverage: '/Total.*?([0-9]{1,3})%/'
   needs: []
-  script:
+  before_script:
     - CI_RUNNER_MEMORY="$(awk '/MemTotal/ {printf( "%d\n", $2 / 1024 / 1024 * .90 )}' /proc/meminfo)g"
     - export CI_RUNNER_MEMORY
-    - ./gradlew ${CMD} --info --no-daemon
+    - ./gradlew ${CMD} --info
+  after_script:
     - cat ${JACOCO_HTML_DIR}/index.html
   stage: test
 
 Alaska 2007 NSHM Test:
   extends:
     - .nshm-test
-  variables:
-    CMD: testAlaska2007
+  script:
+    - ./gradlew testAlaska2007 --info
 
 Alaska 2023 NSHM Test:
   extends:
     - .nshm-test
   variables:
     CMD: testAlaska2023
+  script:
+    - ./gradlew testAlaska2007 --info
 
 CONUS 2018 NSHM Test:
   extends:
     - .nshm-test
-  variables:
-    CMD: testConus2018
+  parallel:
+    matrix:
+      - TEST_SITE: LOS_ANGELES_CA
+      - TEST_SITE: SAN_FRANCISCO_CA
+      - TEST_SITE: SEATTLE_WA
+      - TEST_SITE: SALT_LAKE_CITY_UT
+      - TEST_SITE: RENO_NV
+      - TEST_SITE: NEW_MADRID_MO
+      - TEST_SITE: BOSTON_MA
+      - TEST_SITE: NEW_YORK_NY
+      - TEST_SITE: CHICAGO_IL
+  script:
+    - ./gradlew testConus2018 -DTEST_SITE=${TEST_SITE} --info
 
 CONUS 2023 NSHM Test:
   extends:
@@ -270,8 +284,8 @@ CONUS 2023 NSHM Test:
       - TEST_SITE: BOSTON_MA
       - TEST_SITE: NEW_YORK_NY
       - TEST_SITE: CHICAGO_IL
-  variables:
-    CMD: testConus2023
+  script:
+    - ./gradlew testConus2023 -DTEST_SITE=${TEST_SITE} --info
 
 YAML Lint:
   allow_failure: true
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/Conus2018Tests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/Conus2018Tests.java
deleted file mode 100644
index 28b70255350ad2bd577090713d7349cea93b6157..0000000000000000000000000000000000000000
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/Conus2018Tests.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package gov.usgs.earthquake.nshmp.model;
-
-import java.io.IOException;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.TestInstance;
-import org.junit.jupiter.api.TestInstance.Lifecycle;
-import org.junit.jupiter.api.parallel.Execution;
-import org.junit.jupiter.api.parallel.ExecutionMode;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
-
-import gov.usgs.earthquake.nshmp.NamedLocation;
-import gov.usgs.earthquake.nshmp.model.NshmTestUtils.Nshm;
-import gov.usgs.earthquake.nshmp.model.NshmTestUtils.NshmModel;
-
-@TestInstance(Lifecycle.PER_CLASS)
-@Execution(ExecutionMode.CONCURRENT)
-class Conus2018Tests {
-
-  Nshm nshm = NshmTests.NSHMS.get("nshm-conus-2018");
-  NshmModel nshmModel;
-
-  @BeforeAll
-  void load() {
-    nshmModel = NshmTestUtils.loadModel(nshm);
-  }
-
-  @AfterAll
-  void stop() {
-    nshmModel.exec.shutdown();
-  }
-
-  @ParameterizedTest
-  @MethodSource("conusSites")
-  final void testConus2018(NamedLocation location) throws IOException {
-    NshmTestUtils.testNshm(nshmModel, location);
-  }
-
-  private static Stream<NamedLocation> conusSites() {
-    return NshmTests.CONUS_LOCATIONS.stream();
-  }
-}
diff --git a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java
index a5ba46a7e40802c0e3eb4eb62954f5e5891e5a62..66b0c143611fd4a07f1acd4adeb644fe7d312046 100644
--- a/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java
+++ b/src/test/java/gov/usgs/earthquake/nshmp/model/NshmTests.java
@@ -10,8 +10,6 @@ import java.util.Optional;
 import java.util.Set;
 
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
 
 import gov.usgs.earthquake.nshmp.NamedLocation;
 import gov.usgs.earthquake.nshmp.gmm.Imt;
@@ -25,7 +23,7 @@ import gov.usgs.earthquake.nshmp.site.NshmpSite;
  */
 class NshmTests {
   /* Alaska test sites */
-  static final List<NamedLocation> ALASKA_LOCATIONS = List.of(
+  private static final List<NamedLocation> ALASKA_LOCATIONS = List.of(
       NshmpSite.ANCHORAGE_AK,
       NshmpSite.FAIRBANKS_AK,
       NshmpSite.JUNEAU_AK,
@@ -33,7 +31,7 @@ class NshmTests {
       NshmpSite.VALDEZ_AK);
 
   /* CONUS test sites */
-  static final List<NamedLocation> CONUS_LOCATIONS = List.of(
+  private static final List<NamedLocation> CONUS_LOCATIONS = List.of(
       NshmpSite.LOS_ANGELES_CA,
       NshmpSite.SAN_FRANCISCO_CA,
       NshmpSite.SEATTLE_WA,
@@ -136,10 +134,9 @@ class NshmTests {
    *
    * To run test: ./gradlew testConus2018
    */
-  @ParameterizedTest
-  @MethodSource("conusSites")
-  final void testConus2018(NamedLocation location) throws IOException {
-    NshmTestUtils.testNshm(NSHMS.get("nshm-conus-2018"), location);
+  @Test
+  final void testConus2018() throws IOException {
+    NshmTestUtils.testNshm(NSHMS.get("nshm-conus-2018"), Optional.ofNullable(getSite()));
   }
 
   /**
diff --git a/src/test/resources/e2e/ junit-platform.properties b/src/test/resources/e2e/ junit-platform.properties
deleted file mode 100644
index fe1e8bb73f07f67364430ece7336ad0f278bc3aa..0000000000000000000000000000000000000000
--- a/src/test/resources/e2e/ junit-platform.properties	
+++ /dev/null
@@ -1,4 +0,0 @@
-junit.jupiter.execution.parallel.enabled = true
-junit.jupiter.execution.parallel.config.fixed.parallelism
-junit.jupiter.execution.parallel.mode.default = concurrent
-junit.jupiter.execution.parallel.mode.classes.default = concurrent