summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-break/table
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
commit43a97878ce14b72f0981164f87f2e35e14151312 (patch)
tree620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/css/css-break/table
parentInitial commit. (diff)
downloadfirefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz
firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/css-break/table')
-rw-r--r--testing/web-platform/tests/css/css-break/table/border-spacing-at-breaks.tentative.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/border-spacing.html34
-rw-r--r--testing/web-platform/tests/css/css-break/table/bottom-padding-repeated-header-crash.html9
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-after-table-cell-child.html13
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-after-table-cell.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-avoidance-001.html16
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-avoidance-002.html20
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-avoidance-003.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-avoidance-004.html16
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-avoidance-005.html20
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-avoidance-006.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-avoidance-007.html16
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-avoidance-in-table-in-grid.html20
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-before-expansion-001.html14
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-before-expansion-002.html14
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-before-repeated-footer-instead-of-border-crash.html10
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-before-second-row.html19
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-before-table-cell-child.html13
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-before-table-cell.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-inside-cell-000.html24
-rw-r--r--testing/web-platform/tests/css/css-break/table/break-inside-cell-001.html32
-rw-r--r--testing/web-platform/tests/css/css-break/table/caption-bottom-margin-at-boundary-crash.html8
-rw-r--r--testing/web-platform/tests/css/css-break/table/caption-margin-001.html14
-rw-r--r--testing/web-platform/tests/css/css-break/table/caption-margin-002.html16
-rw-r--r--testing/web-platform/tests/css/css-break/table/caption-margin-003.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/caption-margin-004.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/dynamic-caption-child-change-001.html19
-rw-r--r--testing/web-platform/tests/css/css-break/table/dynamic-caption-child-change-002-crash.html18
-rw-r--r--testing/web-platform/tests/css/css-break/table/final-border-spacing-at-fragmentainer-boundary.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/overflow-scroll-row.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/overflow-scroll-section.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/abspos-in-monolithic.tentative.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained-text-ref.html4
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained-text.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained.tentative.html14
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/abspos.tentative.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/balanced-inner-multicol-ref.html23
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/balanced-inner-multicol.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/block-in-inline.tentative.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-001-crash.html9
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-002-crash.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-003-crash.html9
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/break-avoidance-in-bottom-caption.tentative.html28
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/captions.tentative.html18
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/footer.tentative.html13
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/header-after-break.tentative.html24
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/header-footer.tentative.html16
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/header.tentative.html13
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/hit-test-relative-in-transform.tentative.html29
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/hit-test-relative.tentative.html27
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/hit-test.tentative.html26
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/image.tentative.html38
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/inline-block.tentative.html13
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/multicol.tentative.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/multiple-row-groups.tentative.html24
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/nested-repeated-header-crash.html33
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/repeated-header-border-spacing.tentative.html19
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/special-elements-crash.html105
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/tall-monolithic-after-repeated-header.tentative.html17
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001-ref.html17
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001.html20
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002-ref.html12
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002.html21
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-003-crash.html23
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-004-crash.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-005-crash.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-006-crash.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/section-with-overflow-000.html24
-rw-r--r--testing/web-platform/tests/css/css-break/table/section-with-overflow-001.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/section-with-overflow-002.html41
-rw-r--r--testing/web-platform/tests/css/css-break/table/sections-and-captions-mixed-order-ref.html42
-rw-r--r--testing/web-platform/tests/css/css-break/table/sections-and-captions-mixed-order.html25
-rw-r--r--testing/web-platform/tests/css/css-break/table/specified-block-size-001.html10
-rw-r--r--testing/web-platform/tests/css/css-break/table/specified-block-size-002.html9
-rw-r--r--testing/web-platform/tests/css/css-break/table/specified-block-size-003.html10
-rw-r--r--testing/web-platform/tests/css/css-break/table/specified-block-size-004.html10
-rw-r--r--testing/web-platform/tests/css/css-break/table/specified-block-size-005.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/specified-block-size-006.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/specified-block-size-007-ref.html8
-rw-r--r--testing/web-platform/tests/css/css-break/table/specified-block-size-007.html16
-rw-r--r--testing/web-platform/tests/css/css-break/table/specified-block-size-008.html10
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-000.html10
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-001.html20
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-002.html18
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-003.html18
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-004.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-005.html17
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-006.html17
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-007-ref.html6
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-007.html9
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-008-ref.html15
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-border-008.html12
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-caption-and-cells-fixed-width-ref.html7
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-caption-and-cells-fixed-width.html14
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-caption-and-cells-ref.html7
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-caption-and-cells.html14
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-caption-with-block-ref.html6
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-caption-with-block.html13
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-001.html10
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-002.html9
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-003.html12
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-004.html21
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-005.html21
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-006.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-007.html14
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-008.html23
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-009.html23
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-cell-expansion-010.html25
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-col-paint-htb-ltr-ref.html25
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-col-paint-htb-ltr.html35
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-col-paint-vlr-rtl-ref.html29
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-col-paint-vlr-rtl.html39
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-col-paint-vrl-rtl-ref.html29
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-col-paint-vrl-rtl.html39
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-at-boundary-ref.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-at-boundary.tentative.html39
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr-ref.html19
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr.html36
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl-ref.html23
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl.html40
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr-ref.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr.html39
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-grid-paint-htb-ltr-ref.html18
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-grid-paint-htb-ltr.html23
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-grid-paint-vlr-rtl-ref.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-grid-paint-vlr-rtl.html27
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-grid-paint-vrl-rtl-ref.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-grid-paint-vrl-rtl.html27
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html10
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-parts-offsetheight.html29
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-row-end-border-1-crash.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-row-end-border-2-crash.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-row-end-padding-crash.html11
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-row-paint-htb-ltr-ref.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-row-paint-htb-ltr.html30
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-row-paint-vlr-rtl-ref.html26
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-row-paint-vlr-rtl.html34
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-row-paint-vrl-rtl-ref.html26
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-row-paint-vrl-rtl.html34
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-section-paint-htb-ltr-ref.html22
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-section-paint-htb-ltr.html32
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-section-paint-vlr-rtl-ref.html26
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-section-paint-vlr-rtl.html36
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-section-paint-vrl-rtl-ref.html26
-rw-r--r--testing/web-platform/tests/css/css-break/table/table-section-paint-vrl-rtl.html36
-rw-r--r--testing/web-platform/tests/css/css-break/table/tall-bottom-aligned-cell-with-bottom-padding.html14
-rw-r--r--testing/web-platform/tests/css/css-break/table/tall-padding-crash.html9
-rw-r--r--testing/web-platform/tests/css/css-break/table/truncated-border-spacing-at-fragmentainer-end.html14
-rw-r--r--testing/web-platform/tests/css/css-break/table/zero-height-repeated-footer-crash.html10
149 files changed, 2948 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-break/table/border-spacing-at-breaks.tentative.html b/testing/web-platform/tests/css/css-break/table/border-spacing-at-breaks.tentative.html
new file mode 100644
index 0000000000..67588f28b0
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/border-spacing-at-breaks.tentative.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; width:100%; border-spacing:0 10px;">
+ <div style="display:table-row;">
+ <div style="width:100%; height:85px; background:green;"></div>
+ </div>
+ <div style="display:table-row;">
+ <div style="width:25px; height:100px; background:green;">
+ <div style="margin-left:-25px; width:25px; height:10px; background:green;"></div>
+ <div style="height:85px;"></div>
+ <div style="margin-left:-25px; width:25px; height:5px; background:green;"></div>
+ </div>
+ </div>
+ <div style="display:table-row-group;">
+ <div style="width:25px; height:200px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/border-spacing.html b/testing/web-platform/tests/css/css-break/table/border-spacing.html
new file mode 100644
index 0000000000..fc5e87e35d
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/border-spacing.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=534751">
+<style>
+ .cell > div { background:white; }
+</style>
+<p>No red should be seen below.</p>
+<div id="multicol" style="columns:2; column-fill:auto; height:70px; width:200px; line-height:20px;">
+ <div style="position:relative; display:table; border-spacing:10px;">
+ <div class="cell" style="display:table-cell; width:30px; background:red;">
+ <div id="child1">1<br></div>
+ <div id="child2">2<br></div>
+ <div id="child3">3<br></div>
+ <div id="child4">4<br></div>
+ <div id="child5">5<br></div>
+ </div>
+ </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ test(() => {
+ assert_equals(document.getElementById("child1").offsetTop, 10);
+ assert_equals(document.getElementById("child1").offsetHeight, 20);
+ assert_equals(document.getElementById("child2").offsetTop, 30);
+ assert_equals(document.getElementById("child2").offsetHeight, 20);
+ assert_equals(document.getElementById("child3").offsetTop, 50);
+ assert_equals(document.getElementById("child3").offsetHeight, 20);
+ assert_equals(document.getElementById("child4").offsetTop, 70);
+ assert_equals(document.getElementById("child4").offsetHeight, 20);
+ assert_equals(document.getElementById("child5").offsetTop, 90);
+ assert_equals(document.getElementById("child5").offsetHeight, 20);
+ }, "Table with border spacing");
+</script>
diff --git a/testing/web-platform/tests/css/css-break/table/bottom-padding-repeated-header-crash.html b/testing/web-platform/tests/css/css-break/table/bottom-padding-repeated-header-crash.html
new file mode 100644
index 0000000000..e9c567d3b6
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/bottom-padding-repeated-header-crash.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1356236">
+<div style="columns:2; column-fill:auto; height:100px;">
+ <div style="display:table; padding-bottom:101px;">
+ <div style="display:table-caption;"></div>
+ <div style="display:table-header-group; break-inside:avoid;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-after-table-cell-child.html b/testing/web-platform/tests/css/css-break/table/break-after-table-cell-child.html
new file mode 100644
index 0000000000..60e0924892
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-after-table-cell-child.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#forced-breaks">
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="columns: 2; column-fill: auto; gap: 0; width: 100px; height: 200px;">
+ <div style="background: green; height: 100px; width: 100%; display: table; break-after: avoid;">
+ <div style="display: table-cell;">
+ <div style="break-after: column;"></div> <!-- Should be propagated to the outer table. -->
+ </div>
+ <div style="display: table-cell;"></div>
+ </div>
+ <div style="background: green; height: 100px;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-after-table-cell.html b/testing/web-platform/tests/css/css-break/table/break-after-table-cell.html
new file mode 100644
index 0000000000..8f7e1ba1f3
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-after-table-cell.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#forced-breaks">
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="columns: 2; column-fill: auto; gap: 0; width: 100px; height: 200px;">
+ <div style="background: green; height: 100px; width: 100%; display: table; break-after: avoid;">
+ <div style="display: table-cell; break-after: column;"></div> <!-- Should be propagated to the outer table. -->
+ <div style="display: table-cell;"></div>
+ </div>
+ <div style="background: green; height: 100px;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-avoidance-001.html b/testing/web-platform/tests/css/css-break/table/break-avoidance-001.html
new file mode 100644
index 0000000000..6dc765c82a
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-avoidance-001.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<style>
+table { border-spacing: 0; }
+td { padding: 0; break-inside: avoid; }
+</style>
+<div style="columns: 2; height: 100px; width: 100px; gap: 0; background: red; position: relative;">
+ <table>
+ <tr><td style="height: 50px; width: 50px; background: green;"></td></tr> <!-- We should have a column break after this row. -->
+ <tr><td style="height: 50px; width: 50px; background: green;"></td></tr>
+ <tr><td style="height: 50px; width: 50px; background: green; break-before: avoid;"></td></tr>
+ </table>
+ <div style="position: absolute; height: 50px; width: 50px; bottom: 0; left: 0; background: green;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-avoidance-002.html b/testing/web-platform/tests/css/css-break/table/break-avoidance-002.html
new file mode 100644
index 0000000000..25c4496e92
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-avoidance-002.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<style>
+table { border-spacing: 0; }
+td { padding: 0; break-inside: avoid; }
+</style>
+<div style="columns: 2; height: 100px; width: 100px; gap: 0; background: red; position: relative;">
+ <table>
+ <tbody>
+ <tr><td style="height: 50px; width: 50px; background: green;"></td></tr> <!-- We should have a column break after this row. -->
+ </tbody>
+ <tbody>
+ <tr><td style="height: 50px; width: 50px; background: green;"></td></tr>
+ <tr><td style="height: 50px; width: 50px; background: green; break-before: avoid;"></td></tr>
+ </tbody>
+ </table>
+ <div style="position: absolute; height: 50px; width: 50px; bottom: 0; left: 0; background: green;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-avoidance-003.html b/testing/web-platform/tests/css/css-break/table/break-avoidance-003.html
new file mode 100644
index 0000000000..e09eaccfa4
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-avoidance-003.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<style>
+table { border-spacing: 0; }
+td { padding: 0; break-inside: avoid; }
+</style>
+<div style="columns: 2; height: 100px; width: 100px; gap: 0; background: red; position: relative;">
+ <table style="background: green;">
+ <tr><td style="height: 50px; width: 50px;"></td></tr> <!-- We should have a column break after this row. -->
+ <tr><td style="height: 50px; width: 50px;"></td></tr>
+ <tr><td style="height: 50px; width: 50px; break-before: avoid;"></td></tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-avoidance-004.html b/testing/web-platform/tests/css/css-break/table/break-avoidance-004.html
new file mode 100644
index 0000000000..e8eb516fec
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-avoidance-004.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<style>
+table { border-spacing: 0; }
+td { padding: 0; break-inside: avoid; }
+</style>
+<div style="columns: 2; height: 100px; width: 100px; gap: 0; background: red; position: relative;">
+ <table>
+ <tbody><tr><td style="height: 50px; width: 50px; background: green;"></td></tr></tbody> <!-- We should have a column break after this section. -->
+ <tbody><tr><td style="height: 50px; width: 50px; background: green;"></td></tr></tbody>
+ <tbody><tr><td style="height: 50px; width: 50px; background: green; break-before: avoid;"></td></tr></tbody>
+ </table>
+ <div style="position: absolute; height: 50px; width: 50px; bottom: 0; left: 0; background: green;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-avoidance-005.html b/testing/web-platform/tests/css/css-break/table/break-avoidance-005.html
new file mode 100644
index 0000000000..a9d53e2455
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-avoidance-005.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<style>
+table { border-spacing: 0; }
+td { padding: 0; break-inside: avoid; }
+</style>
+<div style="columns: 2; height: 100px; width: 100px; gap: 0; background: red; position: relative;">
+ <table>
+ <tbody>
+ <tr><td style="height: 50px; width: 50px; background: green;"></td></tr> <!-- We should have a column break after this row. -->
+ <tr><td style="height: 50px; width: 50px; background: green;"></td></tr>
+ </tbody>
+ <tbody>
+ <tr><td style="height: 50px; width: 50px; background: green; break-before: avoid;"></td></tr>
+ </tbody>
+ </table>
+ <div style="position: absolute; height: 50px; width: 50px; bottom: 0; left: 0; background: green;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-avoidance-006.html b/testing/web-platform/tests/css/css-break/table/break-avoidance-006.html
new file mode 100644
index 0000000000..b8dc0f4144
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-avoidance-006.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<style>
+table { border-spacing: 0; }
+td { padding: 0; break-inside: avoid; }
+</style>
+<div style="columns: 2; height: 100px; width: 100px; gap: 0; background: red; position: relative;">
+ <table style="background: green;">
+ <tbody><tr><td style="height: 50px; width: 50px;"></td></tr></tbody> <!-- We should have a column break after this section. -->
+ <tbody><tr><td style="height: 50px; width: 50px;"></td></tr></tbody>
+ <tbody><tr><td style="height: 50px; width: 50px; break-before: avoid;"></td></tr></tbody>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-avoidance-007.html b/testing/web-platform/tests/css/css-break/table/break-avoidance-007.html
new file mode 100644
index 0000000000..4429edb2c8
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-avoidance-007.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width:100px; height:100px; background:red;">
+ <div style="columns:2; gap:0; column-fill:auto; line-height:20px; height:250px;">
+ <div style="display:table-caption;">
+ <div style="contain:size; width:50px; height:100px; background:green;"></div>
+ <div style="contain:size; width:50px; height:100px; background:green;"></div>
+ </div>
+ <div style="break-before:avoid;">
+ <div style="contain:size; width:10px; height:100px;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-avoidance-in-table-in-grid.html b/testing/web-platform/tests/css/css-break/table/break-avoidance-in-table-in-grid.html
new file mode 100644
index 0000000000..6250ea7e6d
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-avoidance-in-table-in-grid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#break-between">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width:100px; height:100px; background:red;">
+ <div style="columns:2; gap:0; column-fill:auto; height:150px;">
+ <div style="display:grid;">
+ <div style="height:100px; background:green;"></div>
+ <div>
+ <div style="contain:size; height:40px; background:green;"></div>
+ </div>
+ <div>
+ <div style="display:table; width:100%;">
+ <div style="break-before:avoid; contain:size; height:60px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-before-expansion-001.html b/testing/web-platform/tests/css/css-break/table/break-before-expansion-001.html
new file mode 100644
index 0000000000..1f10eb59f5
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-before-expansion-001.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<style>
+table { border-spacing: 0; }
+td { padding: 0; }
+</style>
+<div style="columns: 2; height: 100px; width: 100px; gap: 0; background: red; position: relative;">
+ <table style="background: green;">
+ <tr><td style="height: 50px; width: 50px;"></td></tr> <!-- We should have a column break after this row. -->
+ <tr><td style="height: 100px; width: 50px; break-before: column;"></td></tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-before-expansion-002.html b/testing/web-platform/tests/css/css-break/table/break-before-expansion-002.html
new file mode 100644
index 0000000000..6c413caa7e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-before-expansion-002.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<style>
+table { border-spacing: 0; }
+td { padding: 0; }
+</style>
+<div style="columns: 2; height: 100px; width: 100px; gap: 0; background: red; position: relative;">
+ <table style="background: green;">
+ <tbody><tr><td style="height: 50px; width: 50px;"></td></tr></tbody> <!-- We should have a column break after this section. -->
+ <tbody><tr><td style="height: 100px; width: 50px; break-before: column;"></td></tr></tbody>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-before-repeated-footer-instead-of-border-crash.html b/testing/web-platform/tests/css/css-break/table/break-before-repeated-footer-instead-of-border-crash.html
new file mode 100644
index 0000000000..b277001f4d
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-before-repeated-footer-instead-of-border-crash.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1353998">
+<div style="columns:3; column-fill:auto; height:100px;">
+ <div style="height:70px;"></div>
+ <div style="display:table; border-bottom:40px solid;">
+ <div></div>
+ <div style="display:table-footer-group; break-inside:avoid;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-before-second-row.html b/testing/web-platform/tests/css/css-break/table/break-before-second-row.html
new file mode 100644
index 0000000000..3a8d307aa5
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-before-second-row.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
+<link rel="help" href="https://www.w3.org/TR/CSS22/tables.html#table-display">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-gap:0; column-fill:auto; line-height:20px; width:100px; height:100px; background:green;">
+ <div style="height:40px;"></div>
+ <div style="position:relative; z-index:-1; display:table; border-spacing:0 20px; width:100%; background:red;">
+ <div style="display:table-row;">
+ <br>
+ </div>
+ <div style="display:table-row;">
+ <div style="height:80px; background:red;">
+ <br>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-before-table-cell-child.html b/testing/web-platform/tests/css/css-break/table/break-before-table-cell-child.html
new file mode 100644
index 0000000000..3f07edf9ae
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-before-table-cell-child.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#forced-breaks">
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="columns: 2; column-fill: auto; gap: 0; width: 100px; height: 200px;">
+ <div style="background: green; height: 100px;"></div>
+ <div style="background: green; height: 100px; width: 100%; display: table; break-before: avoid;">
+ <div style="display: table-cell;"></div>
+ <div style="display: table-cell;">
+ <div style="break-before: column;"></div> <!-- Should be propagated to the outer table. -->
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-before-table-cell.html b/testing/web-platform/tests/css/css-break/table/break-before-table-cell.html
new file mode 100644
index 0000000000..1d50080f76
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-before-table-cell.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#forced-breaks">
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="columns: 2; column-fill: auto; gap: 0; width: 100px; height: 200px;">
+ <div style="background: green; height: 100px;"></div>
+ <div style="background: green; height: 100px; width: 100%; display: table; break-before: avoid;">
+ <div style="display: table-cell;"></div>
+ <div style="display: table-cell; break-before: column;"></div> <!-- Should be propagated to the outer table. -->
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-inside-cell-000.html b/testing/web-platform/tests/css/css-break/table/break-inside-cell-000.html
new file mode 100644
index 0000000000..2982eed1e8
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-inside-cell-000.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
+<link rel="help" href="https://www.w3.org/TR/CSS22/tables.html#table-display">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-gap:0; column-fill:auto; line-height:20px; width:100px; height:100px; background:red;">
+ <div style="height:40px; background:green;"></div>
+ <div style="display:table; width:100%; background:red;">
+ <div style="display:table-cell; vertical-align:top; background:green;">
+ <br>
+ </div>
+ <div style="display:table-cell; vertical-align:top; background:green;">
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/break-inside-cell-001.html b/testing/web-platform/tests/css/css-break/table/break-inside-cell-001.html
new file mode 100644
index 0000000000..cd55f46889
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/break-inside-cell-001.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#unforced-breaks">
+<link rel="help" href="https://www.w3.org/TR/CSS22/tables.html#table-display">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-gap:0; column-fill:auto; line-height:20px; width:100px; height:100px; background:red;">
+ <div style="display:table; width:100%; background:red;">
+ <div style="display:table-row;">
+ <div style="display:table-cell; vertical-align:top; background:green;">
+ <br>
+ <br>
+ </div>
+ <div style="display:table-cell; vertical-align:top; background:green;"></div>
+ </div>
+ <div style="display:table-row;">
+ <div style="display:table-cell; vertical-align:top; background:green;">
+ <br>
+ </div>
+ <div style="display:table-cell; vertical-align:top; background:green;">
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ <br>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/caption-bottom-margin-at-boundary-crash.html b/testing/web-platform/tests/css/css-break/table/caption-bottom-margin-at-boundary-crash.html
new file mode 100644
index 0000000000..edca663567
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/caption-bottom-margin-at-boundary-crash.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1353558">
+<div style="columns:2; column-fill:auto; line-height:20px; height:42px;">
+ <div style="display:table-caption; margin-bottom:10px;">
+ <br><br>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/caption-margin-001.html b/testing/web-platform/tests/css/css-break/table/caption-margin-001.html
new file mode 100644
index 0000000000..cb2746ef15
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/caption-margin-001.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="height:50px; background:green;"></div>
+ <div style="display:table-caption; margin-top:-30px;">
+ <div style="width:50px;">
+ <div style="height:30px;"></div>
+ <div style="height:150px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/caption-margin-002.html b/testing/web-platform/tests/css/css-break/table/caption-margin-002.html
new file mode 100644
index 0000000000..3bb06bde1d
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/caption-margin-002.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width:100px; height:100px; background:red;">
+ <div style="columns:2; gap:0; column-fill:auto; height:150px;">
+ <div style="height:100px; background:green;"></div>
+ <div style="display:table;">
+ <div style="display:table-caption;"></div>
+ <!-- We want a break opportunity before the second caption inside the
+ table, which is why we need another empty caption before it. -->
+ <div style="display:table-caption; margin-top:200px; contain:size; width:50px; height:100px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/caption-margin-003.html b/testing/web-platform/tests/css/css-break/table/caption-margin-003.html
new file mode 100644
index 0000000000..e591c9e058
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/caption-margin-003.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table;">
+ <div style="display:table-caption; margin-bottom:20px; width:50px; height:50px; background:green;"></div>
+ <div style="margin-top:-20px; width:50px; height:150px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/caption-margin-004.html b/testing/web-platform/tests/css/css-break/table/caption-margin-004.html
new file mode 100644
index 0000000000..5c70c70728
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/caption-margin-004.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width:100px; height:100px; background:red;">
+ <div style="columns:2; gap:0; column-fill:auto; height:150px;">
+ <div style="display:table-caption; caption-side:bottom; margin-bottom:50px; width:50px; height:100px; background:green;"></div>
+ <div style="height:100px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/dynamic-caption-child-change-001.html b/testing/web-platform/tests/css/css-break/table/dynamic-caption-child-change-001.html
new file mode 100644
index 0000000000..c57f412016
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/dynamic-caption-child-change-001.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1379473">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-fill:auto; height:500px;">
+ <div style="display:table-caption; overflow:hidden;">
+ <span>
+ <div style="display:inline-block; width:100px; height:100px; background:red;">
+ <div id="target" style="width:0px; height:100px; background:green;"></div>
+ </div>
+ &nbsp;
+ </span>
+ </div>
+</div>
+<script>
+ document.body.offsetTop;
+ target.style.width = "100px";
+</script>
diff --git a/testing/web-platform/tests/css/css-break/table/dynamic-caption-child-change-002-crash.html b/testing/web-platform/tests/css/css-break/table/dynamic-caption-child-change-002-crash.html
new file mode 100644
index 0000000000..983f8bb95b
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/dynamic-caption-child-change-002-crash.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1379473">
+<div style="columns:2; column-fill:auto; height:500px;">
+ <div style="display:table-caption; overflow:hidden;">
+ <span>
+ <div style="display:inline-block;">
+ <div id="target"></div>
+ <div style="width:300px; height:150px;"></div>
+ </div>
+ x
+ </span>
+ </div>
+</div>
+<script>
+ document.body.offsetTop;
+ target.style.display = "none";
+</script>
diff --git a/testing/web-platform/tests/css/css-break/table/final-border-spacing-at-fragmentainer-boundary.html b/testing/web-platform/tests/css/css-break/table/final-border-spacing-at-fragmentainer-boundary.html
new file mode 100644
index 0000000000..2e0540d745
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/final-border-spacing-at-fragmentainer-boundary.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p style="position:relative; z-index:1;">Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="display:flow-root; margin-top:-20px;">
+ <div style="position:relative; height:20px; background:white;"></div>
+ <div style="width:100px; overflow-x:clip;">
+ <div style="columns:2; gap:0; column-fill:auto; width:200px; height:100px;">
+ <div style="display:table; margin-top:-20px; border-spacing:0 20px; background:red;">
+ <div style="width:100px; height:100px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/overflow-scroll-row.html b/testing/web-platform/tests/css/css-break/table/overflow-scroll-row.html
new file mode 100644
index 0000000000..8ed379e5dd
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/overflow-scroll-row.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1365306">
+<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#overflow-properties">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="height:30px; background:green;"></div>
+ <div style="display:table; width:100%;">
+ <!-- The overflow property doesn't apply to table rows. -->
+ <div style="display:table-row; overflow:scroll; height:170px; background:green;">
+ <br>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/overflow-scroll-section.html b/testing/web-platform/tests/css/css-break/table/overflow-scroll-section.html
new file mode 100644
index 0000000000..62b3071ae9
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/overflow-scroll-section.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1365306">
+<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#overflow-properties">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="height:30px; background:green;"></div>
+ <div style="display:table; width:100%;">
+ <!-- The overflow property doesn't apply to table sections. -->
+ <div style="display:table-row-group; overflow:scroll; height:170px; background:green;">
+ <br>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-in-monolithic.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-in-monolithic.tentative.html
new file mode 100644
index 0000000000..6ec70d030d
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-in-monolithic.tentative.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="display:table; width:100%;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="position:relative; top:-5px; left:-5px; contain:size; width:50px; height:20px;">
+ <div style="position:absolute; top:5px; left:5px; width:50px; height:20px; background:green;"></div>
+ </div>
+ </div>
+ <div style="height:160px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained-text-ref.html b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained-text-ref.html
new file mode 100644
index 0000000000..a7c2eeb5b8
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained-text-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<p>The word PASS should be seen <em>once</em> below.</p>
+PASS
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained-text.html b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained-text.html
new file mode 100644
index 0000000000..e0485816bf
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained-text.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="abspos-uncontained-text-ref.html">
+<p>The word PASS should be seen <em>once</em> below.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:20px;">
+ <div style="position:absolute;">PASS</div>
+ </div>
+ </div>
+ <div style="width:25px; height:320px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained.tentative.html
new file mode 100644
index 0000000000..d8b84ce72e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos-uncontained.tentative.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px; overflow:hidden; background:red;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="position:absolute; width:10px; height:20px; background:green;"></div>
+ <div style="margin-left:10px; width:25px; height:20px; background:green;"></div>
+ </div>
+ <div style="width:25px; height:320px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/abspos.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos.tentative.html
new file mode 100644
index 0000000000..a7297f1dd5
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/abspos.tentative.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="display:table;">
+ <div style="position:relative; display:table-header-group; break-inside:avoid;">
+ <div style="height:20px;">
+ <div style="position:absolute; width:25px; height:20px; background:green;"></div>
+ </div>
+ </div>
+ <div style="width:25px; height:320px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/balanced-inner-multicol-ref.html b/testing/web-platform/tests/css/css-break/table/repeated-section/balanced-inner-multicol-ref.html
new file mode 100644
index 0000000000..ab2dcebc41
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/balanced-inner-multicol-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<p>There should be 6 small blue squares below.</p>
+<div style="width:300px;">
+ <div style="float:left; width:50px;">
+ <div style="margin-top:90px; width:10px; height:10px; background:blue;"></div>
+ </div>
+ <div style="float:left; width:50px;">
+ <div style="margin-top:90px; width:10px; height:10px; background:blue;"></div>
+ </div>
+ <div style="float:left; width:50px;">
+ <div style="margin-top:90px; width:10px; height:10px; background:blue;"></div>
+ </div>
+ <div style="float:left; width:50px;">
+ <div style="margin-top:90px; width:10px; height:10px; background:blue;"></div>
+ </div>
+ <div style="float:left; width:50px;">
+ <div style="margin-top:50px; width:10px; height:10px; background:blue;"></div>
+ </div>
+ <div style="float:left; width:50px;">
+ <div style="margin-top:50px; width:10px; height:10px; background:blue;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/balanced-inner-multicol.html b/testing/web-platform/tests/css/css-break/table/repeated-section/balanced-inner-multicol.html
new file mode 100644
index 0000000000..78340661ed
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/balanced-inner-multicol.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378657">
+<link rel="match" href="balanced-inner-multicol-ref.html">
+<p>There should be 6 small blue squares below.</p>
+<div style="columns:3; gap:0; column-fill:auto; width:300px; height:100px;">
+ <div style="columns:2; gap:0; max-height:260px;">
+ <div style="display:table;">
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="width:10px; height:10px; background:blue;"></div>
+ </div>
+ <div style="height:460px;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/block-in-inline.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/block-in-inline.tentative.html
new file mode 100644
index 0000000000..1a94c697f1
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/block-in-inline.tentative.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="display:table;">
+ <div style="position:relative; top:5px; left:5px; display:table-header-group; break-inside:avoid;">
+ <span style="position:relative; left:5px; top:5px;">
+ <div style="position:relative; left:-10px; top:-10px; width:100%; height:20px; background:green;"></div>
+ </span>
+ </div>
+ <div style="width:25px; height:320px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-001-crash.html b/testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-001-crash.html
new file mode 100644
index 0000000000..dc87e5dd4f
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-001-crash.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378661">
+<div style="columns:4; height:100px; column-fill:auto;">
+ <div style="display:table; border-spacing:120px;">
+ <div style="display:table-header-group; break-inside:avoid;"></div>
+ <div style="height:140px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-002-crash.html b/testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-002-crash.html
new file mode 100644
index 0000000000..778c1c61c1
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-002-crash.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378661">
+<div style="columns:4; height:100px; column-fill:auto;">
+ <div style="display:table; border-spacing:120px;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:20px;"></div>
+ </div>
+ <div style="height:140px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-003-crash.html b/testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-003-crash.html
new file mode 100644
index 0000000000..ce7a13282b
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/border-spacing-taller-than-fragmentainer-003-crash.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378661">
+<div style="columns:4; height:100px; column-fill:auto;">
+ <div style="display:table; border-spacing:120px;">
+ <div style="display:table-header-group; break-inside:avoid;"></div>
+ <div></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/break-avoidance-in-bottom-caption.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/break-avoidance-in-bottom-caption.tentative.html
new file mode 100644
index 0000000000..fe676fd0c1
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/break-avoidance-in-bottom-caption.tentative.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1356236">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width:100px; height:100px; background:red;">
+ <div style="columns:4; column-fill:auto; gap:0; height:150px;">
+ <div style="display:table; width:100%;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ <div style="height:80px; background:green;"></div>
+ <div style="height:50px;"></div>
+ <div style="height:80px; background:green;"></div>
+ <div style="height:50px;"></div>
+ <div style="height:30px; background:green;"></div>
+ <div style="display:table-caption; caption-side:bottom;">
+ <div style="contain:size; height:50px; background:green;"></div>
+ <div style="contain:size; height:50px; background:green;"></div>
+ </div>
+ <div style="display:table-caption; caption-side:bottom; break-before:avoid;">
+ <div style="contain:size; height:50px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+</div>
+
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/captions.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/captions.tentative.html
new file mode 100644
index 0000000000..1f28d56802
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/captions.tentative.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="display:table;">
+ <div style="display:table-caption; caption-side:top; height:150px; background:green;"></div>
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ <div style="width:25px; height:20px; background:green;"></div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ <div style="display:table-caption; caption-side:bottom; height:150px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/footer.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/footer.tentative.html
new file mode 100644
index 0000000000..8789ef2915
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/footer.tentative.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="display:table;">
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ <div style="width:25px; height:320px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/header-after-break.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/header-after-break.tentative.html
new file mode 100644
index 0000000000..6a5abc011f
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/header-after-break.tentative.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width:100px; height:100px; background:red;">
+ <div style="columns:4; gap:0; column-fill:auto; height:130px;">
+ <div style="display:table; width:100%; border-top:20px solid green;">
+ <div style="display:table-caption; height:230px;">
+ <div style="height:100px; background:green;"></div>
+ <div style="height:30px;"></div>
+ <div style="height:100px; background:green;"></div>
+ </div>
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ <div style="height:200px;">
+ <div style="height:60px; background:green;"></div>
+ <div style="height:30px;"></div>
+ <div style="height:80px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/header-footer.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/header-footer.tentative.html
new file mode 100644
index 0000000000..7a1e956a8d
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/header-footer.tentative.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ <div style="width:25px; height:240px; background:green;"></div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/header.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/header.tentative.html
new file mode 100644
index 0000000000..6f4ad01097
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/header.tentative.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ <div style="width:25px; height:320px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/hit-test-relative-in-transform.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/hit-test-relative-in-transform.tentative.html
new file mode 100644
index 0000000000..43a36f1853
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/hit-test-relative-in-transform.tentative.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<style>
+ body { margin: 0; }
+</style>
+<div style="columns:2; width:200px; gap:0; column-fill:auto; height:100px;">
+ <div style="transform:translateX(30px);">
+ <div id="table" style="display:table; width:100%;">
+ <div id="header" style="display:table-header-group; break-inside:avoid;">
+ <div id="hitme" style="position:relative; left:30px; width:20px; height:20px;"></div>
+ </div>
+ <div style="display:table-row; break-inside:avoid;">
+ <div style="height:60px; background:blue;"></div>
+ </div>
+ <div style="display:table-row; break-inside:avoid;">
+ <div style="height:60px; background:blue;"></div>
+ </div>
+ </div>
+ </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ test(()=> { assert_equals(document.elementFromPoint(59, 10), header); }, "before first");
+ test(()=> { assert_equals(document.elementFromPoint(70, 10), hitme); }, "first");
+ test(()=> { assert_equals(document.elementFromPoint(91, 10), header); }, "after first");
+ test(()=> { assert_equals(document.elementFromPoint(159, 10), header); }, "before second");
+ test(()=> { assert_equals(document.elementFromPoint(170, 10), hitme); }, "second");
+ test(()=> { assert_equals(document.elementFromPoint(181, 10), header); }, "after second");
+</script>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/hit-test-relative.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/hit-test-relative.tentative.html
new file mode 100644
index 0000000000..348bb0dbc4
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/hit-test-relative.tentative.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<style>
+ body { margin: 0; }
+</style>
+<div style="columns:2; width:200px; gap:0; column-fill:auto; height:100px;">
+ <div id="table" style="display:table; width:100%;">
+ <div id="header" style="display:table-header-group; break-inside:avoid;">
+ <div id="hitme" style="position:relative; left:30px; width:20px; height:20px;"></div>
+ </div>
+ <div style="display:table-row; break-inside:avoid;">
+ <div style="height:60px; background:blue;"></div>
+ </div>
+ <div style="display:table-row; break-inside:avoid;">
+ <div style="height:60px; background:blue;"></div>
+ </div>
+ </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ test(()=> { assert_equals(document.elementFromPoint(29, 10), header); }, "before first");
+ test(()=> { assert_equals(document.elementFromPoint(40, 10), hitme); }, "first");
+ test(()=> { assert_equals(document.elementFromPoint(61, 10), header); }, "after first");
+ test(()=> { assert_equals(document.elementFromPoint(129, 10), header); }, "before second");
+ test(()=> { assert_equals(document.elementFromPoint(140, 10), hitme); }, "second");
+ test(()=> { assert_equals(document.elementFromPoint(151, 10), header); }, "after second");
+</script>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/hit-test.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/hit-test.tentative.html
new file mode 100644
index 0000000000..9b462887c3
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/hit-test.tentative.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<style>
+ body { margin: 0; }
+</style>
+<div style="columns:2; width:200px; gap:0; column-fill:auto; height:100px;">
+ <div id="table" style="display:table; width:100%;">
+ <div id="header" style="display:table-header-group; break-inside:avoid;">
+ <div id="hitme" style="width:20px; height:20px;"></div>
+ </div>
+ <div style="display:table-row; break-inside:avoid;">
+ <div style="height:60px; background:blue;"></div>
+ </div>
+ <div style="display:table-row; break-inside:avoid;">
+ <div style="height:60px; background:blue;"></div>
+ </div>
+ </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ test(()=> { assert_equals(document.elementFromPoint(10, 10), hitme); }, "first");
+ test(()=> { assert_equals(document.elementFromPoint(21, 10), header); }, "after first");
+ test(()=> { assert_equals(document.elementFromPoint(99, 10), header); }, "before second");
+ test(()=> { assert_equals(document.elementFromPoint(110, 10), hitme); }, "second");
+ test(()=> { assert_equals(document.elementFromPoint(121, 10), header); }, "after second");
+</script>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/image.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/image.tentative.html
new file mode 100644
index 0000000000..72fea010d0
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/image.tentative.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<style>
+ .table {
+ display: table;
+ width: 100%;
+ }
+ .header {
+ display: table-header-group;
+ break-inside: avoid;
+ }
+ .filler {
+ display: table-row;
+ break-inside: avoid;
+ height: 350px;
+ }
+ img {
+ width: 100%;
+ height: 100px;
+ }
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width:100px; height:100px; background:red;">
+ <div style="columns:4; gap:0; column-fill:auto; height:500px;">
+ <div class="table">
+ <div class="header">
+ <!-- The image src is a 1x1 green pixel. -->
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdjYGhg+A8AAoQBgNXA8F0AAAAASUVORK5CYII=">
+ </div>
+ <div class="filler"></div>
+ <div class="filler"></div>
+ <div class="filler"></div>
+ <div class="filler"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/inline-block.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/inline-block.tentative.html
new file mode 100644
index 0000000000..6dee47e375
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/inline-block.tentative.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="display:inline-block; vertical-align:top; width:100%; height:20px; background:green;"></div>
+ </div>
+ <div style="width:25px; height:320px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/multicol.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/multicol.tentative.html
new file mode 100644
index 0000000000..6dcd51bfe3
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/multicol.tentative.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-fill:auto; gap:0; width:100px; height:100px; background:red;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="columns:5; height:20px; gap:0; background:red;">
+ <div style="height:100px; background:green;"></div>
+ </div>
+ </div>
+ <div style="width:25px; height:320px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/multiple-row-groups.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/multiple-row-groups.tentative.html
new file mode 100644
index 0000000000..96e6173249
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/multiple-row-groups.tentative.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; width:100%;">
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="height:10px; background:green;"></div>
+ </div>
+ <div style="display:table-row-group;">
+ <div style="height:150px; background:green;"></div>
+ </div>
+ <div style="display:table-row-group;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ <div style="display:table-row-group;">
+ <div style="height:90px; background:green;"></div>
+ </div>
+ <div style="display:table-row-group;">
+ <div style="height:100px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/nested-repeated-header-crash.html b/testing/web-platform/tests/css/css-break/table/repeated-section/nested-repeated-header-crash.html
new file mode 100644
index 0000000000..1dffcf821a
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/nested-repeated-header-crash.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1336683">
+<style>
+ thead { break-inside: avoid; }
+ td { padding: 0; }
+ table { border-spacing: 0; }
+</style>
+<p>PASS if no freeze.</p>
+<div style="columns:2; column-fill:auto; height:700px;">
+ <table>
+ <thead>
+ <tr>
+ <td>
+ <div style="columns:2; column-fill:auto; height:120px; background:yellow;">
+ <table>
+ <thead>
+ <tr>
+ <td>
+ <div style="width:50px; height:20px; background:hotpink;"></div>
+ </td>
+ </tr>
+ </thead>
+ <tr><td style="height:100px;"></td></tr>
+ <tr><td style="height:100px;"></td></tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </thead>
+ <tr><td style="height:400px; background:blue;"></td></tr>
+ <tr><td style="height:400px; background:orange;"></td></tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/repeated-header-border-spacing.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/repeated-header-border-spacing.tentative.html
new file mode 100644
index 0000000000..7471c342a9
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/repeated-header-border-spacing.tentative.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="position:absolute; width:25px; height:10px; background:green;"></div>
+ <div style="display:table; width:100%; border-spacing:0 10px;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:10px;">
+ <div style="height:20px; background:green;"></div>
+ </div>
+ </div>
+ <div style="display:table-row-group;">
+ <div style="height:310px; background:green;"></div>
+ </div>
+ </div>
+</div>
+
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/special-elements-crash.html b/testing/web-platform/tests/css/css-break/table/repeated-section/special-elements-crash.html
new file mode 100644
index 0000000000..469e53460e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/special-elements-crash.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<style>
+ body {
+ margin: 0;
+ }
+ .table {
+ display: table;
+ width: 100%;
+ }
+ .header {
+ display: table-header-group;
+ break-inside: avoid;
+ }
+ .filler {
+ display: table-row;
+ break-inside: avoid;
+ height: 2600px;
+ }
+ .header > * {
+ /* Don't make stuff too tall. We want everything (in the header) to be
+ within the viewport. */
+ height: 10px;
+ }
+</style>
+<div style="columns:3; column-fill:auto; width:600px; height:5000px;">
+ <div class="table">
+ <div class="header">
+ <input type="text" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">
+ <input type="submit" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">
+ <input type="radio">
+ <input type="checkbox">
+ <input type="date">
+ <input type="range">
+ <input type="number">
+ <input type="color">
+ <input type="password">
+ <canvas id="canvas" style="width:40px; height:40px;"></canvas>
+ <iframe src="data:text/html,<div style='position:absolute; height:200px;'>x</div>" style="width:100px; height:40px;"></iframe>
+ <div style="overflow:scroll; width:100px; height:30px;">
+ <div style="height:200px;"></div>
+ </div>
+ <select size="0"><option>xxx</option></select>
+ <select size="5"><option>xxx</option></select>
+ <svg style="width:100px; height:30px;">
+ <circle cx="20" cy="15" r="7" fill="hotpink"/>
+ </svg>
+ <textarea style="width:50px; height:30px;">
+ xxxxxxxxxx xxxxxxxxx xxxxxxxx xxxxxxxxx xxxxxxx xxxxxx
+ </textarea>
+ <video style="width:100px; height:50px;" controls></video>
+ <video style="width:100px; height:50px;"></video>
+ <meter></meter>
+ <button>xxxxxx</button>
+ <fieldset><legend>epic</legend></fieldset>
+ <!-- The image src is a 1x1 green pixel. -->
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdjYGhg+A8AAoQBgNXA8F0AAAAASUVORK5CYII=">
+ </div>
+ <div class="filler"></div>
+ <div class="filler"></div>
+ <div class="filler"></div>
+ </div>
+</div>
+<script>
+ var ctx = canvas.getContext('2d');
+ ctx.fillStyle = "hotpink";
+ ctx.fillRect(0, 0, 50, 50);
+
+ function paintDone() {
+ return new Promise(function(resolve) {
+ requestAnimationFrame(()=> {
+ requestAnimationFrame(()=> {
+ resolve();
+ });
+ });
+ });
+ }
+ async function toggleStyles(elements) {
+ for (const display of ['block', 'inline-block', 'inline']) {
+ for (const position of ['static', 'relative']) {
+ for (const cssfloat of ['none', 'left']) {
+ for (var elm of elements) {
+ elm.style.display = display;
+ elm.style.position = position;
+ elm.style.cssFloat = cssfloat;
+ }
+ await paintDone();
+ for (var elm of elements) {
+ var rect = elm.getClientRects()[0];
+ var x = rect.left;
+ var y = rect.top;
+ x += 2;
+ y += 2;
+ document.elementFromPoint(x, y);
+ document.elementFromPoint(x + 200, y);
+ document.elementFromPoint(x + 400, y);
+ }
+ }
+ }
+ }
+ }
+
+ toggleStyles(document.querySelectorAll(".header > *"));
+</script>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/tall-monolithic-after-repeated-header.tentative.html b/testing/web-platform/tests/css/css-break/table/repeated-section/tall-monolithic-after-repeated-header.tentative.html
new file mode 100644
index 0000000000..8ded5f5f17
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/tall-monolithic-after-repeated-header.tentative.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378576">
+<link rel="help" href="https://www.w3.org/TR/css-tables-3/#repeated-headers">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="display:flow-root; width:100px; height:100px; background:red;">
+ <div style="columns:2; column-fill:auto; gap:0; margin-top:-20px; height:100px;">
+ <div style="display:table; width:100%;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="width:20px; height:20px;"></div>
+ </div>
+ <div style="contain:size; height:100px; background:green;"></div>
+ <div style="contain:size; height:100px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001-ref.html b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001-ref.html
new file mode 100644
index 0000000000..bea1ace1c3
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<p>There should be three blue squares and three hotpink ones.</p>
+<div style="width:300px;">
+ <div style="float:left; width:100px;">
+ <div style="width:20px; height:20px; background:blue;"></div>
+ <div style="margin-top:60px; width:20px; height:20px; background:hotpink;"></div>
+ </div>
+ <div style="float:left; width:100px;">
+ <div style="width:20px; height:20px; background:blue;"></div>
+ <div style="margin-top:60px; width:20px; height:20px; background:hotpink;"></div>
+ </div>
+ <div style="float:left; width:100px;">
+ <div style="width:20px; height:20px; background:blue;"></div>
+ <div style="margin-top:10px; width:20px; height:20px; background:hotpink;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001.html b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001.html
new file mode 100644
index 0000000000..f75a8cf216
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-001.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378294">
+<link rel="match" href="variable-fragmentainer-size-001-ref.html">
+<p>There should be three blue squares and three hotpink ones.</p>
+<!-- The first two inner fragmentainers are tall enough to allow a 20px tall
+ table header / footer, but the last one isn't. -->
+<div style="columns:3; width:300px; gap:0; column-fill:auto; height:100px;">
+ <div style="columns:1; column-fill:auto; height:250px;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:blue;"></div>
+ </div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:hotpink;"></div>
+ </div>
+ <div style="height:130px;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002-ref.html b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002-ref.html
new file mode 100644
index 0000000000..b457b1f7ac
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002-ref.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<p>There should be one blue square and one hotpink one.</p>
+<div style="width:300px;">
+ <div style="float:left; width:100px;">
+ <div style="margin-top:50px; width:20px; height:20px; background:blue;"></div>
+ </div>
+ <div style="float:left; width:100px; height:100px;"></div>
+ <div style="float:left; width:100px;">
+ <div style="width:20px; height:20px; background:hotpink;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002.html b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002.html
new file mode 100644
index 0000000000..c3aceac5ae
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-002.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378294">
+<link rel="match" href="variable-fragmentainer-size-002-ref.html">
+<p>There should be one blue square and one hotpink one.</p>
+<!-- The first inner fragmentainer isn't tall enough to allow a 20px tall table
+ header / footer, but the two other fragmentainers are. -->
+<div style="columns:3; width:300px; gap:0; column-fill:auto; height:100px;">
+ <div style="height:50px;"></div>
+ <div style="columns:1; column-fill:auto; height:250px;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:blue;"></div>
+ </div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:hotpink;"></div>
+ </div>
+ <div style="height:130px;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-003-crash.html b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-003-crash.html
new file mode 100644
index 0000000000..90834c806b
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-003-crash.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378294">
+<!-- All fragmentainers but the first just have room for the repeated headers
+ and footers, and no room for regular, unrepeated, stuff. We should still
+ fit 1px of unrepeated content in every fragmentainer, because that should
+ be a sensible way of interpretating
+ https://www.w3.org/TR/css-break-3/#breaking-rules ("fragmentainers are
+ assumed to have a minimum block size of 1px"). -->
+<div style="margin:100px; columns:4; column-fill:auto; height:40px; background:yellow;">
+ <div style="margin-bottom:-60px;"></div>
+ <div style="columns:1; column-fill:auto; background:lime;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:blue;"></div>
+ </div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:hotpink;"></div>
+ </div>
+ <div style="height:100px; background:black;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-004-crash.html b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-004-crash.html
new file mode 100644
index 0000000000..9c4699da93
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-004-crash.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378294">
+<!-- Only the first fragmentainer actually has room for repeated headers and
+ footers. We should still fit 1px of unrepeated content in every
+ fragmentainer, because that should be a sensible way of interpretating
+ https://www.w3.org/TR/css-break-3/#breaking-rules ("fragmentainers are
+ assumed to have a minimum block size of 1px"). -->
+<div style="margin:100px; columns:4; column-fill:auto; height:30px; background:yellow;">
+ <div style="margin-bottom:-60px;"></div>
+ <div style="columns:1; column-fill:auto; background:lime;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:blue;"></div>
+ </div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:hotpink;"></div>
+ </div>
+ <div style="height:100px; background:black;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-005-crash.html b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-005-crash.html
new file mode 100644
index 0000000000..b17d0cc810
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-005-crash.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378294">
+<!-- Only the first fragmentainer actually has room for repeated headers and
+ footers. We should still fit 1px of unrepeated content in every
+ fragmentainer, because that should be a sensible way of interpretating
+ https://www.w3.org/TR/css-break-3/#breaking-rules ("fragmentainers are
+ assumed to have a minimum block size of 1px"). -->
+<div style="margin:100px; columns:4; column-fill:auto; height:20px; background:yellow;">
+ <div style="margin-bottom:-60px;"></div>
+ <div style="columns:1; column-fill:auto; background:lime;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:blue;"></div>
+ </div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:hotpink;"></div>
+ </div>
+ <div style="height:100px; background:black;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-006-crash.html b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-006-crash.html
new file mode 100644
index 0000000000..1345c6eca8
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/repeated-section/variable-fragmentainer-size-006-crash.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1378294">
+<!-- Only the first fragmentainer actually has room for repeated headers and
+ footers. We should still fit 1px of unrepeated content in every
+ fragmentainer, because that should be a sensible way of interpretating
+ https://www.w3.org/TR/css-break-3/#breaking-rules ("fragmentainers are
+ assumed to have a minimum block size of 1px"). -->
+<div style="margin:100px; columns:4; column-fill:auto; height:10px; background:yellow;">
+ <div style="margin-bottom:-60px;"></div>
+ <div style="columns:1; column-fill:auto; background:lime;">
+ <div style="display:table;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:blue;"></div>
+ </div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="width:20px; height:20px; background:hotpink;"></div>
+ </div>
+ <div style="height:100px; background:black;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/section-with-overflow-000.html b/testing/web-platform/tests/css/css-break/table/section-with-overflow-000.html
new file mode 100644
index 0000000000..909052765b
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/section-with-overflow-000.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#parallel-flows">
+<style>
+ .halfsquare {
+ margin: -10px; /* Cover the border-spacing. */
+ width: 50px;
+ height: 100px;
+ background: green;
+ }
+</style>
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-gap:0; column-fill:auto; width:100px; height:200px;">
+ <div style="display:table; border-spacing:10px; background:red;">
+ <div style="display:table-cell; vertical-align:top;">
+ <div style="height:50px;">
+ <div class="halfsquare"></div>
+ <div style="height:120px;"></div>
+ <div class="halfsquare" style="position:relative; z-index:-1;"></div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/section-with-overflow-001.html b/testing/web-platform/tests/css/css-break/table/section-with-overflow-001.html
new file mode 100644
index 0000000000..665f5247ad
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/section-with-overflow-001.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#parallel-flows">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; column-gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; width:100%;">
+ <div style="display:table-footer-group;">
+ <div style="display:table-cell; vertical-align:top;">
+ <div style="height:30px; background:green;"></div>
+ </div>
+ </div>
+ <div style="display:table-row-group;">
+ <div style="display:table-cell; vertical-align:top;">
+ <div style="height:40px; background:green;">
+ <div style="height:70px;"></div>
+ <div style="height:130px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/section-with-overflow-002.html b/testing/web-platform/tests/css/css-break/table/section-with-overflow-002.html
new file mode 100644
index 0000000000..c6c63abe0e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/section-with-overflow-002.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#parallel-flows">
+<link rel="help" href="https://www.w3.org/TR/CSS22/tables.html#table-display">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; column-gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; width:100%;">
+ <div style="display:table-caption; caption-side:bottom;">
+ <div style="width:25px; height:40px; background:green;">
+ </div>
+ </div>
+ <div style="display:table-footer-group;">
+ <div style="display:table-cell; vertical-align:top;">
+ <div style="height:240px;"></div>
+ </div>
+ </div>
+ <div style="display:table-caption;">
+ <div style="width:25px; height:40px; background:green;">
+ <div style="height:220px;"></div>
+ <div style="height:60px; background:green;"></div>
+ </div>
+ </div>
+ <div style="display:table-row-group;">
+ <div style="display:table-cell; vertical-align:top;">
+ <div style="height:40px; background:green;">
+ <div style="height:40px;"></div>
+ <div style="height:100px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+ <div style="display:table-header-group;">
+ <div style="display:table-cell; vertical-align:top;">
+ <div style="height:40px; background:green;">
+ <div style="height:240px;"></div>
+ <div style="height:80px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/sections-and-captions-mixed-order-ref.html b/testing/web-platform/tests/css/css-break/table/sections-and-captions-mixed-order-ref.html
new file mode 100644
index 0000000000..b3265c92c6
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/sections-and-captions-mixed-order-ref.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<style>
+ .fakecolumn {
+ float: left;
+ width: 50px;
+ height: 100px;
+ background: green;
+ }
+</style>
+<p>There should be four columns with the numbers from 1 to 20 in ascending
+ order. No red should be seen.</p>
+<div style="width:200px; line-height:20px;">
+ <div class="fakecolumn">
+ 1<br>
+ 2<br>
+ 3<br>
+ 4<br>
+ 5<br>
+ </div>
+ <div class="fakecolumn">
+ 6<br>
+ 7<br>
+ 8<br>
+ 9<br>
+ 10<br>
+ </div>
+ <div class="fakecolumn">
+ 11<br>
+ 12<br>
+ 13<br>
+ 14<br>
+ 15<br>
+ </div>
+ <div class="fakecolumn">
+ 16<br>
+ 17<br>
+ 18<br>
+ 19<br>
+ 20<br>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/sections-and-captions-mixed-order.html b/testing/web-platform/tests/css/css-break/table/sections-and-captions-mixed-order.html
new file mode 100644
index 0000000000..67d20e3a46
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/sections-and-captions-mixed-order.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#parallel-flows">
+<link rel="help" href="https://www.w3.org/TR/CSS22/tables.html#table-display">
+<style>
+ #table > div {
+ background: green;
+ }
+</style>
+<link rel="match" href="sections-and-captions-mixed-order-ref.html">
+<p>There should be four columns with the numbers from 1 to 20 in ascending
+ order. No red should be seen.</p>
+<div style="columns:4; column-gap:0; column-fill:auto; width:200px; line-height:20px; height:100px; orphans:1; widows:1; background:red;">
+ <div id="table" style="display:table; width:100%;">
+ <div style="display:table-caption; caption-side:bottom;">14</div>
+ <div style="display:table-caption;">1</div>
+ <div style="display:table-footer-group;">8<br>9<br>10<br>11<br>12<br>13</div>
+ <div style="display:table-row-group;">4</div>
+ <div style="display:table-row-group;">5<br>6</div>
+ <div style="display:table-footer-group;">7</div>
+ <div style="display:table-header-group;">3</div>
+ <div style="display:table-caption; caption-side:bottom;">15<br>16<br>17<br>18<br>19<br>20</div>
+ <div style="display:table-caption;">2</div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/specified-block-size-001.html b/testing/web-platform/tests/css/css-break/table/specified-block-size-001.html
new file mode 100644
index 0000000000..ad235534be
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/specified-block-size-001.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px;">
+ <div style="display:table; height:400px; width:100%; background:red;">
+ <div style="height:400px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/specified-block-size-002.html b/testing/web-platform/tests/css/css-break/table/specified-block-size-002.html
new file mode 100644
index 0000000000..9605abe343
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/specified-block-size-002.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; height:400px; width:100%; background:green;">
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/specified-block-size-003.html b/testing/web-platform/tests/css/css-break/table/specified-block-size-003.html
new file mode 100644
index 0000000000..694ef40e3e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/specified-block-size-003.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; height:300px; width:100%; background:green;">
+ <div style="display:table-caption; height:100px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/specified-block-size-004.html b/testing/web-platform/tests/css/css-break/table/specified-block-size-004.html
new file mode 100644
index 0000000000..ca436aba67
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/specified-block-size-004.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; height:300px; width:100%; background:green;">
+ <div style="display:table-caption; caption-side:bottom; height:100px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/specified-block-size-005.html b/testing/web-platform/tests/css/css-break/table/specified-block-size-005.html
new file mode 100644
index 0000000000..b1528509de
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/specified-block-size-005.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; height:200px; width:100%; background:green;">
+ <div style="display:table-caption; caption-side:top; height:100px; background:green;"></div>
+ <div style="display:table-caption; caption-side:bottom; height:100px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/specified-block-size-006.html b/testing/web-platform/tests/css/css-break/table/specified-block-size-006.html
new file mode 100644
index 0000000000..a78af3faf5
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/specified-block-size-006.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; height:300px; width:100%; background:green;">
+ <div style="display:table-caption; caption-side:top; height:50px; background:green;"></div>
+ <div style="display:table-caption; caption-side:bottom; height:50px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/specified-block-size-007-ref.html b/testing/web-platform/tests/css/css-break/table/specified-block-size-007-ref.html
new file mode 100644
index 0000000000..28fcfd0a35
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/specified-block-size-007-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<p>There should be four columns. The first one should be yellow, the three
+ others should be cyan. No red should be seen.</p>
+<div style="float:left; width:25px; height:100px; margin-right:10px; background:yellow;"></div>
+<div style="float:left; width:25px; height:100px; margin-right:10px; background:cyan;"></div>
+<div style="float:left; width:25px; height:100px; margin-right:10px; background:cyan;"></div>
+<div style="float:left; width:25px; height:100px; margin-right:10px; background:cyan;"></div>
diff --git a/testing/web-platform/tests/css/css-break/table/specified-block-size-007.html b/testing/web-platform/tests/css/css-break/table/specified-block-size-007.html
new file mode 100644
index 0000000000..f342e2a8fa
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/specified-block-size-007.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/">
+<link rel="match" href="specified-block-size-007-ref.html">
+<p>There should be four columns. The first one should be yellow, the three
+ others should be cyan. No red should be seen.</p>
+<div style="columns:4; gap:10px; column-fill:auto; width:130px; height:100px;">
+ <div style="display:table; height:400px; width:100%; background:red;">
+ <div style="display:table-row; background:yellow;">
+ <div style="height:1px;"></div>
+ </div>
+ <div style="display:table-row; background:cyan;">
+ <div style="height:3px;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/specified-block-size-008.html b/testing/web-platform/tests/css/css-break/table/specified-block-size-008.html
new file mode 100644
index 0000000000..6b4cd11637
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/specified-block-size-008.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; width:100%; height:80px; background:green;">
+ <div style="display:table-caption; height:120px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-000.html b/testing/web-platform/tests/css/css-break/table/table-border-000.html
new file mode 100644
index 0000000000..1ec0efa299
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-000.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; border:10px green; border-style:solid none; width:100%; background:red;">
+ <div style="height:380px; background:green;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-001.html b/testing/web-platform/tests/css/css-break/table/table-border-001.html
new file mode 100644
index 0000000000..97e4ba8daf
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-001.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:3; gap:0; column-fill:auto; width:300px; height:100px; margin-left:-100px;">
+ <div style="display:table; border:solid green; border-width:10px 0; width:100%; background:red;">
+ <div style="display:table-caption;">
+ <div style="height:100px;"></div>
+ <div style="height:20px; background:green;"></div>
+ </div>
+ <div>
+ <div style="height:40px; background:green;"></div>
+ </div>
+ <div style="display:table-caption; caption-side:bottom;">
+ <div style="height:20px; background:green;"></div>
+ <div style="height:100px;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-002.html b/testing/web-platform/tests/css/css-break/table/table-border-002.html
new file mode 100644
index 0000000000..16c2a50395
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-002.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; border:solid green; border-width:10px 0; width:100%;">
+ <div style="display:table-caption;">
+ <div style="height:50px; background:green;"></div>
+ </div>
+ <div>
+ <div style="height:80px; background:green;"></div>
+ </div>
+ <div style="display:table-caption; caption-side:bottom;">
+ <div style="height:50px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-003.html b/testing/web-platform/tests/css/css-break/table/table-border-003.html
new file mode 100644
index 0000000000..26b01599ad
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-003.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:5; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; border:solid green; border-width:10px 0; width:100%;">
+ <div style="display:table-caption;">
+ <div style="height:150px; background:green;"></div>
+ </div>
+ <div>
+ <div style="height:180px; background:green;"></div>
+ </div>
+ <div style="display:table-caption; caption-side:bottom;">
+ <div style="height:150px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-004.html b/testing/web-platform/tests/css/css-break/table/table-border-004.html
new file mode 100644
index 0000000000..ed8314f1d2
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-004.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="display:table; border:solid green; border-width:20px 0; width:100%;">
+ <div style="display:table-caption;">
+ <div style="height:110px; background:green;"></div>
+ </div>
+ <div style="display:table-caption; caption-side:bottom;">
+ <div style="height:250px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-005.html b/testing/web-platform/tests/css/css-break/table/table-border-005.html
new file mode 100644
index 0000000000..3f8efe9d0a
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-005.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width:100px; height:100px; background:red;">
+ <div style="columns:2; gap:0; column-fill:auto; height:150px;">
+ <div style="display:table; border-top:30px solid red; width:100%;">
+ <div style="display:table-caption;">
+ <div style="height:100px; background:green;"></div>
+ </div>
+ <div style="contain:size; height:70px;">
+ <div style="margin-top:-30px; height:100px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-006.html b/testing/web-platform/tests/css/css-break/table/table-border-006.html
new file mode 100644
index 0000000000..f0ebf25c08
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-006.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="width:100px; height:100px; background:red;">
+ <div style="columns:2; gap:0; column-fill:auto; height:170px;">
+ <div style="display:table; width:100%; border-bottom:30px solid green;">
+ <div style="break-inside:avoid; display:table-row;">
+ <div style="height:100px; background:green;"></div>
+ </div>
+ <div style="break-inside:avoid; display:table-row;">
+ <div style="height:70px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-007-ref.html b/testing/web-platform/tests/css/css-break/table/table-border-007-ref.html
new file mode 100644
index 0000000000..6f994082e2
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-007-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<p>There should be a pink table with a black border. The table should be split
+ into two columns.</p>
+<div style="float:left; border:10px solid; border-bottom:none; width:50px; height:90px; margin-right:30px; background:pink;"></div>
+<div style="float:left; border:10px solid; border-top:none; width:50px; height:90px; background:pink;"></div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-007.html b/testing/web-platform/tests/css/css-break/table/table-border-007.html
new file mode 100644
index 0000000000..66363cd0ae
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-007.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="table-border-007-ref.html">
+<p>There should be a pink table with a black border. The table should be split
+ into two columns.</p>
+<div style="columns:2; gap:0; column-fill:auto; width:200px; height:100px;">
+ <div style="display:table; border:10px solid; height:180px; width:50px; background:pink;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-008-ref.html b/testing/web-platform/tests/css/css-break/table/table-border-008-ref.html
new file mode 100644
index 0000000000..01253d3026
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-008-ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<style>
+ .fragment {
+ float: left;
+ width: 50px;
+ border: 10px solid;
+ background: pink;
+ }
+</style>
+<p>There should be a pink table box with a black border. The table box should be
+ split into three columns.</p>
+<div class="fragment" style="height:40px; margin-left:100px; margin-top:50px; border-bottom:none;"></div>
+<div class="fragment" style="height:100px; margin-left:30px; border-top:none; border-bottom:none;"></div>
+<div class="fragment" style="height:40px; margin-left:30px; border-top:none;"></div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-border-008.html b/testing/web-platform/tests/css/css-break/table/table-border-008.html
new file mode 100644
index 0000000000..6140df1674
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-border-008.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="table-border-008-ref.html">
+<p>There should be a pink table box with a black border. The table box should be
+ split into three columns.</p>
+<div style="columns:6; gap:0; column-fill:auto; width:600px; height:100px;">
+ <div style="display:table; border:10px solid; height:180px; width:50px; background:pink;">
+ <div style="display:table-caption; caption-side:top; height:150px;"></div>
+ <div style="display:table-caption; caption-side:bottom; height:150px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-caption-and-cells-fixed-width-ref.html b/testing/web-platform/tests/css/css-break/table/table-caption-and-cells-fixed-width-ref.html
new file mode 100644
index 0000000000..c41a4a515a
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-caption-and-cells-fixed-width-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<p>Check that a table caption at a column boundary is properly pushed to the next column.</p>
+<p>The word "PASS" should be seen below, fully visible and unbroken.</p>
+<div style="margin-left:15em; width:10em; line-height:2em; text-align:center;">
+ PASS<br>
+ <div style="height:2em; background:black;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-caption-and-cells-fixed-width.html b/testing/web-platform/tests/css/css-break/table/table-caption-and-cells-fixed-width.html
new file mode 100644
index 0000000000..11984c3ea3
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-caption-and-cells-fixed-width.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=329421">
+<link rel="match" href="table-caption-and-cells-fixed-width-ref.html">
+<p>Check that a table caption at a column boundary is properly pushed to the next column.</p>
+<p>The word "PASS" should be seen below, fully visible and unbroken.</p>
+<div style="columns:2; column-gap:0; column-fill:auto; line-height:2em; width:30em; height:9em;">
+ <div style="height:8em;"></div>
+ <table style="height:2em; width:10em; background:black;" cellspacing="0" cellpadding="0">
+ <caption>PASS</caption>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-caption-and-cells-ref.html b/testing/web-platform/tests/css/css-break/table/table-caption-and-cells-ref.html
new file mode 100644
index 0000000000..1ca93e64f7
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-caption-and-cells-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<p>Check that a table caption at a column boundary is properly pushed to the next column.</p>
+<p>The word "PASS" should be seen below, fully visible and unbroken.</p>
+<div style="margin-left:50%; width:10em; line-height:2em; text-align:center;">
+ PASS<br>
+ <div style="height:2em; background:black;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-caption-and-cells.html b/testing/web-platform/tests/css/css-break/table/table-caption-and-cells.html
new file mode 100644
index 0000000000..365786f49e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-caption-and-cells.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=329421">
+<link rel="match" href="table-caption-and-cells-ref.html">
+<p>Check that a table caption at a column boundary is properly pushed to the next column.</p>
+<p>The word "PASS" should be seen below, fully visible and unbroken.</p>
+<div style="columns:2; column-gap:0; column-fill:auto; line-height:2em; height:9em;">
+ <div style="height:8em;"></div>
+ <table style="width:10em; height:2em; background:black;" cellspacing="0" cellpadding="0">
+ <caption>PASS</caption>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-caption-with-block-ref.html b/testing/web-platform/tests/css/css-break/table/table-caption-with-block-ref.html
new file mode 100644
index 0000000000..ca210636a9
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-caption-with-block-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<p>Check that a table caption with a block at a column boundary is properly pushed to the next column.</p>
+<p>The word "PASS" should be seen below, fully visible and unbroken.</p>
+<div style="margin-left:20em; line-height:2em;">
+ PASS
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-caption-with-block.html b/testing/web-platform/tests/css/css-break/table/table-caption-with-block.html
new file mode 100644
index 0000000000..1d3aa3317e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-caption-with-block.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=329421">
+<link rel="match" href="table-caption-with-block-ref.html">
+<p>Check that a table caption with a block at a column boundary is properly pushed to the next column.</p>
+<p>The word "PASS" should be seen below, fully visible and unbroken.</p>
+<div style="columns:2; column-gap:0; column-fill:auto; line-height:2em; width:40em; height:3em;">
+ <div style="height:2em;"></div>
+ <table cellspacing="0" cellpadding="0">
+ <caption>
+ <div>PASS</div>
+ </caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-001.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-001.html
new file mode 100644
index 0000000000..b10d516787
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-001.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 2; gap: 0; column-fill: auto; height: 100px; width: 100px; background: red;">
+ <div style="display: table-cell; background: green;">
+ <div style="height: 70px; width: 50px; break-inside: avoid;"></div>
+ <div style="height: 100px; width: 50px; break-inside: avoid;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-002.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-002.html
new file mode 100644
index 0000000000..6df44aa763
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-002.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 2; gap: 0; column-fill: auto; height: 100px; width: 100px; background: red;">
+ <div style="display: table-cell; background: green; height: 200px;">
+ <div style="width: 50px; height: 200%;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-003.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-003.html
new file mode 100644
index 0000000000..32e12012ac
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-003.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 2; gap: 0; column-fill: auto; height: 100px; width: 100px; background: red;">
+ <table style="border-spacing: 0;">
+ <td style="background: green; padding: 0;" rowspan="2">
+ <div style="height: 70px; width: 50px; break-inside: avoid;"></div>
+ <div style="height: 100px; width: 50px; break-inside: avoid;"></div>
+ </td>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-004.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-004.html
new file mode 100644
index 0000000000..2390e218c9
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-004.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<style>
+td { padding: 0; }
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 2; gap: 0; column-fill: auto; height: 100px; width: 100px; background: red;">
+ <table style="border-spacing: 0;">
+ <tr>
+ <td><div style="height: 180px;"></div></td>
+ <td style="background: green;" rowspan="2">
+ <div style="height: 70px; width: 50px; break-inside: avoid;"></div>
+ <div style="height: 100px; width: 50px; break-inside: avoid;"></div>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-005.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-005.html
new file mode 100644
index 0000000000..23fcc73e16
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-005.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<style>
+td { padding: 0; }
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 2; gap: 0; column-fill: auto; height: 100px; width: 100px; background: red;">
+ <table style="border-spacing: 0;">
+ <tr>
+ <td><div style="height: 180px;"></div></td>
+ <td style="background: green;" rowspan="2">
+ <div style="height: 70px; width: 50px; break-inside: avoid;"></div>
+ <div style="height: 100px; width: 50px; break-inside: avoid;"></div>
+ </td>
+ </tr>
+ <tr>
+ <td style="height: 20px;"></td>
+ </tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-006.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-006.html
new file mode 100644
index 0000000000..1028664774
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-006.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 2; gap: 0; column-fill: auto; height: 100px; width: 100px; background: red;">
+ <table style="border-spacing: 0;">
+ <td style="background: green; padding: 0; writing-mode: vertical-rl;">
+ <div style="min-width: 100px; width: 200%; height: 100px;"></div>
+ </td>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-007.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-007.html
new file mode 100644
index 0000000000..bafe31200d
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-007.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 2; gap: 0; column-fill: auto; height: 100px; width: 100px; background: red;">
+ <table style="background: green; border-spacing: 0;">
+ <tr>
+ <td style="padding: 0;">
+ <div style="height: 70px; width: 50px; break-inside: avoid;"></div>
+ <div style="height: 100px; width: 50px; break-inside: avoid;"></div>
+ </td>
+ </tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-008.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-008.html
new file mode 100644
index 0000000000..7e4cf16970
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-008.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<style>
+table { border-spacing: 0; }
+td { padding: 0; }
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 2; gap: 0; column-fill: auto; height: 100px; width: 100px; background: red;">
+ <table style="background: green;">
+ <tr>
+ <td>
+ <div style="height: 10px; width: 50px;"></div>
+ <div style="height: 10px; break-before: column;"></div>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div style="height: 90px;"></div>
+ </td>
+ </tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-009.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-009.html
new file mode 100644
index 0000000000..ec34d0b707
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-009.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<style>
+table { border-spacing: 0; }
+td { padding: 0; }
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 2; gap: 0; column-fill: auto; height: 100px; width: 100px; background: red;">
+ <table style="background: green;">
+ <tr>
+ <td>
+ <div style="height: 10px; width: 50px;"></div>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div style="height: 10px;"></div>
+ <div style="height: 100px; width: 50px; break-inside: avoid;"></div>
+ </td>
+ </tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-cell-expansion-010.html b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-010.html
new file mode 100644
index 0000000000..0e6b849c9b
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-cell-expansion-010.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<style>
+table { border-spacing: 0; }
+td { padding: 0; }
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns: 4; gap: 0; column-fill: balance; height: 100px; width: 100px; background: red;">
+ <table style="background: green;">
+ <tr>
+ <td>
+ <div style="height: 10px; width: 25px;"></div>
+ <div style="height: 10px; break-before: column;"></div>
+ <div style="height: 10px; break-before: column;"></div>
+ <div style="height: 10px; break-before: column;"></div>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div style="height: 90px;"></div>
+ </td>
+ </tr>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-col-paint-htb-ltr-ref.html b/testing/web-platform/tests/css/css-break/table/table-col-paint-htb-ltr-ref.html
new file mode 100644
index 0000000000..df7b50c84e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-col-paint-htb-ltr-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern1 {
+ background: repeating-linear-gradient(lime, lime 20px, blue 20px, blue 40px);
+}
+.pattern2 {
+ background: repeating-linear-gradient(orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <div style="position: relative; inline-size: 100%; block-size: 400px;">
+ <div style="position: absolute; inset-block-start: 0; inline-size: 100%; background: red; block-size: 50px;"></div>
+ <div class="pattern1" style="position: absolute; inset-block-start: 60px; inset-inline-start: 10px; inline-size: calc(50% - 15px); block-size: 255px;"></div>
+ <div class="pattern2" style="position: absolute; inset-block-start: 60px; inset-inline-start: 55px; inline-size: calc(50% - 15px); block-size: 255px;"></div>
+ <div style="position: absolute; inset-block-start: 170px; inline-size: 100%; block-size: 10px; background: white;"></div>
+ <div style="position: absolute; inset-block-end: 0; inline-size: 100%; background: red; block-size: 75px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-col-paint-htb-ltr.html b/testing/web-platform/tests/css/css-break/table/table-col-paint-htb-ltr.html
new file mode 100644
index 0000000000..ea066d1354
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-col-paint-htb-ltr.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<link rel="match" href="table-col-paint-htb-ltr-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern1 {
+ background: repeating-linear-gradient(lime, lime 20px, blue 20px, blue 40px);
+}
+.pattern2 {
+ background: repeating-linear-gradient(orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <table style="border-spacing: 10px; inline-size: 100%;">
+ <caption style="background: red; block-size: 50px;"></caption>
+ <col class="pattern1"></col>
+ <col class="pattern2"></col>
+ <tr style="block-size: 110px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <tr style="block-size: 135px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <caption style="caption-side: bottom; background: red; block-size: 75px;"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-col-paint-vlr-rtl-ref.html b/testing/web-platform/tests/css/css-break/table/table-col-paint-vlr-rtl-ref.html
new file mode 100644
index 0000000000..4c00507249
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-col-paint-vlr-rtl-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern1 {
+ background: repeating-linear-gradient(to right, lime, lime 20px, blue 20px, blue 40px);
+}
+.pattern2 {
+ background: repeating-linear-gradient(to right, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <div style="position: relative; inline-size: 100%; block-size: 400px;">
+ <div style="position: absolute; inset-block-start: 0; inline-size: 100%; background: red; block-size: 50px;"></div>
+ <div class="pattern1" style="position: absolute; inset-block-start: 60px; inset-inline-start: 10px; inline-size: calc(50% - 15px); block-size: 255px;"></div>
+ <div class="pattern2" style="position: absolute; inset-block-start: 60px; inset-inline-start: 55px; inline-size: calc(50% - 15px); block-size: 255px;"></div>
+ <div style="position: absolute; inset-block-start: 170px; inline-size: 100%; block-size: 10px; background: white;"></div>
+ <div style="position: absolute; inset-block-end: 0; inline-size: 100%; background: red; block-size: 75px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-col-paint-vlr-rtl.html b/testing/web-platform/tests/css/css-break/table/table-col-paint-vlr-rtl.html
new file mode 100644
index 0000000000..ab45d31404
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-col-paint-vlr-rtl.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<link rel="match" href="table-col-paint-vlr-rtl-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern1 {
+ background: repeating-linear-gradient(to right,lime, lime 20px, blue 20px, blue 40px);
+}
+.pattern2 {
+ background: repeating-linear-gradient(to right, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <table style="border-spacing: 10px; inline-size: 100%;">
+ <caption style="background: red; block-size: 50px;"></caption>
+ <col class="pattern1"></col>
+ <col class="pattern2"></col>
+ <tr style="block-size: 110px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <tr style="block-size: 135px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <caption style="caption-side: bottom; background: red; block-size: 75px;"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-col-paint-vrl-rtl-ref.html b/testing/web-platform/tests/css/css-break/table/table-col-paint-vrl-rtl-ref.html
new file mode 100644
index 0000000000..0fde8bacc5
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-col-paint-vrl-rtl-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-rl;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern1 {
+ background: repeating-linear-gradient(to left, lime, lime 20px, blue 20px, blue 40px);
+}
+.pattern2 {
+ background: repeating-linear-gradient(to left, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <div style="position: relative; inline-size: 100%; block-size: 400px;">
+ <div style="position: absolute; inset-block-start: 0; inline-size: 100%; background: red; block-size: 50px;"></div>
+ <div class="pattern1" style="position: absolute; inset-block-start: 60px; inset-inline-start: 10px; inline-size: calc(50% - 15px); block-size: 255px;"></div>
+ <div class="pattern2" style="position: absolute; inset-block-start: 60px; inset-inline-start: 55px; inline-size: calc(50% - 15px); block-size: 255px;"></div>
+ <div style="position: absolute; inset-block-start: 170px; inline-size: 100%; block-size: 10px; background: white;"></div>
+ <div style="position: absolute; inset-block-end: 0; inline-size: 100%; background: red; block-size: 75px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-col-paint-vrl-rtl.html b/testing/web-platform/tests/css/css-break/table/table-col-paint-vrl-rtl.html
new file mode 100644
index 0000000000..e31d1d4dc6
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-col-paint-vrl-rtl.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<link rel="match" href="table-col-paint-vrl-rtl-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-rl;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern1 {
+ background: repeating-linear-gradient(to left,lime, lime 20px, blue 20px, blue 40px);
+}
+.pattern2 {
+ background: repeating-linear-gradient(to left, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <table style="border-spacing: 10px; inline-size: 100%;">
+ <caption style="background: red; block-size: 50px;"></caption>
+ <col class="pattern1"></col>
+ <col class="pattern2"></col>
+ <tr style="block-size: 110px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <tr style="block-size: 135px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <caption style="caption-side: bottom; background: red; block-size: 75px;"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-at-boundary-ref.html b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-at-boundary-ref.html
new file mode 100644
index 0000000000..04d643437f
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-at-boundary-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<style>
+.multicol {
+ width: 500px;
+ height: 100px;
+ columns: 5;
+ column-fill: auto;
+ gap: 10px;
+ padding: 10px;
+ border: solid 3px;
+}
+</style>
+<div class="multicol">
+ <div style="background: dodgerblue; height: 150px;"></div>
+ <div style="height: 35px; border: solid 10px lime; border-bottom-width: 5px; margin-left: 2.5px; margin-right: 2.5px;"></div>
+ <div style="height: 95px; border: solid black; border-width: 0 10px 5px 15px; margin-right: 2.5px;">
+ <div style="border-top: solid lime 5px;"></div>
+ </div>
+ <div style="height: 5px; background: black; border-right: solid blue 15px; margin-left: 2.5px;"></div>
+ <div style="height: 40px; border: solid blue; border-width: 0 15px 10px 10px; margin-left: 2.5px;"></div>
+ <div style="height: 40px; border: solid blue; border-width: 0 10px 5px 10px; margin-left: 2.5px; margin-right: 2.5px;"></div>
+ <div style="height: 70px; border: solid blue; border-width: 5px 10px 10px 10px; margin-left: 2.5px; margin-right: 2.5px;"></div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-at-boundary.tentative.html b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-at-boundary.tentative.html
new file mode 100644
index 0000000000..0227b571a2
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-at-boundary.tentative.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<link rel="match" href="table-collapsed-borders-paint-at-boundary-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+.multicol {
+ width: 500px;
+ height: 100px;
+ columns: 5;
+ column-fill: auto;
+ gap: 10px;
+ padding: 10px;
+ border: solid 3px;
+}
+</style>
+<div class="multicol">
+ <table style="border-collapse: collapse; width: 100%;">
+ <caption style="background: dodgerblue; height: 150px;"></caption>
+ <tbody>
+ <tr style="height: 45px;">
+ <td style="border: solid 10px lime;"></td>
+ </tr>
+ <tr style="height: 100px;">
+ <td style="border: solid 10px; border-left-width: 15px;"></td>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr style="height: 50px;">
+ <td style="border: solid blue 10px; border-right-width: 15px;"></td>
+ </tr>
+ <tr style="height: 50px;">
+ <td style="border: solid blue 10px;"></td>
+ </tr>
+ <tr style="height: 80px;">
+ <td style="border: solid blue 10px;"></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr-ref.html b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr-ref.html
new file mode 100644
index 0000000000..1841ff5821
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr-ref.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 10px;
+ padding: 10px;
+ border: solid 3px;
+}
+</style>
+<div class="multicol">
+ <div style="background: dodgerblue; block-size: 120px;"></div>
+ <div style="block-size: 40px; border: solid 10px lime;"></div>
+ <div style="block-size: 135px; border: solid 10px; border-top: none;"></div>
+ <div style="block-size: 40px; border: solid 10px blue; border-top: none;"></div>
+ <div style="block-size: 15px; border: solid 10px blue; border-top: none;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr.html b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr.html
new file mode 100644
index 0000000000..60e146296b
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-htb-ltr.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<link rel="match" href="table-collapsed-borders-paint-htb-ltr-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 10px;
+ padding: 10px;
+ border: solid 3px;
+}
+</style>
+<div class="multicol">
+ <table style="border-collapse: collapse; inline-size: 100%;">
+ <caption style="background: dodgerblue; block-size: 120px;"></caption>
+ <tbody>
+ <tr style="block-size: 50px;">
+ <td style="border: solid 10px lime;"></td>
+ </tr>
+ <tr style="block-size: 145px;">
+ <td style="border: solid 10px;"></td>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr style="block-size: 50px;">
+ <td style="border: solid blue 10px;"></td>
+ </tr>
+ <tr style="block-size: 25px;">
+ <td style="border: solid blue 10px;"></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl-ref.html b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl-ref.html
new file mode 100644
index 0000000000..e17497a270
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 10px;
+ padding: 10px;
+ border: solid 3px;
+}
+</style>
+<div class="multicol">
+ <div style="background: dodgerblue; block-size: 120px;"></div>
+ <div style="block-size: 40px; border: solid 10px lime;"></div>
+ <div style="block-size: 135px; border: solid 10px; border-left: none;"></div>
+ <div style="block-size: 40px; border: solid 10px blue; border-left: none;"></div>
+ <div style="block-size: 15px; border: solid 10px blue; border-left: none;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl.html b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl.html
new file mode 100644
index 0000000000..d03968ec4d
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vlr-rtl.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<link rel="match" href="table-collapsed-borders-paint-vlr-rtl-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 10px;
+ padding: 10px;
+ border: solid 3px;
+}
+</style>
+<div class="multicol">
+ <table style="border-collapse: collapse; inline-size: 100%;">
+ <caption style="background: dodgerblue; block-size: 120px;"></caption>
+ <tbody>
+ <tr style="block-size: 50px;">
+ <td style="border: solid 10px lime;"></td>
+ </tr>
+ <tr style="block-size: 145px;">
+ <td style="border: solid 10px;"></td>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr style="block-size: 50px;">
+ <td style="border: solid blue 10px;"></td>
+ </tr>
+ <tr style="block-size: 25px;">
+ <td style="border: solid blue 10px;"></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr-ref.html b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr-ref.html
new file mode 100644
index 0000000000..2721bc0af0
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-rl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 10px;
+ padding: 10px;
+ border: solid 3px;
+}
+</style>
+<div class="multicol">
+ <div style="background: dodgerblue; block-size: 120px;"></div>
+ <div style="block-size: 40px; border: solid 10px lime;"></div>
+ <div style="block-size: 135px; border: solid 10px; border-right: none;"></div>
+ <div style="block-size: 40px; border: solid 10px blue; border-right: none;"></div>
+ <div style="block-size: 15px; border: solid 10px blue; border-right: none;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr.html b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr.html
new file mode 100644
index 0000000000..6dff501fec
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-collapsed-borders-paint-vrl-ltr.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<link rel="match" href="table-collapsed-borders-paint-vrl-ltr-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-rl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 10px;
+ padding: 10px;
+ border: solid 3px;
+}
+</style>
+<div class="multicol">
+ <table style="border-collapse: collapse; inline-size: 100%;">
+ <caption style="background: dodgerblue; block-size: 120px;"></caption>
+ <tbody>
+ <tr style="block-size: 50px;">
+ <td style="border: solid 10px lime;"></td>
+ </tr>
+ <tr style="block-size: 145px;">
+ <td style="border: solid 10px;"></td>
+ </tr>
+ </tbody>
+ <tbody>
+ <tr style="block-size: 50px;">
+ <td style="border: solid blue 10px;"></td>
+ </tr>
+ <tr style="block-size: 25px;">
+ <td style="border: solid blue 10px;"></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-grid-paint-htb-ltr-ref.html b/testing/web-platform/tests/css/css-break/table/table-grid-paint-htb-ltr-ref.html
new file mode 100644
index 0000000000..5830aa5fd5
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-grid-paint-htb-ltr-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(orange, orange 25px, dodgerblue 25px, dodgerblue 50px);
+}
+</style>
+<div class="multicol">
+ <div style="block-size: 140px; background: lime"></div>
+ <div class="pattern" style="border: solid 10px; block-size: 225px;"></div>
+ <div style="block-size: 15px; background: lime"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-grid-paint-htb-ltr.html b/testing/web-platform/tests/css/css-break/table/table-grid-paint-htb-ltr.html
new file mode 100644
index 0000000000..e2be9ce16c
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-grid-paint-htb-ltr.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<link rel="match" href="table-grid-paint-htb-ltr-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(orange, orange 25px, dodgerblue 25px, dodgerblue 50px);
+}
+</style>
+<div class="multicol">
+ <table class="pattern" style="inline-size: 100%; border-spacing: 0; border: solid 10px;">
+ <caption style="block-size: 140px; background: lime"></caption>
+ <tbody><td style="padding: 0; block-size: 225px;"></td></tbody>
+ <caption style="caption-side: bottom; block-size: 15px; background: lime"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-grid-paint-vlr-rtl-ref.html b/testing/web-platform/tests/css/css-break/table/table-grid-paint-vlr-rtl-ref.html
new file mode 100644
index 0000000000..5f069ea053
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-grid-paint-vlr-rtl-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to right, orange, orange 25px, dodgerblue 25px, dodgerblue 50px);
+}
+</style>
+<div class="multicol">
+ <div style="block-size: 140px; background: lime"></div>
+ <div class="pattern" style="border: solid 10px; block-size: 225px;"></div>
+ <div style="block-size: 15px; background: lime"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-grid-paint-vlr-rtl.html b/testing/web-platform/tests/css/css-break/table/table-grid-paint-vlr-rtl.html
new file mode 100644
index 0000000000..b26363056b
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-grid-paint-vlr-rtl.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<link rel="match" href="table-grid-paint-vlr-rtl-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to right, orange, orange 25px, dodgerblue 25px, dodgerblue 50px);
+}
+</style>
+<div class="multicol">
+ <table class="pattern" style="inline-size: 100%; border-spacing: 0; border: solid 10px;">
+ <caption style="block-size: 140px; background: lime"></caption>
+ <tbody><td style="padding: 0; block-size: 225px;"></td></tbody>
+ <caption style="caption-side: bottom; block-size: 15px; background: lime"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-grid-paint-vrl-rtl-ref.html b/testing/web-platform/tests/css/css-break/table/table-grid-paint-vrl-rtl-ref.html
new file mode 100644
index 0000000000..2080a4e450
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-grid-paint-vrl-rtl-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-rl;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to left, orange, orange 25px, dodgerblue 25px, dodgerblue 50px);
+}
+</style>
+<div class="multicol">
+ <div style="block-size: 140px; background: lime"></div>
+ <div class="pattern" style="border: solid 10px; block-size: 225px;"></div>
+ <div style="block-size: 15px; background: lime"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-grid-paint-vrl-rtl.html b/testing/web-platform/tests/css/css-break/table/table-grid-paint-vrl-rtl.html
new file mode 100644
index 0000000000..0d83c6c402
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-grid-paint-vrl-rtl.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<link rel="match" href="table-grid-paint-vrl-rtl-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-rl;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to left, orange, orange 25px, dodgerblue 25px, dodgerblue 50px);
+}
+</style>
+<div class="multicol">
+ <table class="pattern" style="inline-size: 100%; border-spacing: 0; border: solid 10px;">
+ <caption style="block-size: 140px; background: lime"></caption>
+ <tbody><td style="padding: 0; block-size: 225px;"></td></tbody>
+ <caption style="caption-side: bottom; block-size: 15px; background: lime"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html b/testing/web-platform/tests/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html
new file mode 100644
index 0000000000..363324b225
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-in-abspos-multicol-with-nested-meter-crash.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1351677">
+<p>PASS if no crash or DCHECK failure.</p>
+<div style="position:absolute; column-count:1;">
+ <table>
+ <caption>
+ <meter style="column-count:1;"></meter>
+ </caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-parts-offsetheight.html b/testing/web-platform/tests/css/css-break/table/table-parts-offsetheight.html
new file mode 100644
index 0000000000..5bdc33b521
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-parts-offsetheight.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="help" href="https://www.w3.org/TR/cssom-view/#extensions-to-the-htmlelement-interface">
+<div style="columns:3; column-fill:auto; height:70px; background:yellow;">
+ <div id="table" style="display:table; border-spacing:7px; border:2px solid; padding:1px;">
+ <div id="colgroup" style="display:table-column-group;">
+ <div id="col" style="display:table-column;"></div>
+ </div>
+ <div id="rowgroup" style="display:table-row-group;">
+ <div id="row" style="display:table-row;">
+ <div id="cell" style="display:table-cell;">
+ <div id="content" style="width:100px; height:100px; background:blue;"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ test(()=> { assert_equals(table.offsetHeight, 120); }, "table");
+ test(()=> { assert_equals(colgroup.offsetHeight, 100); }, "colgroup");
+ test(()=> { assert_equals(col.offsetHeight, 100); }, "col");
+ test(()=> { assert_equals(rowgroup.offsetHeight, 100); }, "rowgroup");
+ test(()=> { assert_equals(row.offsetHeight, 100); }, "row");
+ test(()=> { assert_equals(cell.offsetHeight, 100); }, "cell");
+ test(()=> { assert_equals(content.offsetHeight, 100); }, "content");
+</script>
diff --git a/testing/web-platform/tests/css/css-break/table/table-row-end-border-1-crash.html b/testing/web-platform/tests/css/css-break/table/table-row-end-border-1-crash.html
new file mode 100644
index 0000000000..3947dbdada
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-row-end-border-1-crash.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1336163">
+<div style="columns: 2; height: 1px;">
+ <table style="border-collapse: collapse;">
+ <tbody>
+ <tr style="border-bottom: 10px solid;">
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-row-end-border-2-crash.html b/testing/web-platform/tests/css/css-break/table/table-row-end-border-2-crash.html
new file mode 100644
index 0000000000..e5c37cbdcf
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-row-end-border-2-crash.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1336163">
+<div style="columns: 2; height: 1px;">
+ <table>
+ <tbody>
+ <tr style="border-bottom: 10px solid;">
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-row-end-padding-crash.html b/testing/web-platform/tests/css/css-break/table/table-row-end-padding-crash.html
new file mode 100644
index 0000000000..2fd7feb15d
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-row-end-padding-crash.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1336163">
+<div style="columns: 2; height: 1px;">
+ <table>
+ <tbody>
+ <tr style="padding-bottom: 10px;">
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-row-paint-htb-ltr-ref.html b/testing/web-platform/tests/css/css-break/table/table-row-paint-htb-ltr-ref.html
new file mode 100644
index 0000000000..74e99b0143
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-row-paint-htb-ltr-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <div style="position: relative; inline-size: 100%; block-size: 400px;">
+ <div style="position: absolute; inset-block-start: 0; inline-size: 100%; background: red; block-size: 50px;"></div>
+ <div class="pattern" style="position: absolute; inset-block-start: 60px; inset-inline-start: 10px; inline-size: calc(100% - 20px); block-size: 110px;"></div>
+ <div class="pattern" style="position: absolute; inset-block-start: 180px; inset-inline-start: 10px; inline-size: calc(100% - 20px); block-size: 135px;"></div>
+ <div style="position: absolute; inset-block-start: 60px; inset-inline-start: 45px; inline-size: 10px; block-size: 255px; background: white;"></div>
+ <div style="position: absolute; inset-block-end: 0; inline-size: 100%; background: red; block-size: 75px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-row-paint-htb-ltr.html b/testing/web-platform/tests/css/css-break/table/table-row-paint-htb-ltr.html
new file mode 100644
index 0000000000..ecc156bd38
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-row-paint-htb-ltr.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<link rel="match" href="table-row-paint-htb-ltr-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <table style="border-spacing: 10px; inline-size: 100%;">
+ <caption style="background: red; block-size: 50px;"></caption>
+ <tr class="pattern" style="block-size: 110px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <tr class="pattern" style="block-size: 135px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <caption style="caption-side: bottom; background: red; block-size: 75px;"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-row-paint-vlr-rtl-ref.html b/testing/web-platform/tests/css/css-break/table/table-row-paint-vlr-rtl-ref.html
new file mode 100644
index 0000000000..587b6c1ee4
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-row-paint-vlr-rtl-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to right, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <div style="position: relative; inline-size: 100%; block-size: 400px;">
+ <div style="position: absolute; inset-block-start: 0; inline-size: 100%; background: red; block-size: 50px;"></div>
+ <div class="pattern" style="position: absolute; inset-block-start: 60px; inset-inline-start: 10px; inline-size: calc(100% - 20px); block-size: 110px;"></div>
+ <div class="pattern" style="position: absolute; inset-block-start: 180px; inset-inline-start: 10px; inline-size: calc(100% - 20px); block-size: 135px;"></div>
+ <div style="position: absolute; inset-block-start: 60px; inset-inline-start: 45px; inline-size: 10px; block-size: 255px; background: white;"></div>
+ <div style="position: absolute; inset-block-end: 0; inline-size: 100%; background: red; block-size: 75px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-row-paint-vlr-rtl.html b/testing/web-platform/tests/css/css-break/table/table-row-paint-vlr-rtl.html
new file mode 100644
index 0000000000..f3d32c9df6
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-row-paint-vlr-rtl.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<link rel="match" href="table-row-paint-vlr-rtl-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to right, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <table style="border-spacing: 10px; inline-size: 100%;">
+ <caption style="background: red; block-size: 50px;"></caption>
+ <tr class="pattern" style="block-size: 110px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <tr class="pattern" style="block-size: 135px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <caption style="caption-side: bottom; background: red; block-size: 75px;"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-row-paint-vrl-rtl-ref.html b/testing/web-platform/tests/css/css-break/table/table-row-paint-vrl-rtl-ref.html
new file mode 100644
index 0000000000..ea81d9bcff
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-row-paint-vrl-rtl-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-rl;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to left, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <div style="position: relative; inline-size: 100%; block-size: 400px;">
+ <div style="position: absolute; inset-block-start: 0; inline-size: 100%; background: red; block-size: 50px;"></div>
+ <div class="pattern" style="position: absolute; inset-block-start: 60px; inset-inline-start: 10px; inline-size: calc(100% - 20px); block-size: 110px;"></div>
+ <div class="pattern" style="position: absolute; inset-block-start: 180px; inset-inline-start: 10px; inline-size: calc(100% - 20px); block-size: 135px;"></div>
+ <div style="position: absolute; inset-block-start: 60px; inset-inline-start: 45px; inline-size: 10px; block-size: 255px; background: white;"></div>
+ <div style="position: absolute; inset-block-end: 0; inline-size: 100%; background: red; block-size: 75px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-row-paint-vrl-rtl.html b/testing/web-platform/tests/css/css-break/table/table-row-paint-vrl-rtl.html
new file mode 100644
index 0000000000..a74a952b4b
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-row-paint-vrl-rtl.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<link rel="match" href="table-row-paint-vrl-rtl-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-rl;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to left, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <table style="border-spacing: 10px; inline-size: 100%;">
+ <caption style="background: red; block-size: 50px;"></caption>
+ <tr class="pattern" style="block-size: 110px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <tr class="pattern" style="block-size: 135px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <caption style="caption-side: bottom; background: red; block-size: 75px;"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-section-paint-htb-ltr-ref.html b/testing/web-platform/tests/css/css-break/table/table-section-paint-htb-ltr-ref.html
new file mode 100644
index 0000000000..75b2078c14
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-section-paint-htb-ltr-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <div style="position: relative; inline-size: 100%; block-size: 400px;">
+ <div style="position: absolute; inset-block-start: 0; inline-size: 100%; background: red; block-size: 50px;"></div>
+ <div class="pattern" style="position: absolute; inset-block-start: 60px; inset-inline-start: 10px; inline-size: calc(100% - 20px); block-size: 255px;"></div>
+ <div style="position: absolute; inset-block-start: 170px; inline-size: 100%; block-size: 10px; background: white;"></div>
+ <div style="position: absolute; inset-block-start: 60px; inset-inline-start: 45px; inline-size: 10px; block-size: 255px; background: white;"></div>
+ <div style="position: absolute; inset-block-end: 0; inline-size: 100%; background: red; block-size: 75px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-section-paint-htb-ltr.html b/testing/web-platform/tests/css/css-break/table/table-section-paint-htb-ltr.html
new file mode 100644
index 0000000000..ff0eda1be8
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-section-paint-htb-ltr.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<link rel="match" href="table-section-paint-htb-ltr-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <table style="border-spacing: 10px; inline-size: 100%;">
+ <caption style="background: red; block-size: 50px;"></caption>
+ <tbody class="pattern">
+ <tr style="block-size: 110px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <tr style="block-size: 135px;">
+ <td></td>
+ <td></td>
+ </tr>
+ </tbody>
+ <caption style="caption-side: bottom; background: red; block-size: 75px;"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-section-paint-vlr-rtl-ref.html b/testing/web-platform/tests/css/css-break/table/table-section-paint-vlr-rtl-ref.html
new file mode 100644
index 0000000000..a2e65520ec
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-section-paint-vlr-rtl-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to right, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <div style="position: relative; inline-size: 100%; block-size: 400px;">
+ <div style="position: absolute; inset-block-start: 0; inline-size: 100%; background: red; block-size: 50px;"></div>
+ <div class="pattern" style="position: absolute; inset-block-start: 60px; inset-inline-start: 10px; inline-size: calc(100% - 20px); block-size: 255px;"></div>
+ <div style="position: absolute; inset-block-start: 170px; inline-size: 100%; block-size: 10px; background: white;"></div>
+ <div style="position: absolute; inset-block-start: 60px; inset-inline-start: 45px; inline-size: 10px; block-size: 255px; background: white;"></div>
+ <div style="position: absolute; inset-block-end: 0; inline-size: 100%; background: red; block-size: 75px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-section-paint-vlr-rtl.html b/testing/web-platform/tests/css/css-break/table/table-section-paint-vlr-rtl.html
new file mode 100644
index 0000000000..1dbdb212ac
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-section-paint-vlr-rtl.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<link rel="match" href="table-section-paint-vlr-rtl-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-lr;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to right, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <table style="border-spacing: 10px; inline-size: 100%;">
+ <caption style="background: red; block-size: 50px;"></caption>
+ <tbody class="pattern">
+ <tr style="block-size: 110px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <tr style="block-size: 135px;">
+ <td></td>
+ <td></td>
+ </tr>
+ </tbody>
+ <caption style="caption-side: bottom; background: red; block-size: 75px;"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-section-paint-vrl-rtl-ref.html b/testing/web-platform/tests/css/css-break/table/table-section-paint-vrl-rtl-ref.html
new file mode 100644
index 0000000000..bc860a560f
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-section-paint-vrl-rtl-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<style>
+body {
+ writing-mode: vertical-rl;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to left, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <div style="position: relative; inline-size: 100%; block-size: 400px;">
+ <div style="position: absolute; inset-block-start: 0; inline-size: 100%; background: red; block-size: 50px;"></div>
+ <div class="pattern" style="position: absolute; inset-block-start: 60px; inset-inline-start: 10px; inline-size: calc(100% - 20px); block-size: 255px;"></div>
+ <div style="position: absolute; inset-block-start: 170px; inline-size: 100%; block-size: 10px; background: white;"></div>
+ <div style="position: absolute; inset-block-start: 60px; inset-inline-start: 45px; inline-size: 10px; block-size: 255px; background: white;"></div>
+ <div style="position: absolute; inset-block-end: 0; inline-size: 100%; background: red; block-size: 75px;"></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/table-section-paint-vrl-rtl.html b/testing/web-platform/tests/css/css-break/table/table-section-paint-vrl-rtl.html
new file mode 100644
index 0000000000..d079c35818
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/table-section-paint-vrl-rtl.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<link rel="match" href="table-section-paint-vrl-rtl-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#fragmentation">
+<link rel="help" href="https://drafts.csswg.org/css-tables-3/#rendering">
+<style>
+body {
+ writing-mode: vertical-rl;
+ direction: rtl;
+}
+.multicol {
+ inline-size: 400px;
+ block-size: 100px;
+ columns: 4;
+ column-fill: auto;
+ gap: 0;
+}
+.pattern {
+ background: repeating-linear-gradient(to left, orange, orange 30px, dodgerblue 30px, dodgerblue 60px);
+}
+</style>
+<div class="multicol">
+ <table style="border-spacing: 10px; inline-size: 100%;">
+ <caption style="background: red; block-size: 50px;"></caption>
+ <tbody class="pattern">
+ <tr style="block-size: 110px;">
+ <td></td>
+ <td></td>
+ </tr>
+ <tr style="block-size: 135px;">
+ <td></td>
+ <td></td>
+ </tr>
+ </tbody>
+ <caption style="caption-side: bottom; background: red; block-size: 75px;"></caption>
+ </table>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/tall-bottom-aligned-cell-with-bottom-padding.html b/testing/web-platform/tests/css/css-break/table/tall-bottom-aligned-cell-with-bottom-padding.html
new file mode 100644
index 0000000000..1e7ff9b12e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/tall-bottom-aligned-cell-with-bottom-padding.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:2; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="height:20px; background:green;"></div>
+ <div style="display:table; width:100%;">
+ <div style="display:table-cell; vertical-align:bottom; padding-bottom:30px;">
+ <div style="height:150px; background:green;"></div>
+ </div>
+ </div>
+ <div style="margin-top:-30px; height:30px; background:green;"></div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/tall-padding-crash.html b/testing/web-platform/tests/css/css-break/table/tall-padding-crash.html
new file mode 100644
index 0000000000..2b588586bf
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/tall-padding-crash.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1357123">
+<div style="columns:3; column-fill:auto; height:40px;">
+ <div style="height:30px;"></div>
+ <div style="display:table; padding-top:20px; padding-bottom:100px;">
+ <div></div>
+ </div>
+</div>
diff --git a/testing/web-platform/tests/css/css-break/table/truncated-border-spacing-at-fragmentainer-end.html b/testing/web-platform/tests/css/css-break/table/truncated-border-spacing-at-fragmentainer-end.html
new file mode 100644
index 0000000000..0a93b64275
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/truncated-border-spacing-at-fragmentainer-end.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1368054">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div id="mc" style="columns:1; column-fill:auto; width:100px; height:60px; background:red;">
+ <div style="display:table; width:100%; border-spacing:40px; background:green;">
+ <div style="height:20px;"></div>
+ </div>
+</div>
+<script>
+ document.body.offsetTop;
+ mc.style.height = "100px";
+</script>
diff --git a/testing/web-platform/tests/css/css-break/table/zero-height-repeated-footer-crash.html b/testing/web-platform/tests/css/css-break/table/zero-height-repeated-footer-crash.html
new file mode 100644
index 0000000000..4feca8344b
--- /dev/null
+++ b/testing/web-platform/tests/css/css-break/table/zero-height-repeated-footer-crash.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1354141">
+<div style="columns:3; column-fill:auto; height:100px;">
+ <div style="height:70px;"></div>
+ <div style="display:table;">
+ <div style="height:150px;"></div>
+ <div style="display:table-footer-group; break-inside:avoid;"></div>
+ </div>
+</div>