diff --git a/package.json b/package.json
index 6e792515..ddcb91ba 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"test:e2e": "run-s e2e:*",
"e2e:01_counter": "server-test examples:01_counter http://localhost:8080 'vitest run --project=e2e 01_counter'",
"e2e:02_person": "server-test examples:02_person http://localhost:8080 'vitest run --project=e2e 02_person'",
- "e2e:03_setstate": "server-test examples:03_setstate http://localhost:8080 'vitest run --project=e2e 03_setstate'",
+ "e2e:03_usestate": "server-test examples:03_usestate http://localhost:8080 'vitest run --project=e2e 03_usestate'",
"e2e:04_selector": "server-test examples:04_selector http://localhost:8080 'vitest run --project=e2e 04_selector'",
"e2e:05_container": "server-test examples:05_container http://localhost:8080 'vitest run --project=e2e 05_container'",
"e2e:06_customhook": "server-test examples:06_customhook http://localhost:8080 'vitest run --project=e2e 06_customhook'",
diff --git a/tests/e2e/__snapshots__/01_counter.ts.snap b/tests/e2e/__snapshots__/01_counter.ts.snap
new file mode 100644
index 00000000..ae585683
--- /dev/null
+++ b/tests/e2e/__snapshots__/01_counter.ts.snap
@@ -0,0 +1,129 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`01_minimal > should work with recorded events 1`] = `
+"
+
Counter
numRendered: 26
Count: 1
numRendered: 28
Count: 1
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 2`] = `
+"
+ Counter
numRendered: 34
Count: 2
numRendered: 36
Count: 2
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 3`] = `
+"
+ Counter
numRendered: 42
Count: 3
numRendered: 44
Count: 3
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 4`] = `
+"
+ Counter
numRendered: 50
Count: 2
numRendered: 52
Count: 2
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 5`] = `
+"
+ Counter
numRendered: 58
Count: 1
numRendered: 60
Count: 1
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 6`] = `
+"
+ Counter
numRendered: 66
Count: 0
numRendered: 68
Count: 0
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 7`] = `
+"
+ Counter
numRendered: 74
Count: -1
numRendered: 76
Count: -1
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 8`] = `
+"
+ Counter
numRendered: 82
Count: -2
numRendered: 84
Count: -2
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 9`] = `
+"
+ Counter
numRendered: 90
Count: -3
numRendered: 92
Count: -3
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 10`] = `
+"
+ Counter
numRendered: 98
Count: -2
numRendered: 100
Count: -2
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 11`] = `
+"
+ Counter
numRendered: 106
Count: -1
numRendered: 108
Count: -1
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 12`] = `
+"
+ Counter
numRendered: 114
Count: 0
numRendered: 116
Count: 0
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 13`] = `
+"
+ Counter
numRendered: 114
Count: 0
numRendered: 116
Count: 0
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 14`] = `
+"
+ Counter
numRendered: 114
Count: 0
numRendered: 116
Count: 0
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 15`] = `
+"
+ Counter
numRendered: 114
Count: 0
numRendered: 116
Count: 0
TextBox
+
+
+"
+`;
+
+exports[`01_minimal > should work with recorded events 16`] = `
+"
+ Counter
numRendered: 114
Count: 0
numRendered: 116
Count: 0
TextBox
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/02_person.ts.snap b/tests/e2e/__snapshots__/02_person.ts.snap
new file mode 100644
index 00000000..e11f07a1
--- /dev/null
+++ b/tests/e2e/__snapshots__/02_person.ts.snap
@@ -0,0 +1,145 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`02_typescript > should work with recorded events 1`] = `
+"
+ Counter
numRendered: 18
Count: 1
numRendered: 20
Count: 1
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 2`] = `
+"
+ Counter
numRendered: 26
Count: 2
numRendered: 28
Count: 2
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 3`] = `
+"
+ Counter
numRendered: 34
Count: 1
numRendered: 36
Count: 1
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 4`] = `
+"
+ Counter
numRendered: 42
Count: 0
numRendered: 44
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 5`] = `
+"
+ Counter
numRendered: 50
Count: 1
numRendered: 52
Count: 1
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 6`] = `
+"
+ Counter
numRendered: 58
Count: 2
numRendered: 60
Count: 2
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 7`] = `
+"
+ Counter
numRendered: 66
Count: 1
numRendered: 68
Count: 1
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 8`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 9`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 10`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 11`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 12`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 13`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 14`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 15`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 16`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 17`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
+
+exports[`02_typescript > should work with recorded events 18`] = `
+"
+ Counter
numRendered: 74
Count: 0
numRendered: 76
Count: 0
Person
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/03_usestate.ts.snap b/tests/e2e/__snapshots__/03_usestate.ts.snap
new file mode 100644
index 00000000..26fe44bb
--- /dev/null
+++ b/tests/e2e/__snapshots__/03_usestate.ts.snap
@@ -0,0 +1,121 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`03_usestate > should work with recorded events 1`] = `
+"
+ Counter
numRendered: 18
Count: 1
numRendered: 20
Count: 1
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 2`] = `
+"
+ Counter
numRendered: 26
Count: 2
numRendered: 28
Count: 2
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 3`] = `
+"
+ Counter
numRendered: 34
Count: 3
numRendered: 36
Count: 3
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 4`] = `
+"
+ Counter
numRendered: 42
Count: 4
numRendered: 44
Count: 4
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 5`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 6`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 7`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 8`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 9`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 10`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 11`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 12`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 13`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 14`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
+
+exports[`03_usestate > should work with recorded events 15`] = `
+"
+ Counter
numRendered: 50
Count: 5
numRendered: 52
Count: 5
Person
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/04_selector.ts.snap b/tests/e2e/__snapshots__/04_selector.ts.snap
new file mode 100644
index 00000000..e49ec5d9
--- /dev/null
+++ b/tests/e2e/__snapshots__/04_selector.ts.snap
@@ -0,0 +1,113 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`04_selector > should work with recorded events 1`] = `
+"
+ Counter
numRendered: 14
Count: 1
numRendered: 16
Count: 1
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 2`] = `
+"
+ Counter
numRendered: 22
Count: 0
numRendered: 24
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 3`] = `
+"
+ Counter
numRendered: 30
Count: 1
numRendered: 32
Count: 1
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 4`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 5`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 6`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 7`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 8`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 9`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 10`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 11`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 12`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 13`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
+
+exports[`04_selector > should work with recorded events 14`] = `
+"
+ Counter
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Person
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/05_container.ts.snap b/tests/e2e/__snapshots__/05_container.ts.snap
new file mode 100644
index 00000000..0b378b78
--- /dev/null
+++ b/tests/e2e/__snapshots__/05_container.ts.snap
@@ -0,0 +1,161 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`05_container > should work with recorded events 1`] = `
+"
+ First container
numRendered: 30
Count: 1
numRendered: 32
Count: 1
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 2`] = `
+"
+ First container
numRendered: 38
Count: 0
numRendered: 40
Count: 0
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 3`] = `
+"
+ First container
numRendered: 46
Count: -1
numRendered: 48
Count: -1
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 4`] = `
+"
+ First container
numRendered: 54
Count: 0
numRendered: 56
Count: 0
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 5`] = `
+"
+ First container
numRendered: 62
Count: 1
numRendered: 64
Count: 1
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 6`] = `
+"
+ First container
numRendered: 70
Count: 2
numRendered: 72
Count: 2
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 7`] = `
+"
+ First container
numRendered: 78
Count: 1
numRendered: 80
Count: 1
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 8`] = `
+"
+ First container
numRendered: 86
Count: 0
numRendered: 88
Count: 0
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 9`] = `
+"
+ First container
numRendered: 94
Count: -1
numRendered: 96
Count: -1
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 10`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 6
Count: 0
numRendered: 8
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 11`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 110
Count: 1
numRendered: 112
Count: 1
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 12`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 118
Count: 0
numRendered: 120
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 13`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 126
Count: -1
numRendered: 128
Count: -1
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 14`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 134
Count: 0
numRendered: 136
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 15`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 142
Count: 1
numRendered: 144
Count: 1
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 16`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 150
Count: 2
numRendered: 152
Count: 2
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 17`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 158
Count: 1
numRendered: 160
Count: 1
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 18`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 166
Count: 0
numRendered: 168
Count: 0
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 19`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 174
Count: -1
numRendered: 176
Count: -1
+
+
+"
+`;
+
+exports[`05_container > should work with recorded events 20`] = `
+"
+ First container
numRendered: 102
Count: -2
numRendered: 104
Count: -2
Second container
numRendered: 182
Count: -2
numRendered: 184
Count: -2
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/06_customhook.ts.snap b/tests/e2e/__snapshots__/06_customhook.ts.snap
new file mode 100644
index 00000000..cf2a213f
--- /dev/null
+++ b/tests/e2e/__snapshots__/06_customhook.ts.snap
@@ -0,0 +1,65 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`06_customhook > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`06_customhook > should work with recorded events 2`] = `
+"
+
+
+
+"
+`;
+
+exports[`06_customhook > should work with recorded events 3`] = `
+"
+
+
+
+"
+`;
+
+exports[`06_customhook > should work with recorded events 4`] = `
+"
+
+
+
+"
+`;
+
+exports[`06_customhook > should work with recorded events 5`] = `
+"
+
+
+
+"
+`;
+
+exports[`06_customhook > should work with recorded events 6`] = `
+"
+
+
+
+"
+`;
+
+exports[`06_customhook > should work with recorded events 7`] = `
+"
+
+
+
+"
+`;
+
+exports[`06_customhook > should work with recorded events 8`] = `
+"
+
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/07_todolist.ts.snap b/tests/e2e/__snapshots__/07_todolist.ts.snap
new file mode 100644
index 00000000..2f3f81fa
--- /dev/null
+++ b/tests/e2e/__snapshots__/07_todolist.ts.snap
@@ -0,0 +1,225 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`07_todolist > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 2`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 3`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 4`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 5`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 6`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 7`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 8`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 9`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 10`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 11`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 12`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 13`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 14`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 15`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 16`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 17`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 18`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 19`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 20`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 21`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 22`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 23`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 24`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 25`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 26`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 27`] = `
+"
+
+
+
+"
+`;
+
+exports[`07_todolist > should work with recorded events 28`] = `
+"
+
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/08_comparison.ts.snap b/tests/e2e/__snapshots__/08_comparison.ts.snap
new file mode 100644
index 00000000..ccb3f1c4
--- /dev/null
+++ b/tests/e2e/__snapshots__/08_comparison.ts.snap
@@ -0,0 +1,89 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`08_comparison > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 2`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 3`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 4`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 5`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 6`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 7`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 8`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 9`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 10`] = `
+"
+
+
+
+"
+`;
+
+exports[`08_comparison > should work with recorded events 11`] = `
+"
+
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/09_reactmemo.ts.snap b/tests/e2e/__snapshots__/09_reactmemo.ts.snap
new file mode 100644
index 00000000..ceeb9bbd
--- /dev/null
+++ b/tests/e2e/__snapshots__/09_reactmemo.ts.snap
@@ -0,0 +1,49 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`09_reactmemo > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`09_reactmemo > should work with recorded events 2`] = `
+"
+
+
+
+"
+`;
+
+exports[`09_reactmemo > should work with recorded events 3`] = `
+"
+
+
+
+"
+`;
+
+exports[`09_reactmemo > should work with recorded events 4`] = `
+"
+
+
+
+"
+`;
+
+exports[`09_reactmemo > should work with recorded events 5`] = `
+"
+
+
+
+"
+`;
+
+exports[`09_reactmemo > should work with recorded events 6`] = `
+"
+
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/10_untracked.ts.snap b/tests/e2e/__snapshots__/10_untracked.ts.snap
new file mode 100644
index 00000000..0e5073aa
--- /dev/null
+++ b/tests/e2e/__snapshots__/10_untracked.ts.snap
@@ -0,0 +1,89 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`10_untracked > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 2`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 3`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 4`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 5`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 6`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 7`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 8`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 9`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 10`] = `
+"
+
+
+
+"
+`;
+
+exports[`10_untracked > should work with recorded events 11`] = `
+"
+
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/11_form.ts.snap b/tests/e2e/__snapshots__/11_form.ts.snap
new file mode 100644
index 00000000..aabe61b9
--- /dev/null
+++ b/tests/e2e/__snapshots__/11_form.ts.snap
@@ -0,0 +1,89 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`11_form > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 2`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 3`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 4`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 5`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 6`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 7`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 8`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 9`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 10`] = `
+"
+
+
+
+"
+`;
+
+exports[`11_form > should work with recorded events 11`] = `
+"
+
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/12_async.ts.snap b/tests/e2e/__snapshots__/12_async.ts.snap
new file mode 100644
index 00000000..12b47e1a
--- /dev/null
+++ b/tests/e2e/__snapshots__/12_async.ts.snap
@@ -0,0 +1,41 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`12_async > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`12_async > should work with recorded events 2`] = `
+"
+ Person
User ID:
First Name: Emma
Counter
Count: 0
+
+
+"
+`;
+
+exports[`12_async > should work with recorded events 3`] = `
+"
+ Person
User ID:
First Name: Emma
Counter
Count: 1
+
+
+"
+`;
+
+exports[`12_async > should work with recorded events 4`] = `
+"
+ Person
User ID:
First Name: Emma
Counter
Count: 1
+
+
+"
+`;
+
+exports[`12_async > should work with recorded events 5`] = `
+"
+ Person
User ID:
First Name: Emma
Counter
Count: 0
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/13_saga.ts.snap b/tests/e2e/__snapshots__/13_saga.ts.snap
new file mode 100644
index 00000000..50f62cc9
--- /dev/null
+++ b/tests/e2e/__snapshots__/13_saga.ts.snap
@@ -0,0 +1,41 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`13_saga > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`13_saga > should work with recorded events 2`] = `
+"
+ Person
User ID:
First Name: Emma
Counter
Count: 0
+
+
+"
+`;
+
+exports[`13_saga > should work with recorded events 3`] = `
+"
+ Person
User ID:
First Name: Emma
Counter
Count: 1
+
+
+"
+`;
+
+exports[`13_saga > should work with recorded events 4`] = `
+"
+ Person
User ID:
First Name: Emma
Counter
Count: 1
+
+
+"
+`;
+
+exports[`13_saga > should work with recorded events 5`] = `
+"
+ Person
User ID:
First Name: Emma
Counter
Count: 0
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/14_dynamic.ts.snap b/tests/e2e/__snapshots__/14_dynamic.ts.snap
new file mode 100644
index 00000000..8473ae3e
--- /dev/null
+++ b/tests/e2e/__snapshots__/14_dynamic.ts.snap
@@ -0,0 +1,97 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`14_dynamic > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 2`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 3`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 4`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 5`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 6`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 7`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 8`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 9`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 10`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 11`] = `
+"
+
+
+
+"
+`;
+
+exports[`14_dynamic > should work with recorded events 12`] = `
+"
+
+
+
+"
+`;
diff --git a/tests/e2e/__snapshots__/15_reactmemoref.ts.snap b/tests/e2e/__snapshots__/15_reactmemoref.ts.snap
new file mode 100644
index 00000000..698f9458
--- /dev/null
+++ b/tests/e2e/__snapshots__/15_reactmemoref.ts.snap
@@ -0,0 +1,49 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`15_reactmemoref > should work with recorded events 1`] = `
+"
+
+
+
+"
+`;
+
+exports[`15_reactmemoref > should work with recorded events 2`] = `
+"
+
+
+
+"
+`;
+
+exports[`15_reactmemoref > should work with recorded events 3`] = `
+"
+
+
+
+"
+`;
+
+exports[`15_reactmemoref > should work with recorded events 4`] = `
+"
+
+
+
+"
+`;
+
+exports[`15_reactmemoref > should work with recorded events 5`] = `
+"
+
+
+
+"
+`;
+
+exports[`15_reactmemoref > should work with recorded events 6`] = `
+"
+
+
+
+"
+`;