+
+
diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-no-child-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-no-child-ref.html
new file mode 100644
index 00000000000..98199327b9b
--- /dev/null
+++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-no-child-ref.html
@@ -0,0 +1,9 @@
+
+
+
+ - One
+
+
+ - One
+
+
diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-prepend-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-prepend-ref.html
new file mode 100644
index 00000000000..20b245f26e1
--- /dev/null
+++ b/Tests/LibWeb/Ref/expected/ol-render-node-prepend-ref.html
@@ -0,0 +1,15 @@
+
+
+
+
+ - One
+ - Two
+ - Three
+
+
+ - Three
+ - Two
+ - One
+
+
+
diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-remove-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-remove-ref.html
new file mode 100644
index 00000000000..5b55047ec49
--- /dev/null
+++ b/Tests/LibWeb/Ref/expected/ol-render-node-remove-ref.html
@@ -0,0 +1,11 @@
+
+
+
+ - One
+ - Two
+
+
+ - Two
+ - One
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-multiple-changes.html b/Tests/LibWeb/Ref/input/ol-render-multiple-changes.html
new file mode 100644
index 00000000000..22175f92b6b
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-multiple-changes.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+ - 1
+ - x
+
+ - 2
+
+
+
+
+
+
+ - 18
+
+
+ - 17
+
+
+
+
+
+
+ - 30
+
+
- 31
+
+
+
+ - 40
+ 41
+ 43
+
+
+
+
- 35
+
+ U
+
+
+
- 36
+
- 37
+
+
+ - 5
+ - 6
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-append-group.html b/Tests/LibWeb/Ref/input/ol-render-node-append-group.html
new file mode 100644
index 00000000000..0632b9e9221
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-append-group.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ - One
+ - Two
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-append.html b/Tests/LibWeb/Ref/input/ol-render-node-append.html
new file mode 100644
index 00000000000..b577f0814d3
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-append.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ - One
+ - Two
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-before-child-group.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-before-child-group.html
new file mode 100644
index 00000000000..c30603bd8ad
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-before-child-group.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+ - One
+ - Four
+
+
+ - Four
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-before-child.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-before-child.html
new file mode 100644
index 00000000000..7a4cdb02abc
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-before-child.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+ - One
+ - Three
+
+
+ - Three
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-existing-child-group.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-existing-child-group.html
new file mode 100644
index 00000000000..943fd1fd622
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-existing-child-group.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+ - One
+
+
- Three
+ - Four
+
+ - Two
+ - Five
+
+
+ - Five
+
+
- Three
+ - Two
+
+ - Four
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-existing-child.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-existing-child.html
new file mode 100644
index 00000000000..45e27fe813f
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-existing-child.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+ - Two
+ - One
+ - Three
+
+
+ - Three
+ - One
+ - Two
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-first-group.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-first-group.html
new file mode 100644
index 00000000000..8b98f326fc1
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-first-group.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ - Three
+ - Four
+
+
+ - Two
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-first.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-first.html
new file mode 100644
index 00000000000..90a4380e7f5
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-first.html
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ - Two
+ - Three
+
+
+ - Two
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-last-group.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-last-group.html
new file mode 100644
index 00000000000..a0420c27afe
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-last-group.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+ - One
+ - Two
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-last.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-last.html
new file mode 100644
index 00000000000..60570603339
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-last.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+ - One
+ - Two
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-no-child-group.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-no-child-group.html
new file mode 100644
index 00000000000..d9a08712ff3
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-no-child-group.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-insert-no-child.html b/Tests/LibWeb/Ref/input/ol-render-node-insert-no-child.html
new file mode 100644
index 00000000000..05248a8fe8d
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-insert-no-child.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-prepend.html b/Tests/LibWeb/Ref/input/ol-render-node-prepend.html
new file mode 100644
index 00000000000..9a619a9de4b
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-prepend.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+ - Two
+ - Three
+
+
+ - Two
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-remove-child-group.html b/Tests/LibWeb/Ref/input/ol-render-node-remove-child-group.html
new file mode 100644
index 00000000000..6270cb94131
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-remove-child-group.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+ - One
+
+
- x
+ - y
+ - z
+
+ - Two
+
+
+ - Two
+
+
- z
+ - y
+ - x
+
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-remove-child.html b/Tests/LibWeb/Ref/input/ol-render-node-remove-child.html
new file mode 100644
index 00000000000..2bcb0bd37f0
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-remove-child.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+ - One
+ - X1
+ - Two
+
+
+ - Two
+ - X2
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-remove-first.html b/Tests/LibWeb/Ref/input/ol-render-node-remove-first.html
new file mode 100644
index 00000000000..74b60ff1401
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-remove-first.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+ - X1
+ - One
+ - Two
+
+
+ - X2
+ - Two
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Ref/input/ol-render-node-remove.html b/Tests/LibWeb/Ref/input/ol-render-node-remove.html
new file mode 100644
index 00000000000..434531d2f2c
--- /dev/null
+++ b/Tests/LibWeb/Ref/input/ol-render-node-remove.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+ - One
+ - X1
+ - Two
+
+
+ - Two
+ - X2
+ - One
+
+
+
+
diff --git a/Tests/LibWeb/Screenshot/expected/ol-render-node-append-group-reversed-ref.html b/Tests/LibWeb/Screenshot/expected/ol-render-node-append-group-reversed-ref.html
new file mode 100644
index 00000000000..0363aa02079
--- /dev/null
+++ b/Tests/LibWeb/Screenshot/expected/ol-render-node-append-group-reversed-ref.html
@@ -0,0 +1,7 @@
+
+
+

diff --git a/Tests/LibWeb/Screenshot/expected/ol-render-node-append-reversed-ref.html b/Tests/LibWeb/Screenshot/expected/ol-render-node-append-reversed-ref.html
new file mode 100644
index 00000000000..ac232c9c9b3
--- /dev/null
+++ b/Tests/LibWeb/Screenshot/expected/ol-render-node-append-reversed-ref.html
@@ -0,0 +1,7 @@
+
+
+

diff --git a/Tests/LibWeb/Screenshot/expected/ol-render-node-insert-last-group-reversed-ref.html b/Tests/LibWeb/Screenshot/expected/ol-render-node-insert-last-group-reversed-ref.html
new file mode 100644
index 00000000000..51ff4128802
--- /dev/null
+++ b/Tests/LibWeb/Screenshot/expected/ol-render-node-insert-last-group-reversed-ref.html
@@ -0,0 +1,7 @@
+
+
+

diff --git a/Tests/LibWeb/Screenshot/expected/ol-render-node-insert-last-reversed-ref.html b/Tests/LibWeb/Screenshot/expected/ol-render-node-insert-last-reversed-ref.html
new file mode 100644
index 00000000000..b4df294d0f8
--- /dev/null
+++ b/Tests/LibWeb/Screenshot/expected/ol-render-node-insert-last-reversed-ref.html
@@ -0,0 +1,7 @@
+
+
+

diff --git a/Tests/LibWeb/Screenshot/images/ol-render-node-append-group-reversed-ref.png b/Tests/LibWeb/Screenshot/images/ol-render-node-append-group-reversed-ref.png
new file mode 100644
index 00000000000..28e9de31c67
Binary files /dev/null and b/Tests/LibWeb/Screenshot/images/ol-render-node-append-group-reversed-ref.png differ
diff --git a/Tests/LibWeb/Screenshot/images/ol-render-node-append-reversed-ref.png b/Tests/LibWeb/Screenshot/images/ol-render-node-append-reversed-ref.png
new file mode 100644
index 00000000000..7b819e7add2
Binary files /dev/null and b/Tests/LibWeb/Screenshot/images/ol-render-node-append-reversed-ref.png differ
diff --git a/Tests/LibWeb/Screenshot/images/ol-render-node-insert-last-group-reversed-ref.png b/Tests/LibWeb/Screenshot/images/ol-render-node-insert-last-group-reversed-ref.png
new file mode 100644
index 00000000000..28e9de31c67
Binary files /dev/null and b/Tests/LibWeb/Screenshot/images/ol-render-node-insert-last-group-reversed-ref.png differ
diff --git a/Tests/LibWeb/Screenshot/images/ol-render-node-insert-last-reversed-ref.png b/Tests/LibWeb/Screenshot/images/ol-render-node-insert-last-reversed-ref.png
new file mode 100644
index 00000000000..7b819e7add2
Binary files /dev/null and b/Tests/LibWeb/Screenshot/images/ol-render-node-insert-last-reversed-ref.png differ
diff --git a/Tests/LibWeb/Screenshot/input/ol-render-node-append-group-reversed.html b/Tests/LibWeb/Screenshot/input/ol-render-node-append-group-reversed.html
new file mode 100644
index 00000000000..77aa5048219
--- /dev/null
+++ b/Tests/LibWeb/Screenshot/input/ol-render-node-append-group-reversed.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ - Four
+ - Three
+
+
+
+
diff --git a/Tests/LibWeb/Screenshot/input/ol-render-node-append-reversed.html b/Tests/LibWeb/Screenshot/input/ol-render-node-append-reversed.html
new file mode 100644
index 00000000000..0b1db58db16
--- /dev/null
+++ b/Tests/LibWeb/Screenshot/input/ol-render-node-append-reversed.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+- Three
+- Two
+
+
+
+
diff --git a/Tests/LibWeb/Screenshot/input/ol-render-node-insert-last-group-reversed.html b/Tests/LibWeb/Screenshot/input/ol-render-node-insert-last-group-reversed.html
new file mode 100644
index 00000000000..bdeff2e7579
--- /dev/null
+++ b/Tests/LibWeb/Screenshot/input/ol-render-node-insert-last-group-reversed.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+ - Four
+ - Three
+
+
+
+
diff --git a/Tests/LibWeb/Screenshot/input/ol-render-node-insert-last-reversed.html b/Tests/LibWeb/Screenshot/input/ol-render-node-insert-last-reversed.html
new file mode 100644
index 00000000000..85505be2aea
--- /dev/null
+++ b/Tests/LibWeb/Screenshot/input/ol-render-node-insert-last-reversed.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+ - Three
+ - Two
+
+
+
+