This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/CAUSEWAY-3676 by this push:
     new 3a9d0efc50 CAUSEWAY-3676: fixes integ tests
3a9d0efc50 is described below

commit 3a9d0efc50a76dbf03c8b574968347c0aaccf4ae
Author: danhaywood <[email protected]>
AuthorDate: Wed Feb 21 19:33:49 2024 +0000

    CAUSEWAY-3676: fixes integ tests
---
 ...tegTest.java => AbstractDynamic_IntegTest.java} |  47 ++---
 .../graphql/viewer/test/e2e/Admin_IntegTest.java   |  29 +---
 ...r_IntegTest.each.add_big_decimals.approved.json |  18 +-
 ...r_IntegTest.each.add_big_integers.approved.json |  10 +-
 ...ntegTest.each.add_double_wrappers.approved.json |  10 +-
 ...ulator_IntegTest.each.add_doubles.approved.json |  10 +-
 ...IntegTest.each.add_float_wrappers.approved.json |  10 +-
 ...culator_IntegTest.each.add_floats.approved.json |  10 +-
 ...tegTest.each.add_integer_wrappers.approved.json |  10 +-
 ...lator_IntegTest.each.add_integers.approved.json |  10 +-
 ...ator_IntegTest.each.boolean_and_1.approved.json |  10 +-
 ...ator_IntegTest.each.boolean_and_2.approved.json |  10 +-
 ...ulator_IntegTest.each.boolean_not.approved.json |  10 +-
 ...lator_IntegTest.each.boolean_or_1.approved.json |  10 +-
 ...lator_IntegTest.each.boolean_or_2.approved.json |  10 +-
 .../Calculator_IntegTest.each.concat.approved.json |  10 +-
 ...tegTest.each.jdk8_local_plus_days.approved.json |  10 +-
 ...jdk8_local_plus_hours_and_minutes.approved.json |  10 +-
 ...t_plus_days_and_hours_and_minutes.approved.json |  10 +-
 ...dk8_offset_plus_hours_and_minutes.approved.json |  10 +-
 ...d_plus_days_and_hours_and_minutes.approved.json |  10 +-
 ...tegTest.each.joda_local_plus_days.approved.json |  10 +-
 ...joda_local_plus_hours_and_minutes.approved.json |  10 +-
 ...tor_IntegTest.each.joda_plus_days.approved.json |  10 +-
 ...culator_IntegTest.each.next_month.approved.json |  10 +-
 ...or_IntegTest.each.scenario_concat.approved.json |  24 +--
 ...ulator_IntegTest.each.some_locale.approved.json |  10 +-
 ...alculator_IntegTest.each.some_url.approved.json |  10 +-
 ...lculator_IntegTest.each.some_uuid.approved.json |  10 +-
 .../viewer/test/e2e/Calculator_IntegTest.java      |  28 +--
 ...change_department_name_visibility.approved.json |   9 -
 ..._IntegTest.each.create_department.approved.json |  18 +-
 ...te_department_name_param_disabled.approved.json |  22 +--
 ...tegTest.each.find_all_departments.approved.json | 118 ++++++-------
 ...ment_and_add_staff_member_choices.approved.json |  76 ++++----
 ..._department_and_add_staff_members.approved.json | 192 +++++++++++----------
 ...ment_and_change_head_autocomplete.approved.json |  36 ++--
 ...epartment_and_change_head_default.approved.json |  22 +--
 ...epartment_and_change_name_invalid.approved.json |  24 +--
 ...rtment_and_edit_head_autocomplete.approved.json |  30 ++--
 ...t_head_autocomplete_none_matching.approved.json |  14 +-
 ...ind_department_and_list_its_staff.approved.json |  38 ++--
 ...t_and_remove_staff_member_choices.approved.json |  34 ++--
 ...Test.each.find_department_by_name.approved.json |  30 ++--
 ...o_find_department_and_change_name.approved.json |  50 +++---
 .../viewer/test/e2e/Department_IntegTest.java      |  29 +---
 ..._depthead_and_change_name_invalid.approved.json |  14 +-
 ...ad_and_change_name_invoke_invalid.approved.json |  24 +--
 ...egTest.each.find_depthead_by_name.approved.json |  24 +--
 .../viewer/test/e2e/DeptHead_IntegTest.java        |  28 +--
 ...People_IntegTest.each.find_person.approved.json |  42 ++---
 .../graphql/viewer/test/e2e/People_IntegTest.java  |  28 +--
 ...h.name_of_when_dept_head_using_id.approved.json |  24 +--
 ....name_of_when_dept_head_using_ref.approved.json |  44 ++---
 ...hen_staff_member_using_invalid_id.approved.json |  24 +--
 ...me_of_when_staff_member_using_ref.approved.json |  44 ++---
 .../graphql/viewer/test/e2e/Person_IntegTest.java  |  28 +--
 ...eate_staff_member_with_department.approved.json |  78 +++++----
 ...ind_staff_member_by_name_and_edit.approved.json |  18 +-
 ...er_by_name_and_edit_grade_choices.approved.json |  16 +-
 ...gTest.each.list_all_staff_members.approved.json | 140 +++++++--------
 ...ch.staff_member_name_edit_invalid.approved.json |  22 +--
 ...t.each.staff_member_name_validate.approved.json |  14 +-
 .../graphql/viewer/test/e2e/Staff_IntegTest.java   |  28 +--
 ...tegTest.change_department_name_visibility._.gql |   0
 ...change_department_name_visibility.approved.json |  11 ++
 .../DepartmentMutating_IntegTest.java              |   7 +-
 .../e2e/special/DeptHeadMutating_IntegTest.java    |   2 +
 ...2_IntegTest.find_depthead_and_change_name._.gql |  20 ++-
 ...est.find_depthead_and_change_name.approved.json |  20 ++-
 .../test/e2e/special/DeptHead_2_IntegTest.java     |   2 +
 .../test/e2e/special/Person_2_IntegTest.java       |   2 +
 ...d_staff_member_by_name_and_download_photo._.gql |  30 ++--
 ...member_by_name_and_download_photo.approved.json |  32 +++-
 .../viewer/test/e2e/special/Staff_2_IntegTest.java |   8 +-
 75 files changed, 953 insertions(+), 959 deletions(-)

diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/AbstractDynamic_IntegTest.java
similarity index 77%
copy from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
copy to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/AbstractDynamic_IntegTest.java
index b5499d2194..4c90826969 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/AbstractDynamic_IntegTest.java
@@ -18,36 +18,36 @@
  */
 package org.apache.causeway.viewer.graphql.viewer.test.e2e;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.stream.Collectors;
+
 import org.approvaltests.Approvals;
 import org.approvaltests.integrations.junit5.JupiterApprovals;
-import org.approvaltests.reporters.DiffReporter;
-import org.approvaltests.reporters.UseReporter;
 import org.junit.jupiter.api.DynamicTest;
 import org.junit.jupiter.api.Order;
-import org.junit.jupiter.api.Test;
-
 import org.junit.jupiter.api.TestFactory;
 
 import org.springframework.test.context.ActiveProfiles;
 
-import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
-
 import lombok.val;
 
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.stream.Collectors;
-
 
-//NOT USING @Transactional since we are running server within same transaction 
otherwise
-@Order(20)
 @ActiveProfiles("test")
-public class Admin_IntegTest extends Abstract_IntegTest {
+public abstract class AbstractDynamic_IntegTest extends Abstract_IntegTest {
+
+    private final String suffix;
+
+    protected AbstractDynamic_IntegTest(String suffix) {
+        this.suffix = suffix;
+    }
+    protected AbstractDynamic_IntegTest() {
+        this("._.gql");
+    }
 
-    @TestFactory
     Iterable<DynamicTest> each() throws IOException, URISyntaxException {
 
         val integClassName = getClass().getSimpleName();
@@ -59,17 +59,20 @@ public class Admin_IntegTest extends Abstract_IntegTest {
                 .filter(Files::isRegularFile)
                 .filter(file -> {
                     String fileName = file.getFileName().toString();
-                    return fileName.startsWith(integClassName) && 
fileName.endsWith("._.gql");
+                    return fileName.startsWith(integClassName) && 
fileName.endsWith(suffix);
                 })
                 .map(file -> {
                     String fileName = file.getFileName().toString();
-                    String testName = 
fileName.substring(integClassName.length() + 
".each.".length()).replace("._.gql", "");
+                    String testName = 
fileName.substring(integClassName.length() + ".each.".length()).replace(suffix, 
"");
                     return JupiterApprovals.dynamicTest(
                             testName,
                             options -> {
-                                Approvals.verify(submitFileNamed(fileName), 
jsonOptions(options));
-                                afterEach();
-                                beforeEach();
+                                try {
+                                    
Approvals.verify(submitFileNamed(fileName), jsonOptions(options));
+                                } finally {
+                                    afterEach();
+                                    beforeEach();
+                                }
                             });
                 })
                 .collect(Collectors.toList());
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
index b5499d2194..e287cfbc31 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
@@ -45,34 +45,11 @@ import java.util.stream.Collectors;
 //NOT USING @Transactional since we are running server within same transaction 
otherwise
 @Order(20)
 @ActiveProfiles("test")
-public class Admin_IntegTest extends Abstract_IntegTest {
+public class Admin_IntegTest extends AbstractDynamic_IntegTest {
 
+    @Override
     @TestFactory
     Iterable<DynamicTest> each() throws IOException, URISyntaxException {
-
-        val integClassName = getClass().getSimpleName();
-        val classUrl = getClass().getResource(integClassName + ".class");
-        Path classPath = Paths.get(classUrl.toURI());
-        Path directoryPath = classPath.getParent();
-
-        return Files.walk(directoryPath)
-                .filter(Files::isRegularFile)
-                .filter(file -> {
-                    String fileName = file.getFileName().toString();
-                    return fileName.startsWith(integClassName) && 
fileName.endsWith("._.gql");
-                })
-                .map(file -> {
-                    String fileName = file.getFileName().toString();
-                    String testName = 
fileName.substring(integClassName.length() + 
".each.".length()).replace("._.gql", "");
-                    return JupiterApprovals.dynamicTest(
-                            testName,
-                            options -> {
-                                Approvals.verify(submitFileNamed(fileName), 
jsonOptions(options));
-                                afterEach();
-                                beforeEach();
-                            });
-                })
-                .collect(Collectors.toList());
+        return super.each();
     }
-
 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
index 2dbb5ad975..4741f93156 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
@@ -1,13 +1,15 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "addBigDecimals" : {
-        "invoke" : {
-          "args" : {
-            "x" : "1.1",
-            "y" : "2.2"
-          },
-          "results" : "3.3"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "addBigDecimals" : {
+          "invoke" : {
+            "args" : {
+              "x" : "1.1",
+              "y" : "2.2"
+            },
+            "results" : "3.3"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_integers.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_integers.approved.json
index 6af3f7b41e..315e98b2f9 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_integers.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_integers.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "addBigIntegers" : {
-        "invoke" : {
-          "results" : "3"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "addBigIntegers" : {
+          "invoke" : {
+            "results" : "3"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_double_wrappers.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_double_wrappers.approved.json
index 7c5d36be29..4c39ad89af 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_double_wrappers.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_double_wrappers.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "addDoubleWrappers" : {
-        "invoke" : {
-          "results" : 3.3000000000000003
+    "rich" : {
+      "university_calc_Calculator" : {
+        "addDoubleWrappers" : {
+          "invoke" : {
+            "results" : 3.3000000000000003
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_doubles.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_doubles.approved.json
index 1a402e78b4..55aa93ad16 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_doubles.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_doubles.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "addDoubles" : {
-        "invoke" : {
-          "results" : 3.3000000000000003
+    "rich" : {
+      "university_calc_Calculator" : {
+        "addDoubles" : {
+          "invoke" : {
+            "results" : 3.3000000000000003
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_float_wrappers.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_float_wrappers.approved.json
index f8f3fed355..e4deb9f92d 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_float_wrappers.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_float_wrappers.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "addFloatWrappers" : {
-        "invoke" : {
-          "results" : 3.3000002
+    "rich" : {
+      "university_calc_Calculator" : {
+        "addFloatWrappers" : {
+          "invoke" : {
+            "results" : 3.3000002
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_floats.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_floats.approved.json
index eb365feb2a..4debea3886 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_floats.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_floats.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "addFloats" : {
-        "invoke" : {
-          "results" : 3.3000002
+    "rich" : {
+      "university_calc_Calculator" : {
+        "addFloats" : {
+          "invoke" : {
+            "results" : 3.3000002
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_integer_wrappers.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_integer_wrappers.approved.json
index 604d1c2f0e..3ef588b36c 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_integer_wrappers.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_integer_wrappers.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "addIntegerWrappers" : {
-        "invoke" : {
-          "results" : 3
+    "rich" : {
+      "university_calc_Calculator" : {
+        "addIntegerWrappers" : {
+          "invoke" : {
+            "results" : 3
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_integers.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_integers.approved.json
index 3461d0ca78..c1d6527036 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_integers.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_integers.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "addIntegers" : {
-        "invoke" : {
-          "results" : 3
+    "rich" : {
+      "university_calc_Calculator" : {
+        "addIntegers" : {
+          "invoke" : {
+            "results" : 3
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_and_1.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_and_1.approved.json
index 5e9ada3627..97194ca052 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_and_1.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_and_1.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "and" : {
-        "invoke" : {
-          "results" : true
+    "rich" : {
+      "university_calc_Calculator" : {
+        "and" : {
+          "invoke" : {
+            "results" : true
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_and_2.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_and_2.approved.json
index 799071f44e..559f39b3fb 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_and_2.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_and_2.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "and" : {
-        "invoke" : {
-          "results" : false
+    "rich" : {
+      "university_calc_Calculator" : {
+        "and" : {
+          "invoke" : {
+            "results" : false
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_not.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_not.approved.json
index 2e8b3bb8fb..cd5d8e76f1 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_not.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_not.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "not" : {
-        "invoke" : {
-          "results" : false
+    "rich" : {
+      "university_calc_Calculator" : {
+        "not" : {
+          "invoke" : {
+            "results" : false
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_or_1.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_or_1.approved.json
index ab51a4f743..b005b549cd 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_or_1.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_or_1.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "or" : {
-        "invoke" : {
-          "results" : true
+    "rich" : {
+      "university_calc_Calculator" : {
+        "or" : {
+          "invoke" : {
+            "results" : true
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_or_2.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_or_2.approved.json
index ab51a4f743..b005b549cd 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_or_2.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.boolean_or_2.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "or" : {
-        "invoke" : {
-          "results" : true
+    "rich" : {
+      "university_calc_Calculator" : {
+        "or" : {
+          "invoke" : {
+            "results" : true
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.concat.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.concat.approved.json
index 1091b381ed..2ed5392de6 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.concat.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.concat.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "concat" : {
-        "invoke" : {
-          "results" : "FizzBuzz"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "concat" : {
+          "invoke" : {
+            "results" : "FizzBuzz"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days.approved.json
index aa4bc7d83b..e9ec810876 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "jdk8LocalPlusDays" : {
-        "invoke" : {
-          "results" : "2024-01-28"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "jdk8LocalPlusDays" : {
+          "invoke" : {
+            "results" : "2024-01-28"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes.approved.json
index 6f17f90f9a..2a9317e49f 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "jdk8LocalPlusHoursAndMinutes" : {
-        "invoke" : {
-          "results" : "15:55:05"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "jdk8LocalPlusHoursAndMinutes" : {
+          "invoke" : {
+            "results" : "15:55:05"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes.approved.json
index 85d462926a..83d75bae6e 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "jdk8OffsetPlusDaysAndHoursAndMinutes" : {
-        "invoke" : {
-          "results" : "2024-08-15T06:20:20.000-01:00"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "jdk8OffsetPlusDaysAndHoursAndMinutes" : {
+          "invoke" : {
+            "results" : "2024-08-15T06:20:20.000-01:00"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes.approved.json
index aa1d5b97ef..f4b24d3e77 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "jdk8OffsetPlusHoursAndMinutes" : {
-        "invoke" : {
-          "results" : "06:20:20-01:00"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "jdk8OffsetPlusHoursAndMinutes" : {
+          "invoke" : {
+            "results" : "06:20:20-01:00"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes.approved.json
index 6bf04ea270..a02148b7f9 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "jdk8ZonedPlusDaysAndHoursAndMinutes" : {
-        "invoke" : {
-          "results" : "2022-04-18T10:35:10+02:00"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "jdk8ZonedPlusDaysAndHoursAndMinutes" : {
+          "invoke" : {
+            "results" : "2022-04-18T10:35:10+02:00"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days.approved.json
index 5804dd4ee3..2ae1808714 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "jodaLocalPlusDays" : {
-        "invoke" : {
-          "results" : "2024-01-28"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "jodaLocalPlusDays" : {
+          "invoke" : {
+            "results" : "2024-01-28"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes.approved.json
index d4e2649c4a..f0d6f31b8c 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "jodaLocalPlusHoursAndMinutes" : {
-        "invoke" : {
-          "results" : "15:55:05.000"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "jodaLocalPlusHoursAndMinutes" : {
+          "invoke" : {
+            "results" : "15:55:05.000"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days.approved.json
index 5804dd4ee3..2ae1808714 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "jodaLocalPlusDays" : {
-        "invoke" : {
-          "results" : "2024-01-28"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "jodaLocalPlusDays" : {
+          "invoke" : {
+            "results" : "2024-01-28"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.next_month.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.next_month.approved.json
index f17405c307..c921223fab 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.next_month.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.next_month.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "nextMonth" : {
-        "invoke" : {
-          "results" : "JULY"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "nextMonth" : {
+          "invoke" : {
+            "results" : "JULY"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat.approved.json
index ef631f4ec9..f881e49802 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat.approved.json
@@ -1,16 +1,18 @@
 {
   "data" : {
-    "Scenario" : {
-      "Name" : "Fizz and buzz are concatenated together",
-      "When" : {
-        "university_calc_Calculator" : {
-          "concat" : {
-            "invoke" : {
-              "args" : {
-                "prefix" : "Fizz",
-                "suffix" : "Buzz"
-              },
-              "results" : "FizzBuzz"
+    "rich" : {
+      "Scenario" : {
+        "Name" : "Fizz and buzz are concatenated together",
+        "When" : {
+          "university_calc_Calculator" : {
+            "concat" : {
+              "invoke" : {
+                "args" : {
+                  "prefix" : "Fizz",
+                  "suffix" : "Buzz"
+                },
+                "results" : "FizzBuzz"
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale.approved.json
index 4de979a6fc..7ff2e97cc7 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "someLocale" : {
-        "invoke" : {
-          "results" : "en_GB"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "someLocale" : {
+          "invoke" : {
+            "results" : "en_GB"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url.approved.json
index 5af329f8cd..894d36e3d2 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "someUrl" : {
-        "invoke" : {
-          "results" : "https://causeway.apache.org";
+    "rich" : {
+      "university_calc_Calculator" : {
+        "someUrl" : {
+          "invoke" : {
+            "results" : "https://causeway.apache.org";
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid.approved.json
index c80cd6cfdd..272ac56ae5 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid.approved.json
@@ -1,9 +1,11 @@
 {
   "data" : {
-    "university_calc_Calculator" : {
-      "someUuid" : {
-        "invoke" : {
-          "results" : "91be0d2d-1752-4962-ad2c-89a7ef73a656"
+    "rich" : {
+      "university_calc_Calculator" : {
+        "someUuid" : {
+          "invoke" : {
+            "results" : "91be0d2d-1752-4962-ad2c-89a7ef73a656"
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.java
index ad95af5cfd..a6d493b422 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.java
@@ -48,34 +48,12 @@ import 
org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
 //NOT USING @Transactional since we are running server within same transaction 
otherwise
 @Order(30)
 @ActiveProfiles("test")
-public class Calculator_IntegTest extends Abstract_IntegTest {
+public class Calculator_IntegTest extends AbstractDynamic_IntegTest {
 
+    @Override
     @TestFactory
     Iterable<DynamicTest> each() throws IOException, URISyntaxException {
-
-        val integClassName = getClass().getSimpleName();
-        val classUrl = getClass().getResource(integClassName + ".class");
-        Path classPath = Paths.get(classUrl.toURI());
-        Path directoryPath = classPath.getParent();
-
-        return Files.walk(directoryPath)
-                .filter(Files::isRegularFile)
-                .filter(file -> {
-                    String fileName = file.getFileName().toString();
-                    return fileName.startsWith(integClassName) && 
fileName.endsWith("._.gql");
-                })
-                .map(file -> {
-                    String fileName = file.getFileName().toString();
-                    String testName = 
fileName.substring(integClassName.length() + 
".each.".length()).replace("._.gql", "");
-                    return JupiterApprovals.dynamicTest(
-                            testName,
-                            options -> {
-                                Approvals.verify(submitFileNamed(fileName), 
jsonOptions(options));
-                                afterEach();
-                                beforeEach();
-                            });
-                })
-                .collect(Collectors.toList());
+        return super.each();
     }
 
 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DepartmentMutating_IntegTest.change_department_name_visibility.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DepartmentMutating_IntegTest.change_department_name_visibility.approved.json
deleted file mode 100644
index e9d6798864..0000000000
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DepartmentMutating_IntegTest.change_department_name_visibility.approved.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "data" : {
-    "university_dept_Department" : {
-      "changeName" : {
-        "hidden" : false
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.create_department.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.create_department.approved.json
index 317b1e221a..ee38b9d7d5 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.create_department.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.create_department.approved.json
@@ -1,13 +1,15 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "createDepartment" : {
-        "hidden" : false,
-        "disabled" : null,
-        "invokeNonIdempotent" : {
-          "results" : {
-            "name" : {
-              "get" : "newbie"
+    "rich" : {
+      "university_dept_Departments" : {
+        "createDepartment" : {
+          "hidden" : false,
+          "disabled" : null,
+          "invokeNonIdempotent" : {
+            "results" : {
+              "name" : {
+                "get" : "newbie"
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.create_department_name_param_disabled.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.create_department_name_param_disabled.approved.json
index af070b83c0..ee01e6e6ea 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.create_department_name_param_disabled.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.create_department_name_param_disabled.approved.json
@@ -1,16 +1,18 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "createDepartment" : {
-        "params" : {
-          "name" : {
-            "disabled" : null
-          }
-        },
-        "invokeNonIdempotent" : {
-          "results" : {
+    "rich" : {
+      "university_dept_Departments" : {
+        "createDepartment" : {
+          "params" : {
             "name" : {
-              "get" : "newbie"
+              "disabled" : null
+            }
+          },
+          "invokeNonIdempotent" : {
+            "results" : {
+              "name" : {
+                "get" : "newbie"
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_all_departments.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_all_departments.approved.json
index 5b2b98c923..f5824e7f08 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_all_departments.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_all_departments.approved.json
@@ -1,63 +1,65 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "findAllDepartments" : {
-        "invoke" : {
-          "results" : [ {
-            "name" : {
-              "get" : "Civil Engineering",
-              "datatype" : "java_lang_String"
-            },
-            "_meta" : {
-              "logicalTypeName" : "university.dept.Department",
-              "version" : null
-            }
-          }, {
-            "name" : {
-              "get" : "Classics",
-              "datatype" : "java_lang_String"
-            },
-            "_meta" : {
-              "logicalTypeName" : "university.dept.Department",
-              "version" : null
-            }
-          }, {
-            "name" : {
-              "get" : "Mathematics",
-              "datatype" : "java_lang_String"
-            },
-            "_meta" : {
-              "logicalTypeName" : "university.dept.Department",
-              "version" : null
-            }
-          }, {
-            "name" : {
-              "get" : "Pathology",
-              "datatype" : "java_lang_String"
-            },
-            "_meta" : {
-              "logicalTypeName" : "university.dept.Department",
-              "version" : null
-            }
-          }, {
-            "name" : {
-              "get" : "Physics",
-              "datatype" : "java_lang_String"
-            },
-            "_meta" : {
-              "logicalTypeName" : "university.dept.Department",
-              "version" : null
-            }
-          }, {
-            "name" : {
-              "get" : "Textiles",
-              "datatype" : "java_lang_String"
-            },
-            "_meta" : {
-              "logicalTypeName" : "university.dept.Department",
-              "version" : null
-            }
-          } ]
+    "rich" : {
+      "university_dept_Departments" : {
+        "findAllDepartments" : {
+          "invoke" : {
+            "results" : [ {
+              "name" : {
+                "get" : "Civil Engineering",
+                "datatype" : "java_lang_String"
+              },
+              "_meta" : {
+                "logicalTypeName" : "university.dept.Department",
+                "version" : null
+              }
+            }, {
+              "name" : {
+                "get" : "Classics",
+                "datatype" : "java_lang_String"
+              },
+              "_meta" : {
+                "logicalTypeName" : "university.dept.Department",
+                "version" : null
+              }
+            }, {
+              "name" : {
+                "get" : "Mathematics",
+                "datatype" : "java_lang_String"
+              },
+              "_meta" : {
+                "logicalTypeName" : "university.dept.Department",
+                "version" : null
+              }
+            }, {
+              "name" : {
+                "get" : "Pathology",
+                "datatype" : "java_lang_String"
+              },
+              "_meta" : {
+                "logicalTypeName" : "university.dept.Department",
+                "version" : null
+              }
+            }, {
+              "name" : {
+                "get" : "Physics",
+                "datatype" : "java_lang_String"
+              },
+              "_meta" : {
+                "logicalTypeName" : "university.dept.Department",
+                "version" : null
+              }
+            }, {
+              "name" : {
+                "get" : "Textiles",
+                "datatype" : "java_lang_String"
+              },
+              "_meta" : {
+                "logicalTypeName" : "university.dept.Department",
+                "version" : null
+              }
+            } ]
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_member_choices.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_member_choices.approved.json
index d3102c75e9..69b54431e4 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_member_choices.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_member_choices.approved.json
@@ -1,48 +1,50 @@
 {
   "data" : {
-    "Scenario" : {
-      "Given" : {
-        "university_dept_Departments" : {
-          "findDepartmentByName" : {
-            "invoke" : {
-              "results" : {
-                "addStaffMembers" : {
-                  "params" : {
-                    "staffMembers" : {
-                      "choices" : [ {
-                        "_meta" : {
-                          "saveAs" : "staff-member-choices"
-                        },
-                        "name" : {
-                          "get" : "John Gartner"
-                        }
-                      }, {
-                        "_meta" : {
-                          "saveAs" : "staff-member-choices"
-                        },
-                        "name" : {
-                          "get" : "Margaret Randall"
-                        }
-                      }, {
-                        "_meta" : {
-                          "saveAs" : "staff-member-choices"
-                        },
-                        "name" : {
-                          "get" : "Mervin Hughes"
-                        }
-                      } ]
+    "rich" : {
+      "Scenario" : {
+        "Given" : {
+          "university_dept_Departments" : {
+            "findDepartmentByName" : {
+              "invoke" : {
+                "results" : {
+                  "addStaffMembers" : {
+                    "params" : {
+                      "staffMembers" : {
+                        "choices" : [ {
+                          "_meta" : {
+                            "saveAs" : "staff-member-choices"
+                          },
+                          "name" : {
+                            "get" : "John Gartner"
+                          }
+                        }, {
+                          "_meta" : {
+                            "saveAs" : "staff-member-choices"
+                          },
+                          "name" : {
+                            "get" : "Margaret Randall"
+                          }
+                        }, {
+                          "_meta" : {
+                            "saveAs" : "staff-member-choices"
+                          },
+                          "name" : {
+                            "get" : "Mervin Hughes"
+                          }
+                        } ]
+                      }
                     }
                   }
                 }
               }
             }
           }
-        }
-      },
-      "Then" : {
-        "university_dept_StaffMember" : {
-          "name" : {
-            "get" : "Margaret Randall"
+        },
+        "Then" : {
+          "university_dept_StaffMember" : {
+            "name" : {
+              "get" : "Margaret Randall"
+            }
           }
         }
       }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members.approved.json
index d9064a0984..803db342fa 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members.approved.json
@@ -1,122 +1,124 @@
 {
   "data" : {
-    "Scenario" : {
-      "Name" : "can add staff members",
-      "Given" : {
-        "university_dept_Departments" : {
-          "findDepartmentByName" : {
-            "invoke" : {
-              "args" : {
-                "name" : "Classics"
-              },
-              "results" : {
-                "staffMembers" : {
-                  "get" : [ {
-                    "name" : {
-                      "get" : "Gerry Jones"
-                    }
-                  }, {
-                    "name" : {
-                      "get" : "Letitia Leadbetter"
-                    }
-                  } ]
+    "rich" : {
+      "Scenario" : {
+        "Name" : "can add staff members",
+        "Given" : {
+          "university_dept_Departments" : {
+            "findDepartmentByName" : {
+              "invoke" : {
+                "args" : {
+                  "name" : "Classics"
+                },
+                "results" : {
+                  "staffMembers" : {
+                    "get" : [ {
+                      "name" : {
+                        "get" : "Gerry Jones"
+                      }
+                    }, {
+                      "name" : {
+                        "get" : "Letitia Leadbetter"
+                      }
+                    } ]
+                  }
                 }
               }
             }
           }
-        }
-      },
-      "When" : {
-        "university_dept_Departments" : {
-          "findDepartmentByName" : {
-            "invoke" : {
-              "results" : {
-                "addStaffMembers" : {
-                  "params" : {
-                    "staffMembers" : {
-                      "datatype" : "university_dept_StaffMember",
-                      "choices" : [ {
-                        "_meta" : {
-                          "saveAs" : "staff-member"
-                        },
-                        "name" : {
-                          "get" : "John Gartner"
-                        }
-                      }, {
-                        "_meta" : {
-                          "saveAs" : "staff-member"
-                        },
-                        "name" : {
-                          "get" : "Margaret Randall"
-                        }
-                      }, {
-                        "_meta" : {
-                          "saveAs" : "staff-member"
-                        },
-                        "name" : {
-                          "get" : "Mervin Hughes"
-                        }
-                      } ]
-                    }
-                  },
-                  "invokeIdempotent" : {
-                    "results" : {
-                      "name" : {
-                        "get" : "Classics"
-                      },
+        },
+        "When" : {
+          "university_dept_Departments" : {
+            "findDepartmentByName" : {
+              "invoke" : {
+                "results" : {
+                  "addStaffMembers" : {
+                    "params" : {
                       "staffMembers" : {
-                        "get" : [ {
-                          "name" : {
-                            "get" : "Gerry Jones"
-                          }
-                        }, {
+                        "datatype" : "university_dept_StaffMember",
+                        "choices" : [ {
+                          "_meta" : {
+                            "saveAs" : "staff-member"
+                          },
                           "name" : {
                             "get" : "John Gartner"
                           }
                         }, {
+                          "_meta" : {
+                            "saveAs" : "staff-member"
+                          },
                           "name" : {
-                            "get" : "Letitia Leadbetter"
+                            "get" : "Margaret Randall"
                           }
                         }, {
+                          "_meta" : {
+                            "saveAs" : "staff-member"
+                          },
                           "name" : {
-                            "get" : "Margaret Randall"
+                            "get" : "Mervin Hughes"
                           }
                         } ]
                       }
+                    },
+                    "invokeIdempotent" : {
+                      "results" : {
+                        "name" : {
+                          "get" : "Classics"
+                        },
+                        "staffMembers" : {
+                          "get" : [ {
+                            "name" : {
+                              "get" : "Gerry Jones"
+                            }
+                          }, {
+                            "name" : {
+                              "get" : "John Gartner"
+                            }
+                          }, {
+                            "name" : {
+                              "get" : "Letitia Leadbetter"
+                            }
+                          }, {
+                            "name" : {
+                              "get" : "Margaret Randall"
+                            }
+                          } ]
+                        }
+                      }
                     }
                   }
                 }
               }
             }
           }
-        }
-      },
-      "Then" : {
-        "university_dept_Departments" : {
-          "findDepartmentByName" : {
-            "invoke" : {
-              "args" : {
-                "name" : "Classics"
-              },
-              "results" : {
-                "staffMembers" : {
-                  "get" : [ {
-                    "name" : {
-                      "get" : "Gerry Jones"
-                    }
-                  }, {
-                    "name" : {
-                      "get" : "John Gartner"
-                    }
-                  }, {
-                    "name" : {
-                      "get" : "Letitia Leadbetter"
-                    }
-                  }, {
-                    "name" : {
-                      "get" : "Margaret Randall"
-                    }
-                  } ]
+        },
+        "Then" : {
+          "university_dept_Departments" : {
+            "findDepartmentByName" : {
+              "invoke" : {
+                "args" : {
+                  "name" : "Classics"
+                },
+                "results" : {
+                  "staffMembers" : {
+                    "get" : [ {
+                      "name" : {
+                        "get" : "Gerry Jones"
+                      }
+                    }, {
+                      "name" : {
+                        "get" : "John Gartner"
+                      }
+                    }, {
+                      "name" : {
+                        "get" : "Letitia Leadbetter"
+                      }
+                    }, {
+                      "name" : {
+                        "get" : "Margaret Randall"
+                      }
+                    } ]
+                  }
                 }
               }
             }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_head_autocomplete.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_head_autocomplete.approved.json
index bb28e71dd4..e886328594 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_head_autocomplete.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_head_autocomplete.approved.json
@@ -1,22 +1,24 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "findDepartmentByName" : {
-        "invoke" : {
-          "results" : {
-            "changeDeptHead" : {
-              "params" : {
-                "newDeptHead" : {
-                  "datatype" : "university_dept_DeptHead",
-                  "autoComplete" : [ {
-                    "name" : {
-                      "get" : "Dr. Susan Hopwood"
-                    }
-                  }, {
-                    "name" : {
-                      "get" : "Prof. Dicky Horwich"
-                    }
-                  } ]
+    "rich" : {
+      "university_dept_Departments" : {
+        "findDepartmentByName" : {
+          "invoke" : {
+            "results" : {
+              "changeDeptHead" : {
+                "params" : {
+                  "newDeptHead" : {
+                    "datatype" : "university_dept_DeptHead",
+                    "autoComplete" : [ {
+                      "name" : {
+                        "get" : "Dr. Susan Hopwood"
+                      }
+                    }, {
+                      "name" : {
+                        "get" : "Prof. Dicky Horwich"
+                      }
+                    } ]
+                  }
                 }
               }
             }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_head_default.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_head_default.approved.json
index c9ba4c4ea5..144e099b50 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_head_default.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_head_default.approved.json
@@ -1,15 +1,17 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "findDepartmentByName" : {
-        "invoke" : {
-          "results" : {
-            "changeDeptHead" : {
-              "params" : {
-                "newDeptHead" : {
-                  "default" : {
-                    "name" : {
-                      "get" : "Dr. Barney Jones"
+    "rich" : {
+      "university_dept_Departments" : {
+        "findDepartmentByName" : {
+          "invoke" : {
+            "results" : {
+              "changeDeptHead" : {
+                "params" : {
+                  "newDeptHead" : {
+                    "default" : {
+                      "name" : {
+                        "get" : "Dr. Barney Jones"
+                      }
                     }
                   }
                 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_name_invalid.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_name_invalid.approved.json
index 6674e52dbb..dfb22ee804 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_name_invalid.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_change_name_invalid.approved.json
@@ -1,16 +1,18 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "findDepartmentByName" : {
-        "invoke" : {
-          "results" : {
-            "changeName" : {
-              "params" : {
-                "newName" : {
-                  "datatype" : "java_lang_String"
-                }
-              },
-              "validate" : "Name cannot contain '!' character"
+    "rich" : {
+      "university_dept_Departments" : {
+        "findDepartmentByName" : {
+          "invoke" : {
+            "results" : {
+              "changeName" : {
+                "params" : {
+                  "newName" : {
+                    "datatype" : "java_lang_String"
+                  }
+                },
+                "validate" : "Name cannot contain '!' character"
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_edit_head_autocomplete.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_edit_head_autocomplete.approved.json
index ac2dbb9eed..aa2c7df61c 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_edit_head_autocomplete.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_edit_head_autocomplete.approved.json
@@ -1,19 +1,21 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "findDepartmentByName" : {
-        "invoke" : {
-          "results" : {
-            "deptHead" : {
-              "autoComplete" : [ {
-                "name" : {
-                  "get" : "Dr. Susan Hopwood"
-                }
-              }, {
-                "name" : {
-                  "get" : "Prof. Dicky Horwich"
-                }
-              } ]
+    "rich" : {
+      "university_dept_Departments" : {
+        "findDepartmentByName" : {
+          "invoke" : {
+            "results" : {
+              "deptHead" : {
+                "autoComplete" : [ {
+                  "name" : {
+                    "get" : "Dr. Susan Hopwood"
+                  }
+                }, {
+                  "name" : {
+                    "get" : "Prof. Dicky Horwich"
+                  }
+                } ]
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_edit_head_autocomplete_none_matching.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_edit_head_autocomplete_none_matching.approved.json
index 9b0a3fdfb3..5cbd65bca7 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_edit_head_autocomplete_none_matching.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_edit_head_autocomplete_none_matching.approved.json
@@ -1,11 +1,13 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "findDepartmentByName" : {
-        "invoke" : {
-          "results" : {
-            "deptHead" : {
-              "autoComplete" : [ ]
+    "rich" : {
+      "university_dept_Departments" : {
+        "findDepartmentByName" : {
+          "invoke" : {
+            "results" : {
+              "deptHead" : {
+                "autoComplete" : [ ]
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_list_its_staff.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_list_its_staff.approved.json
index 0cbd09f742..9f4720e0cb 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_list_its_staff.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_list_its_staff.approved.json
@@ -1,23 +1,25 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "findDepartmentByName" : {
-        "invoke" : {
-          "results" : {
-            "name" : {
-              "get" : "Classics"
-            },
-            "staffMembers" : {
-              "datatype" : "university_dept_StaffMember",
-              "get" : [ {
-                "name" : {
-                  "get" : "Gerry Jones"
-                }
-              }, {
-                "name" : {
-                  "get" : "Letitia Leadbetter"
-                }
-              } ]
+    "rich" : {
+      "university_dept_Departments" : {
+        "findDepartmentByName" : {
+          "invoke" : {
+            "results" : {
+              "name" : {
+                "get" : "Classics"
+              },
+              "staffMembers" : {
+                "datatype" : "university_dept_StaffMember",
+                "get" : [ {
+                  "name" : {
+                    "get" : "Gerry Jones"
+                  }
+                }, {
+                  "name" : {
+                    "get" : "Letitia Leadbetter"
+                  }
+                } ]
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_remove_staff_member_choices.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_remove_staff_member_choices.approved.json
index 20f8e25b32..f5985faea7 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_remove_staff_member_choices.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_remove_staff_member_choices.approved.json
@@ -1,21 +1,23 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "findDepartmentByName" : {
-        "invoke" : {
-          "results" : {
-            "removeStaffMember" : {
-              "params" : {
-                "staffMember" : {
-                  "choices" : [ {
-                    "name" : {
-                      "get" : "Gerry Jones"
-                    }
-                  }, {
-                    "name" : {
-                      "get" : "Letitia Leadbetter"
-                    }
-                  } ]
+    "rich" : {
+      "university_dept_Departments" : {
+        "findDepartmentByName" : {
+          "invoke" : {
+            "results" : {
+              "removeStaffMember" : {
+                "params" : {
+                  "staffMember" : {
+                    "choices" : [ {
+                      "name" : {
+                        "get" : "Gerry Jones"
+                      }
+                    }, {
+                      "name" : {
+                        "get" : "Letitia Leadbetter"
+                      }
+                    } ]
+                  }
                 }
               }
             }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_by_name.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_by_name.approved.json
index fe6728e3a4..4841c9e033 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_by_name.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_by_name.approved.json
@@ -1,19 +1,21 @@
 {
   "data" : {
-    "university_dept_Departments" : {
-      "findDepartmentByName" : {
-        "invoke" : {
-          "results" : {
-            "staffMembers" : {
-              "get" : [ {
-                "name" : {
-                  "get" : "Gerry Jones"
-                }
-              }, {
-                "name" : {
-                  "get" : "Letitia Leadbetter"
-                }
-              } ]
+    "rich" : {
+      "university_dept_Departments" : {
+        "findDepartmentByName" : {
+          "invoke" : {
+            "results" : {
+              "staffMembers" : {
+                "get" : [ {
+                  "name" : {
+                    "get" : "Gerry Jones"
+                  }
+                }, {
+                  "name" : {
+                    "get" : "Letitia Leadbetter"
+                  }
+                } ]
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name.approved.json
index 7e7ce09746..98d2aca134 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name.approved.json
@@ -1,33 +1,35 @@
 {
   "data" : {
-    "Scenario" : {
-      "Name" : "Find department and change its name",
-      "Given" : {
-        "university_dept_Departments" : {
-          "findDepartmentByName" : {
-            "invoke" : {
-              "args" : {
-                "name" : "Classics"
-              },
-              "results" : {
-                "_meta" : {
-                  "saveAs" : "classics_dept"
+    "rich" : {
+      "Scenario" : {
+        "Name" : "Find department and change its name",
+        "Given" : {
+          "university_dept_Departments" : {
+            "findDepartmentByName" : {
+              "invoke" : {
+                "args" : {
+                  "name" : "Classics"
+                },
+                "results" : {
+                  "_meta" : {
+                    "saveAs" : "classics_dept"
+                  }
                 }
               }
             }
           }
-        }
-      },
-      "When" : {
-        "university_dept_Department" : {
-          "changeName" : {
-            "invokeIdempotent" : {
-              "args" : {
-                "newName" : "Ancient History"
-              },
-              "results" : {
-                "name" : {
-                  "get" : "Ancient History"
+        },
+        "When" : {
+          "university_dept_Department" : {
+            "changeName" : {
+              "invokeIdempotent" : {
+                "args" : {
+                  "newName" : "Ancient History"
+                },
+                "results" : {
+                  "name" : {
+                    "get" : "Ancient History"
+                  }
                 }
               }
             }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.java
index 32e9e571c1..76e7b850d5 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.java
@@ -51,34 +51,13 @@ import lombok.val;
 //NOT USING @Transactional since we are running server within same transaction 
otherwise
 @Order(40)
 @ActiveProfiles("test")
-public class Department_IntegTest extends Abstract_IntegTest {
+public class Department_IntegTest extends AbstractDynamic_IntegTest {
 
+    @Override
     @TestFactory
     Iterable<DynamicTest> each() throws IOException, URISyntaxException {
-
-        val integClassName = getClass().getSimpleName();
-        val classUrl = getClass().getResource(integClassName + ".class");
-        Path classPath = Paths.get(classUrl.toURI());
-        Path directoryPath = classPath.getParent();
-
-        return Files.walk(directoryPath)
-                .filter(Files::isRegularFile)
-                .filter(file -> {
-                    String fileName = file.getFileName().toString();
-                    return fileName.startsWith(integClassName) && 
fileName.endsWith("._.gql");
-                })
-                .map(file -> {
-                    String fileName = file.getFileName().toString();
-                    String testName = 
fileName.substring(integClassName.length() + 
".each.".length()).replace("._.gql", "");
-                    return JupiterApprovals.dynamicTest(
-                            testName,
-                            options -> {
-                                Approvals.verify(submitFileNamed(fileName), 
jsonOptions(options));
-                                afterEach();
-                                beforeEach();
-                            });
-                })
-                .collect(Collectors.toList());
+        return super.each();
     }
 
+
 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_and_change_name_invalid.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_and_change_name_invalid.approved.json
index 5335faf43b..c671b7726c 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_and_change_name_invalid.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_and_change_name_invalid.approved.json
@@ -1,11 +1,13 @@
 {
   "data" : {
-    "university_dept_DeptHeads" : {
-      "findHeadByName" : {
-        "invoke" : {
-          "results" : {
-            "changeName" : {
-              "validate" : "Name cannot contain '!' character"
+    "rich" : {
+      "university_dept_DeptHeads" : {
+        "findHeadByName" : {
+          "invoke" : {
+            "results" : {
+              "changeName" : {
+                "validate" : "Name cannot contain '!' character"
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_and_change_name_invoke_invalid.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_and_change_name_invoke_invalid.approved.json
index 5cd9f85042..426f06b6b8 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_and_change_name_invoke_invalid.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_and_change_name_invoke_invalid.approved.json
@@ -1,23 +1,25 @@
 {
   "errors" : [ {
-    "message" : "Exception while fetching data 
(/university_dept_DeptHeads/findHeadByName/invoke/results/changeName/invokeIdempotent/results)
 : Name cannot contain '!' character",
+    "message" : "Exception while fetching data 
(/rich/university_dept_DeptHeads/findHeadByName/invoke/results/changeName/invokeIdempotent/results)
 : Name cannot contain '!' character",
     "locations" : [ {
-      "line" : 8,
-      "column" : 15
+      "line" : 9,
+      "column" : 17
     } ],
-    "path" : [ "university_dept_DeptHeads", "findHeadByName", "invoke", 
"results", "changeName", "invokeIdempotent", "results" ],
+    "path" : [ "rich", "university_dept_DeptHeads", "findHeadByName", 
"invoke", "results", "changeName", "invokeIdempotent", "results" ],
     "extensions" : {
       "classification" : "DataFetchingException"
     }
   } ],
   "data" : {
-    "university_dept_DeptHeads" : {
-      "findHeadByName" : {
-        "invoke" : {
-          "results" : {
-            "changeName" : {
-              "invokeIdempotent" : {
-                "results" : null
+    "rich" : {
+      "university_dept_DeptHeads" : {
+        "findHeadByName" : {
+          "invoke" : {
+            "results" : {
+              "changeName" : {
+                "invokeIdempotent" : {
+                  "results" : null
+                }
               }
             }
           }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_by_name.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_by_name.approved.json
index 61efe6474e..5a22aa6d16 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_by_name.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.each.find_depthead_by_name.approved.json
@@ -1,16 +1,18 @@
 {
   "data" : {
-    "university_dept_DeptHeads" : {
-      "findHeadByName" : {
-        "invoke" : {
-          "results" : {
-            "name" : {
-              "get" : "Dr. Barney Jones"
-            },
-            "department" : {
-              "get" : {
-                "name" : {
-                  "get" : "Classics"
+    "rich" : {
+      "university_dept_DeptHeads" : {
+        "findHeadByName" : {
+          "invoke" : {
+            "results" : {
+              "name" : {
+                "get" : "Dr. Barney Jones"
+              },
+              "department" : {
+                "get" : {
+                  "name" : {
+                    "get" : "Classics"
+                  }
                 }
               }
             }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.java
index b8a8952515..05783aae26 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.java
@@ -49,34 +49,12 @@ import 
org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
 //NOT USING @Transactional since we are running server within same transaction 
otherwise
 @Order(50)
 @ActiveProfiles("test")
-public class DeptHead_IntegTest extends Abstract_IntegTest {
+public class DeptHead_IntegTest extends AbstractDynamic_IntegTest {
 
+    @Override
     @TestFactory
     Iterable<DynamicTest> each() throws IOException, URISyntaxException {
-
-        val integClassName = getClass().getSimpleName();
-        val classUrl = getClass().getResource(integClassName + ".class");
-        Path classPath = Paths.get(classUrl.toURI());
-        Path directoryPath = classPath.getParent();
-
-        return Files.walk(directoryPath)
-                .filter(Files::isRegularFile)
-                .filter(file -> {
-                    String fileName = file.getFileName().toString();
-                    return fileName.startsWith(integClassName) && 
fileName.endsWith("._.gql");
-                })
-                .map(file -> {
-                    String fileName = file.getFileName().toString();
-                    String testName = 
fileName.substring(integClassName.length() + 
".each.".length()).replace("._.gql", "");
-                    return JupiterApprovals.dynamicTest(
-                            testName,
-                            options -> {
-                                Approvals.verify(submitFileNamed(fileName), 
jsonOptions(options));
-                                afterEach();
-                                beforeEach();
-                            });
-                })
-                .collect(Collectors.toList());
+        return super.each();
     }
 
 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/People_IntegTest.each.find_person.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/People_IntegTest.each.find_person.approved.json
index 1079e5c78d..dc3871143c 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/People_IntegTest.each.find_person.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/People_IntegTest.each.find_person.approved.json
@@ -1,30 +1,32 @@
 {
   "data" : {
-    "Scenario" : {
-      "Name" : "DeptHead is also a Person",
-      "Given" : {
-        "university_dept_People" : {
-          "findNamed" : {
-            "invoke" : {
-              "args" : {
-                "name" : "Dr. Helen Johansen"
-              },
-              "results" : {
-                "name" : {
-                  "get" : "Dr. Helen Johansen"
+    "rich" : {
+      "Scenario" : {
+        "Name" : "DeptHead is also a Person",
+        "Given" : {
+          "university_dept_People" : {
+            "findNamed" : {
+              "invoke" : {
+                "args" : {
+                  "name" : "Dr. Helen Johansen"
                 },
-                "_meta" : {
-                  "saveAs" : "dept-head"
+                "results" : {
+                  "name" : {
+                    "get" : "Dr. Helen Johansen"
+                  },
+                  "_meta" : {
+                    "saveAs" : "dept-head"
+                  }
                 }
               }
             }
           }
-        }
-      },
-      "When" : {
-        "university_dept_Person" : {
-          "name" : {
-            "get" : "Dr. Helen Johansen"
+        },
+        "When" : {
+          "university_dept_Person" : {
+            "name" : {
+              "get" : "Dr. Helen Johansen"
+            }
           }
         }
       }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/People_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/People_IntegTest.java
index f5b031bc83..2e076dd0cc 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/People_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/People_IntegTest.java
@@ -39,34 +39,12 @@ import lombok.val;
 //NOT USING @Transactional since we are running server within same transaction 
otherwise
 @Order(50)
 @ActiveProfiles("test")
-public class People_IntegTest extends Abstract_IntegTest {
+public class People_IntegTest extends AbstractDynamic_IntegTest {
 
+    @Override
     @TestFactory
     Iterable<DynamicTest> each() throws IOException, URISyntaxException {
-
-        val integClassName = getClass().getSimpleName();
-        val classUrl = getClass().getResource(integClassName + ".class");
-        Path classPath = Paths.get(classUrl.toURI());
-        Path directoryPath = classPath.getParent();
-
-        return Files.walk(directoryPath)
-                .filter(Files::isRegularFile)
-                .filter(file -> {
-                    String fileName = file.getFileName().toString();
-                    return fileName.startsWith(integClassName) && 
fileName.endsWith("._.gql");
-                })
-                .map(file -> {
-                    String fileName = file.getFileName().toString();
-                    String testName = 
fileName.substring(integClassName.length() + 
".each.".length()).replace("._.gql", "");
-                    return JupiterApprovals.dynamicTest(
-                            testName,
-                            options -> {
-                                Approvals.verify(submitFileNamed(fileName), 
jsonOptions(options));
-                                afterEach();
-                                beforeEach();
-                            });
-                })
-                .collect(Collectors.toList());
+        return super.each();
     }
 
 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_dept_head_using_id.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_dept_head_using_id.approved.json
index 7bb8f1b44e..c72e0ca379 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_dept_head_using_id.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_dept_head_using_id.approved.json
@@ -1,23 +1,25 @@
 {
   "errors" : [ {
-    "message" : "Exception while fetching data 
(/Scenario/When/university_dept_People/nameOf/invoke/results) : The 
'logicalTypeName' is required along with the 'id', because the input type 
'university.dept.Person' is abstract",
+    "message" : "Exception while fetching data 
(/rich/Scenario/When/university_dept_People/nameOf/invoke/results) : The 
'logicalTypeName' is required along with the 'id', because the input type 
'university.dept.Person' is abstract",
     "locations" : [ {
-      "line" : 8,
-      "column" : 13
+      "line" : 9,
+      "column" : 15
     } ],
-    "path" : [ "Scenario", "When", "university_dept_People", "nameOf", 
"invoke", "results" ],
+    "path" : [ "rich", "Scenario", "When", "university_dept_People", "nameOf", 
"invoke", "results" ],
     "extensions" : {
       "classification" : "DataFetchingException"
     }
   } ],
   "data" : {
-    "Scenario" : {
-      "Name" : "Obtain name of person but forget to specify the 
logicalTypeName",
-      "When" : {
-        "university_dept_People" : {
-          "nameOf" : {
-            "invoke" : {
-              "results" : null
+    "rich" : {
+      "Scenario" : {
+        "Name" : "Obtain name of person but forget to specify the 
logicalTypeName",
+        "When" : {
+          "university_dept_People" : {
+            "nameOf" : {
+              "invoke" : {
+                "results" : null
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_dept_head_using_ref.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_dept_head_using_ref.approved.json
index 2ac1a93c81..283b032ab0 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_dept_head_using_ref.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_dept_head_using_ref.approved.json
@@ -1,31 +1,33 @@
 {
   "data" : {
-    "Scenario" : {
-      "Name" : "Obtain name of person that's a DeptHead",
-      "Given" : {
-        "university_dept_DeptHeads" : {
-          "findHeadByName" : {
-            "invoke" : {
-              "args" : {
-                "name" : "Dr. Helen Johansen"
-              },
-              "results" : {
-                "name" : {
-                  "get" : "Dr. Helen Johansen"
+    "rich" : {
+      "Scenario" : {
+        "Name" : "Obtain name of person that's a DeptHead",
+        "Given" : {
+          "university_dept_DeptHeads" : {
+            "findHeadByName" : {
+              "invoke" : {
+                "args" : {
+                  "name" : "Dr. Helen Johansen"
                 },
-                "_meta" : {
-                  "saveAs" : "dept-head"
+                "results" : {
+                  "name" : {
+                    "get" : "Dr. Helen Johansen"
+                  },
+                  "_meta" : {
+                    "saveAs" : "dept-head"
+                  }
                 }
               }
             }
           }
-        }
-      },
-      "When" : {
-        "university_dept_People" : {
-          "nameOf" : {
-            "invoke" : {
-              "results" : "Dr. Helen Johansen"
+        },
+        "When" : {
+          "university_dept_People" : {
+            "nameOf" : {
+              "invoke" : {
+                "results" : "Dr. Helen Johansen"
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_staff_member_using_invalid_id.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_staff_member_using_invalid_id.approved.json
index b8b5fe2be9..6af5558f81 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_staff_member_using_invalid_id.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_staff_member_using_invalid_id.approved.json
@@ -1,23 +1,25 @@
 {
   "errors" : [ {
-    "message" : "Exception while fetching data 
(/Scenario/When/university_dept_People/nameOf/invoke/results) : 'Person' is 
mandatory",
+    "message" : "Exception while fetching data 
(/rich/Scenario/When/university_dept_People/nameOf/invoke/results) : 'Person' 
is mandatory",
     "locations" : [ {
-      "line" : 8,
-      "column" : 13
+      "line" : 9,
+      "column" : 15
     } ],
-    "path" : [ "Scenario", "When", "university_dept_People", "nameOf", 
"invoke", "results" ],
+    "path" : [ "rich", "Scenario", "When", "university_dept_People", "nameOf", 
"invoke", "results" ],
     "extensions" : {
       "classification" : "DataFetchingException"
     }
   } ],
   "data" : {
-    "Scenario" : {
-      "Name" : "Obtain name of person that's a non-existent StaffMember",
-      "When" : {
-        "university_dept_People" : {
-          "nameOf" : {
-            "invoke" : {
-              "results" : null
+    "rich" : {
+      "Scenario" : {
+        "Name" : "Obtain name of person that's a non-existent StaffMember",
+        "When" : {
+          "university_dept_People" : {
+            "nameOf" : {
+              "invoke" : {
+                "results" : null
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_staff_member_using_ref.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_staff_member_using_ref.approved.json
index d189aa83bb..677fcb6035 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_staff_member_using_ref.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.each.name_of_when_staff_member_using_ref.approved.json
@@ -1,31 +1,33 @@
 {
   "data" : {
-    "Scenario" : {
-      "Name" : "Obtain name of person that's a StaffMember",
-      "Given" : {
-        "university_dept_Staff" : {
-          "findStaffMemberByName" : {
-            "invoke" : {
-              "args" : {
-                "name" : "Letitia Leadbetter"
-              },
-              "results" : {
-                "name" : {
-                  "get" : "Letitia Leadbetter"
+    "rich" : {
+      "Scenario" : {
+        "Name" : "Obtain name of person that's a StaffMember",
+        "Given" : {
+          "university_dept_Staff" : {
+            "findStaffMemberByName" : {
+              "invoke" : {
+                "args" : {
+                  "name" : "Letitia Leadbetter"
                 },
-                "_meta" : {
-                  "saveAs" : "staff-member"
+                "results" : {
+                  "name" : {
+                    "get" : "Letitia Leadbetter"
+                  },
+                  "_meta" : {
+                    "saveAs" : "staff-member"
+                  }
                 }
               }
             }
           }
-        }
-      },
-      "When" : {
-        "university_dept_People" : {
-          "nameOf" : {
-            "invoke" : {
-              "results" : "Letitia Leadbetter"
+        },
+        "When" : {
+          "university_dept_People" : {
+            "nameOf" : {
+              "invoke" : {
+                "results" : "Letitia Leadbetter"
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.java
index 403a9e0087..838a9094f8 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Person_IntegTest.java
@@ -39,34 +39,12 @@ import lombok.val;
 //NOT USING @Transactional since we are running server within same transaction 
otherwise
 @Order(50)
 @ActiveProfiles("test")
-public class Person_IntegTest extends Abstract_IntegTest {
+public class Person_IntegTest extends AbstractDynamic_IntegTest {
 
+    @Override
     @TestFactory
     Iterable<DynamicTest> each() throws IOException, URISyntaxException {
-
-        val integClassName = getClass().getSimpleName();
-        val classUrl = getClass().getResource(integClassName + ".class");
-        Path classPath = Paths.get(classUrl.toURI());
-        Path directoryPath = classPath.getParent();
-
-        return Files.walk(directoryPath)
-                .filter(Files::isRegularFile)
-                .filter(file -> {
-                    String fileName = file.getFileName().toString();
-                    return fileName.startsWith(integClassName) && 
fileName.endsWith("._.gql");
-                })
-                .map(file -> {
-                    String fileName = file.getFileName().toString();
-                    String testName = 
fileName.substring(integClassName.length() + 
".each.".length()).replace("._.gql", "");
-                    return JupiterApprovals.dynamicTest(
-                            testName,
-                            options -> {
-                                Approvals.verify(submitFileNamed(fileName), 
jsonOptions(options));
-                                afterEach();
-                                beforeEach();
-                            });
-                })
-                .collect(Collectors.toList());
+        return super.each();
     }
 
 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department.approved.json
index 3d8eac498a..0eac192ed4 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department.approved.json
@@ -1,52 +1,54 @@
 {
   "data" : {
-    "Scenario" : {
-      "Name" : "New member of staff",
-      "Given" : {
-        "university_dept_Departments" : {
-          "findDepartmentByName" : {
-            "invoke" : {
-              "args" : {
-                "name" : "Classics"
-              },
-              "results" : {
-                "_meta" : {
-                  "saveAs" : "classics"
+    "rich" : {
+      "Scenario" : {
+        "Name" : "New member of staff",
+        "Given" : {
+          "university_dept_Departments" : {
+            "findDepartmentByName" : {
+              "invoke" : {
+                "args" : {
+                  "name" : "Classics"
+                },
+                "results" : {
+                  "_meta" : {
+                    "saveAs" : "classics"
+                  }
                 }
               }
             }
           }
-        }
-      },
-      "When" : {
-        "university_dept_Staff" : {
-          "createStaffMember" : {
-            "invokeNonIdempotent" : {
-              "args" : {
-                "name" : "Dr. Georgina McGovern",
-                "department" : {
-                  "name" : {
-                    "get" : "Classics"
-                  }
-                }
-              },
-              "results" : {
-                "name" : {
-                  "get" : "Dr. Georgina McGovern"
-                },
-                "department" : {
-                  "get" : {
+        },
+        "When" : {
+          "university_dept_Staff" : {
+            "createStaffMember" : {
+              "invokeNonIdempotent" : {
+                "args" : {
+                  "name" : "Dr. Georgina McGovern",
+                  "department" : {
                     "name" : {
                       "get" : "Classics"
                     }
                   }
                 },
-                "_meta" : {
-                  "title" : "Untitled Staff Member",
-                  "logicalTypeName" : "university.dept.StaffMember",
-                  "version" : null,
-                  "cssClass" : null,
-                  "icon" : 
"///graphql/object/university.dept.StaffMember:NNN/_meta/icon"
+                "results" : {
+                  "name" : {
+                    "get" : "Dr. Georgina McGovern"
+                  },
+                  "department" : {
+                    "get" : {
+                      "name" : {
+                        "get" : "Classics"
+                      }
+                    }
+                  },
+                  "_meta" : {
+                    "title" : "Untitled Staff Member",
+                    "logicalTypeName" : "university.dept.StaffMember",
+                    "version" : null,
+                    "cssClass" : null,
+                    "icon" : 
"///graphql/object/university.dept.StaffMember:NNN/_meta/icon"
+                  }
                 }
               }
             }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.find_staff_member_by_name_and_edit.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.find_staff_member_by_name_and_edit.approved.json
index e379fa1a51..d47eb22c25 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.find_staff_member_by_name_and_edit.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.find_staff_member_by_name_and_edit.approved.json
@@ -1,13 +1,15 @@
 {
   "data" : {
-    "university_dept_Staff" : {
-      "findStaffMemberByName" : {
-        "invoke" : {
-          "results" : {
-            "name" : {
-              "set" : {
-                "name" : {
-                  "get" : "Gerald Johns"
+    "rich" : {
+      "university_dept_Staff" : {
+        "findStaffMemberByName" : {
+          "invoke" : {
+            "results" : {
+              "name" : {
+                "set" : {
+                  "name" : {
+                    "get" : "Gerald Johns"
+                  }
                 }
               }
             }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.find_staff_member_by_name_and_edit_grade_choices.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.find_staff_member_by_name_and_edit_grade_choices.approved.json
index 290d54c1b3..43a399c09e 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.find_staff_member_by_name_and_edit_grade_choices.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.find_staff_member_by_name_and_edit_grade_choices.approved.json
@@ -1,12 +1,14 @@
 {
   "data" : {
-    "university_dept_Staff" : {
-      "findStaffMemberByName" : {
-        "invoke" : {
-          "results" : {
-            "grade" : {
-              "disabled" : null,
-              "choices" : [ "PROFESSOR", "READER", "SENIOR_LECTURER", 
"LECTURER", "RESEARCH_ASSISTANT" ]
+    "rich" : {
+      "university_dept_Staff" : {
+        "findStaffMemberByName" : {
+          "invoke" : {
+            "results" : {
+              "grade" : {
+                "disabled" : null,
+                "choices" : [ "PROFESSOR", "READER", "SENIOR_LECTURER", 
"LECTURER", "RESEARCH_ASSISTANT" ]
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.list_all_staff_members.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.list_all_staff_members.approved.json
index ceba221d50..b1e8ef5789 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.list_all_staff_members.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.list_all_staff_members.approved.json
@@ -1,79 +1,81 @@
 {
   "data" : {
-    "university_dept_Staff" : {
-      "findAllStaffMembers" : {
-        "invoke" : {
-          "results" : [ {
-            "name" : {
-              "get" : "Gerry Jones"
-            },
-            "grade" : {
-              "get" : "LECTURER"
-            },
-            "photo" : {
-              "get" : {
-                "name" : "StaffMember-photo-Bar.pdf",
-                "mimeType" : "application/pdf",
-                "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+    "rich" : {
+      "university_dept_Staff" : {
+        "findAllStaffMembers" : {
+          "invoke" : {
+            "results" : [ {
+              "name" : {
+                "get" : "Gerry Jones"
+              },
+              "grade" : {
+                "get" : "LECTURER"
+              },
+              "photo" : {
+                "get" : {
+                  "name" : "StaffMember-photo-Bar.pdf",
+                  "mimeType" : "application/pdf",
+                  "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+                }
               }
-            }
-          }, {
-            "name" : {
-              "get" : "John Gartner"
-            },
-            "grade" : {
-              "get" : "LECTURER"
-            },
-            "photo" : {
-              "get" : {
-                "name" : null,
-                "mimeType" : null,
-                "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+            }, {
+              "name" : {
+                "get" : "John Gartner"
+              },
+              "grade" : {
+                "get" : "LECTURER"
+              },
+              "photo" : {
+                "get" : {
+                  "name" : null,
+                  "mimeType" : null,
+                  "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+                }
               }
-            }
-          }, {
-            "name" : {
-              "get" : "Letitia Leadbetter"
-            },
-            "grade" : {
-              "get" : "LECTURER"
-            },
-            "photo" : {
-              "get" : {
-                "name" : "StaffMember-photo-Foo.pdf",
-                "mimeType" : "application/pdf",
-                "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+            }, {
+              "name" : {
+                "get" : "Letitia Leadbetter"
+              },
+              "grade" : {
+                "get" : "LECTURER"
+              },
+              "photo" : {
+                "get" : {
+                  "name" : "StaffMember-photo-Foo.pdf",
+                  "mimeType" : "application/pdf",
+                  "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+                }
               }
-            }
-          }, {
-            "name" : {
-              "get" : "Margaret Randall"
-            },
-            "grade" : {
-              "get" : "LECTURER"
-            },
-            "photo" : {
-              "get" : {
-                "name" : null,
-                "mimeType" : null,
-                "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+            }, {
+              "name" : {
+                "get" : "Margaret Randall"
+              },
+              "grade" : {
+                "get" : "LECTURER"
+              },
+              "photo" : {
+                "get" : {
+                  "name" : null,
+                  "mimeType" : null,
+                  "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+                }
               }
-            }
-          }, {
-            "name" : {
-              "get" : "Mervin Hughes"
-            },
-            "grade" : {
-              "get" : "LECTURER"
-            },
-            "photo" : {
-              "get" : {
-                "name" : "StaffMember-photo-Fizz.pdf",
-                "mimeType" : "application/pdf",
-                "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+            }, {
+              "name" : {
+                "get" : "Mervin Hughes"
+              },
+              "grade" : {
+                "get" : "LECTURER"
+              },
+              "photo" : {
+                "get" : {
+                  "name" : "StaffMember-photo-Fizz.pdf",
+                  "mimeType" : "application/pdf",
+                  "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+                }
               }
-            }
-          } ]
+            } ]
+          }
         }
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.staff_member_name_edit_invalid.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.staff_member_name_edit_invalid.approved.json
index dbb9136aba..c2f246ab1f 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.staff_member_name_edit_invalid.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.staff_member_name_edit_invalid.approved.json
@@ -1,22 +1,24 @@
 {
   "errors" : [ {
-    "message" : "Exception while fetching data 
(/university_dept_Staff/findStaffMemberByName/invoke/results/name/set) : Name 
cannot contain '!' character",
+    "message" : "Exception while fetching data 
(/rich/university_dept_Staff/findStaffMemberByName/invoke/results/name/set) : 
Name cannot contain '!' character",
     "locations" : [ {
-      "line" : 7,
-      "column" : 13
+      "line" : 8,
+      "column" : 15
     } ],
-    "path" : [ "university_dept_Staff", "findStaffMemberByName", "invoke", 
"results", "name", "set" ],
+    "path" : [ "rich", "university_dept_Staff", "findStaffMemberByName", 
"invoke", "results", "name", "set" ],
     "extensions" : {
       "classification" : "DataFetchingException"
     }
   } ],
   "data" : {
-    "university_dept_Staff" : {
-      "findStaffMemberByName" : {
-        "invoke" : {
-          "results" : {
-            "name" : {
-              "set" : null
+    "rich" : {
+      "university_dept_Staff" : {
+        "findStaffMemberByName" : {
+          "invoke" : {
+            "results" : {
+              "name" : {
+                "set" : null
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.staff_member_name_validate.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.staff_member_name_validate.approved.json
index c02a977cf4..0b3852e465 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.staff_member_name_validate.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.staff_member_name_validate.approved.json
@@ -1,11 +1,13 @@
 {
   "data" : {
-    "university_dept_Staff" : {
-      "findStaffMemberByName" : {
-        "invoke" : {
-          "results" : {
-            "name" : {
-              "validate" : "Name cannot contain '!' character"
+    "rich" : {
+      "university_dept_Staff" : {
+        "findStaffMemberByName" : {
+          "invoke" : {
+            "results" : {
+              "name" : {
+                "validate" : "Name cannot contain '!' character"
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.java
index 86b8037408..4241b46adb 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.java
@@ -59,34 +59,12 @@ import lombok.val;
 //NOT USING @Transactional since we are running server within same transaction 
otherwise
 @Order(60)
 @ActiveProfiles("test")
-public class Staff_IntegTest extends Abstract_IntegTest {
+public class Staff_IntegTest extends AbstractDynamic_IntegTest {
 
+    @Override
     @TestFactory
     Iterable<DynamicTest> each() throws IOException, URISyntaxException {
-
-        val integClassName = getClass().getSimpleName();
-        val classUrl = getClass().getResource(integClassName + ".class");
-        Path classPath = Paths.get(classUrl.toURI());
-        Path directoryPath = classPath.getParent();
-
-        return Files.walk(directoryPath)
-                .filter(Files::isRegularFile)
-                .filter(file -> {
-                    String fileName = file.getFileName().toString();
-                    return fileName.startsWith(integClassName) && 
fileName.endsWith("._.gql");
-                })
-                .map(file -> {
-                    String fileName = file.getFileName().toString();
-                    String testName = 
fileName.substring(integClassName.length() + 
".each.".length()).replace("._.gql", "");
-                    return JupiterApprovals.dynamicTest(
-                            testName,
-                            options -> {
-                                Approvals.verify(submitFileNamed(fileName), 
jsonOptions(options));
-                                afterEach();
-                                beforeEach();
-                            });
-                })
-                .collect(Collectors.toList());
+        return super.each();
     }
 
 
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DepartmentMutating_IntegTest.change_department_name_visibility._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DepartmentMutating_IntegTest.change_department_name_visibility._.gql
similarity index 100%
rename from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DepartmentMutating_IntegTest.change_department_name_visibility._.gql
rename to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DepartmentMutating_IntegTest.change_department_name_visibility._.gql
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DepartmentMutating_IntegTest.change_department_name_visibility.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DepartmentMutating_IntegTest.change_department_name_visibility.approved.json
new file mode 100644
index 0000000000..4c76780ac3
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DepartmentMutating_IntegTest.change_department_name_visibility.approved.json
@@ -0,0 +1,11 @@
+{
+  "data" : {
+    "rich" : {
+      "university_dept_Department" : {
+        "changeName" : {
+          "hidden" : false
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DepartmentMutating_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DepartmentMutating_IntegTest.java
similarity index 91%
rename from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DepartmentMutating_IntegTest.java
rename to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DepartmentMutating_IntegTest.java
index 7a21171d2c..90c54e672d 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DepartmentMutating_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DepartmentMutating_IntegTest.java
@@ -16,16 +16,21 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.e2e;
+package org.apache.causeway.viewer.graphql.viewer.test.e2e.special;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
 import java.util.Optional;
 
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
 import org.approvaltests.reporters.UseReporter;
+import org.junit.jupiter.api.DynamicTest;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 
+import org.junit.jupiter.api.TestFactory;
+
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.transaction.annotation.Propagation;
 
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHeadMutating_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHeadMutating_IntegTest.java
index f60514e5bc..94cd5463b6 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHeadMutating_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHeadMutating_IntegTest.java
@@ -20,6 +20,8 @@ package 
org.apache.causeway.viewer.graphql.viewer.test.e2e.special;
 
 import java.util.Optional;
 
+import 
org.apache.causeway.viewer.graphql.viewer.test.e2e.AbstractDynamic_IntegTest;
+
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
 import org.approvaltests.reporters.UseReporter;
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.find_depthead_and_change_name._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.find_depthead_and_change_name._.gql
index eb29fb5c65..b3afdfdf4f 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.find_depthead_and_change_name._.gql
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.find_depthead_and_change_name._.gql
@@ -1,13 +1,15 @@
 {
-  university_dept_DeptHeads {
-    findHeadByName {
-      invoke(name: "Prof. Dicky Horwich") {
-        results {
-          changeName {
-            invokeIdempotent(newName: "Prof. Richard Horwich") {
-              results {
-                name {
-                  get
+  rich {
+    university_dept_DeptHeads {
+      findHeadByName {
+        invoke(name: "Prof. Dicky Horwich") {
+          results {
+            changeName {
+              invokeIdempotent(newName: "Prof. Richard Horwich") {
+                results {
+                  name {
+                    get
+                  }
                 }
               }
             }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.find_depthead_and_change_name.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.find_depthead_and_change_name.approved.json
index fd47d275da..b40b02bb18 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.find_depthead_and_change_name.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.find_depthead_and_change_name.approved.json
@@ -1,14 +1,16 @@
 {
   "data" : {
-    "university_dept_DeptHeads" : {
-      "findHeadByName" : {
-        "invoke" : {
-          "results" : {
-            "changeName" : {
-              "invokeIdempotent" : {
-                "results" : {
-                  "name" : {
-                    "get" : "Prof. Richard Horwich"
+    "rich" : {
+      "university_dept_DeptHeads" : {
+        "findHeadByName" : {
+          "invoke" : {
+            "results" : {
+              "changeName" : {
+                "invokeIdempotent" : {
+                  "results" : {
+                    "name" : {
+                      "get" : "Prof. Richard Horwich"
+                    }
                   }
                 }
               }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.java
index 4d9aaa2830..da1d229e36 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/DeptHead_2_IntegTest.java
@@ -18,6 +18,8 @@
  */
 package org.apache.causeway.viewer.graphql.viewer.test.e2e.special;
 
+import 
org.apache.causeway.viewer.graphql.viewer.test.e2e.AbstractDynamic_IntegTest;
+
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
 import org.approvaltests.reporters.UseReporter;
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Person_2_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Person_2_IntegTest.java
index 5752a5d6af..5eb8675a75 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Person_2_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Person_2_IntegTest.java
@@ -22,6 +22,8 @@ import java.util.Optional;
 
 import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.StaffMember;
 
+import 
org.apache.causeway.viewer.graphql.viewer.test.e2e.AbstractDynamic_IntegTest;
+
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
 import org.approvaltests.reporters.UseReporter;
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.find_staff_member_by_name_and_download_photo._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.find_staff_member_by_name_and_download_photo._.gql
index b0c77b1ad0..b97353188f 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.find_staff_member_by_name_and_download_photo._.gql
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.find_staff_member_by_name_and_download_photo._.gql
@@ -1,18 +1,20 @@
 {
-  university_dept_Staff {
-    findStaffMemberByName {
-      invoke(name: "Gerry Jones") {
-        results {
-          name {
-            get
-          }
-          _meta {
-            grid
-            icon
-          }
-          photo {
-            get {
-              bytes
+  rich {
+    university_dept_Staff {
+      findStaffMemberByName {
+        invoke(name: "Gerry Jones") {
+          results {
+            name {
+              get
+            }
+            _meta {
+              grid
+              icon
+            }
+            photo {
+              get {
+                bytes
+              }
             }
           }
         }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.find_staff_member_by_name_and_download_photo.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.find_staff_member_by_name_and_download_photo.approved.json
index c185b5304e..297bb0ea49 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.find_staff_member_by_name_and_download_photo.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.find_staff_member_by_name_and_download_photo.approved.json
@@ -1,12 +1,26 @@
 {
-  "errors" : [ {
-    "message" : "Validation error (FieldUndefined@[university_dept_Staff]) : 
Field 'university_dept_Staff' in type 'SimpleAndRich' is undefined",
-    "locations" : [ {
-      "line" : 2,
-      "column" : 3
-    } ],
-    "extensions" : {
-      "classification" : "ValidationError"
+  "data" : {
+    "rich" : {
+      "university_dept_Staff" : {
+        "findStaffMemberByName" : {
+          "invoke" : {
+            "results" : {
+              "name" : {
+                "get" : "Gerry Jones"
+              },
+              "_meta" : {
+                "grid" : 
"///graphql/object/university.dept.StaffMember:NNN/_meta/grid",
+                "icon" : 
"///graphql/object/university.dept.StaffMember:NNN/_meta/icon"
+              },
+              "photo" : {
+                "get" : {
+                  "bytes" : 
"///graphql/object/university.dept.StaffMember:NNN/photo/blobBytes"
+                }
+              }
+            }
+          }
+        }
+      }
     }
-  } ]
+  }
 }
\ No newline at end of file
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.java
index 79fe5d815f..03c6d8f18f 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/special/Staff_2_IntegTest.java
@@ -26,6 +26,8 @@ import java.net.http.HttpResponse;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import 
org.apache.causeway.viewer.graphql.viewer.test.e2e.AbstractDynamic_IntegTest;
+
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
 import org.approvaltests.reporters.UseReporter;
@@ -57,7 +59,7 @@ public class Staff_2_IntegTest extends Abstract_IntegTest {
         val jsonNodeRoot = objectMapper.readTree(response);
 
         val gridUrl = jsonNodeRoot
-                
.at("/data/university_dept_Staff/findStaffMemberByName/invoke/results/_meta/grid")
+                
.at("/data/rich/university_dept_Staff/findStaffMemberByName/invoke/results/_meta/grid")
                 .asText();
 
         
assertThat(gridUrl).matches("///graphql/object/university.dept.StaffMember:(\\d+)/_meta/grid");
@@ -69,7 +71,7 @@ public class Staff_2_IntegTest extends Abstract_IntegTest {
 
 
         val photoBytesUrl = jsonNodeRoot
-                
.at("/data/university_dept_Staff/findStaffMemberByName/invoke/results/photo/get/bytes")
+                
.at("/data/rich/university_dept_Staff/findStaffMemberByName/invoke/results/photo/get/bytes")
                 .asText();
 
         
assertThat(photoBytesUrl).matches("///graphql/object/university.dept.StaffMember:(\\d+)/photo/blobBytes");
@@ -80,7 +82,7 @@ public class Staff_2_IntegTest extends Abstract_IntegTest {
 
 
         val iconBytesUrl = jsonNodeRoot
-                
.at("/data/university_dept_Staff/findStaffMemberByName/invoke/results/_meta/icon")
+                
.at("/data/rich/university_dept_Staff/findStaffMemberByName/invoke/results/_meta/icon")
                 .asText();
 
         
assertThat(iconBytesUrl).matches("///graphql/object/university.dept.StaffMember:(\\d+)/_meta/icon");

Reply via email to