From 51b4b4a27073820a6b65cd763f0dbd65360d86c3 Mon Sep 17 00:00:00 2001 From: Manuel Zahariev Date: Mon, 12 May 2025 10:48:45 -0700 Subject: [PATCH] LibWeb: Tests for recalculating ordinals after list manipulation FIXME: Rendering modifications to a list is sometimes not pixel-perfect vs. reference (likely a bug). After this is fixed, screenshot tests from this commit will likely fail + can be moved to ref tests. --- .../ol-render-multiple-changes-ref.html | 58 ++++++++++ .../ol-render-node-append-group-ref.html | 13 +++ .../expected/ol-render-node-append-ref.html | 10 ++ ...er-node-insert-before-child-group-ref.html | 19 ++++ ...l-render-node-insert-before-child-ref.html | 13 +++ ...-node-insert-existing-child-group-ref.html | 21 ++++ ...render-node-insert-existing-child-ref.html | 13 +++ ...ol-render-node-insert-first-group-ref.html | 19 ++++ .../ol-render-node-insert-first-ref.html | 13 +++ .../ol-render-node-insert-last-group-ref.html | 11 ++ .../ol-render-node-insert-last-ref.html | 8 ++ ...render-node-insert-no-child-group-ref.html | 17 +++ .../ol-render-node-insert-no-child-ref.html | 9 ++ .../expected/ol-render-node-prepend-ref.html | 15 +++ .../expected/ol-render-node-remove-ref.html | 11 ++ .../Ref/input/ol-render-multiple-changes.html | 100 ++++++++++++++++++ .../input/ol-render-node-append-group.html | 26 +++++ .../Ref/input/ol-render-node-append.html | 26 +++++ ...render-node-insert-before-child-group.html | 38 +++++++ .../ol-render-node-insert-before-child.html | 38 +++++++ ...nder-node-insert-existing-child-group.html | 46 ++++++++ .../ol-render-node-insert-existing-child.html | 38 +++++++ .../ol-render-node-insert-first-group.html | 39 +++++++ .../input/ol-render-node-insert-first.html | 39 +++++++ .../ol-render-node-insert-last-group.html | 27 +++++ .../Ref/input/ol-render-node-insert-last.html | 27 +++++ .../ol-render-node-insert-no-child-group.html | 32 ++++++ .../input/ol-render-node-insert-no-child.html | 32 ++++++ .../Ref/input/ol-render-node-prepend.html | 36 +++++++ .../ol-render-node-remove-child-group.html | 42 ++++++++ .../input/ol-render-node-remove-child.html | 34 ++++++ .../input/ol-render-node-remove-first.html | 32 ++++++ .../Ref/input/ol-render-node-remove.html | 32 ++++++ ...render-node-append-group-reversed-ref.html | 7 ++ .../ol-render-node-append-reversed-ref.html | 7 ++ ...r-node-insert-last-group-reversed-ref.html | 7 ++ ...-render-node-insert-last-reversed-ref.html | 7 ++ ...-render-node-append-group-reversed-ref.png | Bin 0 -> 8345 bytes .../ol-render-node-append-reversed-ref.png | Bin 0 -> 7071 bytes ...er-node-insert-last-group-reversed-ref.png | Bin 0 -> 8345 bytes ...l-render-node-insert-last-reversed-ref.png | Bin 0 -> 7071 bytes .../ol-render-node-append-group-reversed.html | 26 +++++ .../input/ol-render-node-append-reversed.html | 26 +++++ ...ender-node-insert-last-group-reversed.html | 27 +++++ .../ol-render-node-insert-last-reversed.html | 27 +++++ 45 files changed, 1068 insertions(+) create mode 100644 Tests/LibWeb/Ref/expected/ol-render-multiple-changes-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-append-group-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-append-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-before-child-group-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-before-child-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-existing-child-group-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-existing-child-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-first-group-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-first-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-last-group-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-last-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-no-child-group-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-insert-no-child-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-prepend-ref.html create mode 100644 Tests/LibWeb/Ref/expected/ol-render-node-remove-ref.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-multiple-changes.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-append-group.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-append.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-before-child-group.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-before-child.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-existing-child-group.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-existing-child.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-first-group.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-first.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-last-group.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-last.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-no-child-group.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-insert-no-child.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-prepend.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-remove-child-group.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-remove-child.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-remove-first.html create mode 100644 Tests/LibWeb/Ref/input/ol-render-node-remove.html create mode 100644 Tests/LibWeb/Screenshot/expected/ol-render-node-append-group-reversed-ref.html create mode 100644 Tests/LibWeb/Screenshot/expected/ol-render-node-append-reversed-ref.html create mode 100644 Tests/LibWeb/Screenshot/expected/ol-render-node-insert-last-group-reversed-ref.html create mode 100644 Tests/LibWeb/Screenshot/expected/ol-render-node-insert-last-reversed-ref.html create mode 100644 Tests/LibWeb/Screenshot/images/ol-render-node-append-group-reversed-ref.png create mode 100644 Tests/LibWeb/Screenshot/images/ol-render-node-append-reversed-ref.png create mode 100644 Tests/LibWeb/Screenshot/images/ol-render-node-insert-last-group-reversed-ref.png create mode 100644 Tests/LibWeb/Screenshot/images/ol-render-node-insert-last-reversed-ref.png create mode 100644 Tests/LibWeb/Screenshot/input/ol-render-node-append-group-reversed.html create mode 100644 Tests/LibWeb/Screenshot/input/ol-render-node-append-reversed.html create mode 100644 Tests/LibWeb/Screenshot/input/ol-render-node-insert-last-group-reversed.html create mode 100644 Tests/LibWeb/Screenshot/input/ol-render-node-insert-last-reversed.html diff --git a/Tests/LibWeb/Ref/expected/ol-render-multiple-changes-ref.html b/Tests/LibWeb/Ref/expected/ol-render-multiple-changes-ref.html new file mode 100644 index 00000000000..7d9ec19df02 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-multiple-changes-ref.html @@ -0,0 +1,58 @@ + + +
    +
  1. 1
  2. + +
  3. 2
  4. +
    +
  5. 3
  6. + +
  7. 4
  8. +
    +
    +
      +
      +
    1. 20
    2. +
    3. 19
    4. +
      +

      + +

    5. 18
    6. + +

      +
    7. 17
    8. +
    9. 16
    10. +
    11. 15
    12. +
    +
    +
    +
      +
    1. 30
    2. +
      +
    3. 31
    4. +
      +
      +
    5. 32
    6. +
    7. 33
    8. +
    9. 34
    10. +
      +
        +
      1. 40
      2. +
        41
        +
        + 42 +
        +

        43

        +
      +
      +
    11. 35
    12. + +
      +
    13. 36
    14. +
    15. 37
    16. +
      +
    +
  9. 5
  10. +
  11. 6
  12. +
+ diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-append-group-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-append-group-ref.html new file mode 100644 index 00000000000..29794191b0f --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-append-group-ref.html @@ -0,0 +1,13 @@ + + + +
    +
  1. One
  2. +
  3. Two
  4. +
    +
  5. Three
  6. +
  7. Four
  8. +
    +
+ + diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-append-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-append-ref.html new file mode 100644 index 00000000000..578452f14a3 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-append-ref.html @@ -0,0 +1,10 @@ + + + +
    +
  1. One
  2. +
  3. Two
  4. +
  5. Three
  6. +
+ + diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-before-child-group-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-before-child-group-ref.html new file mode 100644 index 00000000000..5c6309fc65b --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-before-child-group-ref.html @@ -0,0 +1,19 @@ + + +
    +
  1. One
  2. +
    +
  3. Two
  4. +
  5. Three
  6. +
    +
  7. Four
  8. +
+
    +
  1. Four
  2. +
    +
  3. Three
  4. +
  5. Two
  6. +
    +
  7. One
  8. +
+ diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-before-child-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-before-child-ref.html new file mode 100644 index 00000000000..ed0a35825d5 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-before-child-ref.html @@ -0,0 +1,13 @@ + + +
    +
  1. One
  2. +
  3. Two
  4. +
  5. Three
  6. +
+
    +
  1. Three
  2. +
  3. Two
  4. +
  5. One
  6. +
+ diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-existing-child-group-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-existing-child-group-ref.html new file mode 100644 index 00000000000..d969305f3f5 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-existing-child-group-ref.html @@ -0,0 +1,21 @@ + + +
    +
  1. One
  2. +
  3. Two
  4. +
    +
  5. Three
  6. +
  7. Four
  8. +
    +
  9. Five
  10. +
+
    +
  1. Five
  2. +
  3. Four
  4. +
    +
  5. Three
  6. +
  7. Two
  8. +
    +
  9. One
  10. +
+ diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-existing-child-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-existing-child-ref.html new file mode 100644 index 00000000000..ed0a35825d5 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-existing-child-ref.html @@ -0,0 +1,13 @@ + + +
    +
  1. One
  2. +
  3. Two
  4. +
  5. Three
  6. +
+
    +
  1. Three
  2. +
  3. Two
  4. +
  5. One
  6. +
+ diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-first-group-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-first-group-ref.html new file mode 100644 index 00000000000..783dedf9276 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-first-group-ref.html @@ -0,0 +1,19 @@ + + +
    +
    +
  1. One
  2. +
  3. Two
  4. +
    +
  5. Three
  6. +
  7. Four
  8. +
+
    +
    +
  1. Four
  2. +
  3. Three
  4. +
    +
  5. Two
  6. +
  7. One
  8. +
+ diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-first-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-first-ref.html new file mode 100644 index 00000000000..ed0a35825d5 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-first-ref.html @@ -0,0 +1,13 @@ + + +
    +
  1. One
  2. +
  3. Two
  4. +
  5. Three
  6. +
+
    +
  1. Three
  2. +
  3. Two
  4. +
  5. One
  6. +
+ diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-last-group-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-last-group-ref.html new file mode 100644 index 00000000000..75e4023fa72 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-last-group-ref.html @@ -0,0 +1,11 @@ + + +
    +
  1. One
  2. +
  3. Two
  4. +
    +
  5. Three
  6. +
  7. Four
  8. +
    +
+ diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-last-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-last-ref.html new file mode 100644 index 00000000000..b3d19306ba3 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-last-ref.html @@ -0,0 +1,8 @@ + + +
    +
  1. One
  2. +
  3. Two
  4. +
  5. Three
  6. +
+ diff --git a/Tests/LibWeb/Ref/expected/ol-render-node-insert-no-child-group-ref.html b/Tests/LibWeb/Ref/expected/ol-render-node-insert-no-child-group-ref.html new file mode 100644 index 00000000000..0a47dbb4337 --- /dev/null +++ b/Tests/LibWeb/Ref/expected/ol-render-node-insert-no-child-group-ref.html @@ -0,0 +1,17 @@ + + +
    +
    +
  1. One
  2. +
  3. Two
  4. +
  5. Three
  6. +
    +
+
    +
    +
  1. Three
  2. +
  3. Two
  4. +
  5. One
  6. +
    +
+ 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 @@ + + +
    +
  1. One
  2. +
+
    +
  1. One
  2. +
+ 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 @@ + + + +
    +
  1. One
  2. +
  3. Two
  4. +
  5. Three
  6. +
+
    +
  1. Three
  2. +
  3. Two
  4. +
  5. One
  6. +
+ + 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 @@ + + +
    +
  1. One
  2. +
  3. Two
  4. +
+
    +
  1. Two
  2. +
  3. One
  4. +
+ 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. 1
  2. +
  3. x
  4. + +
  5. 2
  6. +
    +
  7. 3
  8. +
    +
  9. y
  10. +
  11. z
  12. +
    + +
  13. 4
  14. +
    +
    +
      + +

      + +

    1. 18
    2. + +

      +
    3. 17
    4. + + +
    +
    +
    +
      +
    1. 30
    2. +
      +
    3. 31
    4. +
      +
      +
    5. 32
    6. +
    7. 33
    8. +
    9. 34
    10. +
      +
        +
      1. 40
      2. +
        41
        +

        43

        +
      +
      + 42 +
      +
      +
    11. 35
    12. +
      + U +
      + +
    13. 36
    14. +
    15. 37
    16. +
      +
    +
  15. 5
  16. +
  17. 6
  18. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
  3. Two
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
  3. Two
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
  3. Four
  4. +
+
    +
  1. Four
  2. +
  3. One
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
  3. Three
  4. +
+
    +
  1. Three
  2. +
  3. One
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
    +
  3. Three
  4. +
  5. Four
  6. +
    +
  7. Two
  8. +
  9. Five
  10. +
+
    +
  1. Five
  2. +
    +
  3. Three
  4. +
  5. Two
  6. +
    +
  7. Four
  8. +
  9. One
  10. +
+ + + 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 @@ + + + + + + +
    +
  1. Two
  2. +
  3. One
  4. +
  5. Three
  6. +
+
    +
  1. Three
  2. +
  3. One
  4. +
  5. Two
  6. +
+ + + 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 @@ + + + + + + +
    +
  1. Three
  2. +
  3. Four
  4. +
+
    +
  1. Two
  2. +
  3. One
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. Two
  2. +
  3. Three
  4. +
+
    +
  1. Two
  2. +
  3. One
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
  3. Two
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
  3. Two
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. Two
  2. +
  3. Three
  4. +
+
    +
  1. Two
  2. +
  3. One
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
    +
  3. x
  4. +
  5. y
  6. +
  7. z
  8. +
    +
  9. Two
  10. +
+
    +
  1. Two
  2. +
    +
  3. z
  4. +
  5. y
  6. +
  7. x
  8. +
    +
  9. One
  10. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
  3. X1
  4. +
  5. Two
  6. +
+
    +
  1. Two
  2. +
  3. X2
  4. +
  5. One
  6. +
+ + + 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 @@ + + + + + + +
    +
  1. X1
  2. +
  3. One
  4. +
  5. Two
  6. +
+
    +
  1. X2
  2. +
  3. Two
  4. +
  5. One
  6. +
+ + + 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 @@ + + + + + + +
    +
  1. One
  2. +
  3. X1
  4. +
  5. Two
  6. +
+
    +
  1. Two
  2. +
  3. X2
  4. +
  5. One
  6. +
+ + + 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 0000000000000000000000000000000000000000..28e9de31c677d091ae2195451d732401a3a2e5bd GIT binary patch literal 8345 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 Ddkh`x literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7b819e7add2604d9fd5d8a3c818e37ecf72a828e GIT binary patch literal 7071 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 D^&hm! literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..28e9de31c677d091ae2195451d732401a3a2e5bd GIT binary patch literal 8345 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 Ddkh`x literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7b819e7add2604d9fd5d8a3c818e37ecf72a828e GIT binary patch literal 7071 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 D^&hm! literal 0 HcmV?d00001 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 @@ + + + + + + +
    +
  1. Four
  2. +
  3. Three
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. Three
  2. +
  3. Two
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. Four
  2. +
  3. Three
  4. +
+ + + 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 @@ + + + + + + +
    +
  1. Three
  2. +
  3. Two
  4. +
+ + +