Add further wpt cases for repeat(auto-fill) and repeat(auto-fit) with multiple tracks.

Differential Revision: https://phabricator.services.mozilla.com/D61941

bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1613725
gecko-commit: 46865808d7b55e9a73bb06c4f64c440304967011
gecko-integration-branch: autoland
gecko-reviewers: mats
diff --git a/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002-ref.html b/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002-ref.html
new file mode 100644
index 0000000..754fec3
--- /dev/null
+++ b/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002-ref.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/css-grid/#typedef-auto-repeat">
+<head>
+  <style>
+
+.grid-container {
+  height: 30px;
+  width: 300px;
+  border-bottom: 2px solid #cfbfcf;
+}
+
+.grid-container > * { float: left; height: 30px; }
+.grid-container > :nth-child(2n) {  background: sienna; }
+.grid-container > :nth-child(2n + 1) {  background: orange; }
+
+</style>
+</head>
+
+<body>
+  <p>The test passes if it has the same visual effect as reference.</p>
+  <div class="grid-container">
+    <div style="width: 10px;"></div>
+    <div style="width: 20px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 40px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 40px;"></div>
+  </div>
+  <div class="grid-container">
+    <div style="width: 10px;"></div>
+    <div style="width: 20px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 40px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 50px; margin-left: 40px;"></div>
+  </div>
+  <div class="grid-container">
+    <div style="width: 20px; margin-left: 10px"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 30px; margin-left: 40px;"></div>
+    <div style="width: 40px;"></div>
+    <div style="width: 50px;"></div>
+    <div style="width: 60px;"></div>
+  </div>
+</body>
+
+</html>
diff --git a/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002.html b/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002.html
new file mode 100644
index 0000000..723d876
--- /dev/null
+++ b/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-002.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/css-grid/#typedef-auto-repeat">
+<link rel="match" href="grid-auto-repeat-multiple-values-002-ref.html">
+<head>
+  <style>
+
+.holder {
+  height: 30px;
+  width: 300px;
+  border-bottom: 2px solid #cfbfcf;
+}
+
+.grid-container {
+  display: grid;
+  grid-template-columns: 10px 20px repeat(auto-fill, 30px 40px) 50px 60px;
+  grid-template-rows: repeat(auto-fill, minmax(30px, auto));
+}
+
+.grid-container > :nth-child(2n)   {  background: sienna; }
+.grid-container > :nth-child(2n+1) {  background: orange; }
+  </style>
+</head>
+
+<body>
+  <p>The test passes if it has the same visual effect as reference.</p>
+  <div class="holder">
+    <div class="grid-container">
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+    </div>
+  </div>
+
+  <div class="holder">
+    <div class="grid-container">
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div style="grid-column: 7;"></div>
+    </div>
+  </div>
+
+  <div class="holder">
+    <div class="grid-container">
+      <div style="grid-column: 2;"></div>
+      <div></div>
+      <div style="grid-column: 5;"></div>
+      <div></div>
+      <div></div>
+      <div></div>
+    </div>
+  </div>
+</body>
+
+</html>
diff --git a/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003-ref.html b/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003-ref.html
new file mode 100644
index 0000000..975c94b
--- /dev/null
+++ b/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003-ref.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<html>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/css-grid/#typedef-auto-repeat">
+<head>
+  <style>
+
+.grid-container {
+  height: 30px;
+  width: 300px;
+  border-bottom: 2px solid #cfbfcf;
+}
+
+.grid-container > * { float: left; height: 30px; }
+.grid-container > :nth-child(2n) {  background: sienna; }
+.grid-container > :nth-child(2n + 1) {  background: orange; }
+
+.auto-fit-long {
+    width: 650px;
+}
+
+.auto-fit-long > :nth-child(2n) { width: 30px; }
+.auto-fit-long > :nth-child(2n+1) { width: 40px; }
+
+.auto-medium-fit {
+    width: 510px;
+}
+
+</style>
+</head>
+
+<body>
+  <p>The test passes if it has the same visual effect as reference.</p>
+  <div class="grid-container">
+    <div style="width: 10px;"></div>
+    <div style="width: 20px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 40px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 40px;"></div>
+  </div>
+  <div class="grid-container">
+    <div style="width: 10px;"></div>
+    <div style="width: 20px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 40px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 50px;"></div>
+  </div>
+  <div class="grid-container auto-fit-long">
+    <div style="width: 20px; margin-left: 10px"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+  <div class="grid-container auto-fit-long">
+    <div style="width: 20px; margin-left: 10px"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+  <div class="grid-container auto-fit-long">
+    <div style="width: 20px; margin-left: 10px"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+  <div class="grid-container">
+    <div style="width: 20px; margin-left: 10px"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 40px;"></div>
+    <div style="width: 50px;"></div>
+    <div style="width: 60px;"></div>
+  </div>
+  <div class="grid-container">
+    <div style="width: 10px;"></div>
+    <div style="width: 20px;"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 40px;"></div>
+    <div style="width: 50px;"></div>
+    <div style="width: 60px;"></div>
+  </div>
+  <div class="grid-container">
+    <div style="width: 40px; margin-left: 30px"></div>
+    <div style="width: 30px;"></div>
+    <div style="width: 40px;"></div>
+    <div style="width: 50px;"></div>
+    <div style="width: 60px;"></div>
+  </div>
+  <div class="grid-container auto-medium-fit">
+    <div style="width: 10px;"></div>
+    <div style="width: 110px; margin-left: 20px"></div>
+    <div style="width: 30px;"></div>
+  </div>
+</body>
+
+</html>
diff --git a/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003.html b/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003.html
new file mode 100644
index 0000000..486259a
--- /dev/null
+++ b/css/css-grid/grid-definition/grid-auto-repeat-multiple-values-003.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html>
+<html>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/css-grid/#typedef-auto-repeat">
+<link rel="match" href="grid-auto-repeat-multiple-values-003-ref.html">
+<head>
+  <style>
+
+.holder {
+  height: 30px;
+  width: 300px;
+  border-bottom: 2px solid #cfbfcf;
+}
+
+.wide-holder {
+  height: 30px;
+  width: 650px;
+  border-bottom: 2px solid #cfbfcf;
+}
+
+.grid-container {
+  display: grid;
+  grid-template-columns: 10px 20px repeat(auto-fit, 30px 40px) 50px 60px;
+  grid-template-rows: repeat(auto-fill, minmax(30px, auto));
+}
+
+.grid-container > :nth-child(2n)   {  background: sienna; }
+.grid-container > :nth-child(2n+1) {  background: orange; }
+  </style>
+</head>
+
+<body>
+  <p>The test passes if it has the same visual effect as reference.</p>
+  <div class="holder">
+    <div class="grid-container">
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+    </div>
+  </div>
+
+  <div class="holder">
+    <div class="grid-container">
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div style="grid-column: 7;"></div>
+    </div>
+  </div>
+  <!-- Test correct tracking of collapsed tracks -->
+  <div class="holder" style="width: 650px">
+    <div class="grid-container">
+      <div style="grid-column: 2;"></div>
+      <div></div>
+      <div style="grid-column: 6;"></div>
+      <div></div>
+      <div></div>
+      <div></div>
+    </div>
+  </div>
+  <div class="holder" style="width: 650px">
+    <div class="grid-container">
+      <div style="grid-column: 2;"></div>
+      <div></div>
+      <div style="grid-column: 10;"></div>
+      <div></div>
+      <div></div>
+      <div></div>
+    </div>
+  </div>
+  <div class="holder" style="width: 650px">
+    <div class="grid-container">
+      <div style="grid-column: 2;"></div>
+      <div></div>
+      <div style="grid-column: 12;"></div>
+      <div></div>
+      <div></div>
+      <div></div>
+    </div>
+  </div>
+  <div class="holder">
+    <div class="grid-container">
+      <div style="grid-column: 2;"></div>
+      <div></div>
+      <div style="grid-column: 5;"></div>
+      <div></div>
+      <div></div>
+      <div></div>
+    </div>
+  </div>
+  <div class="holder">
+    <div class="grid-container">
+      <div></div>
+      <div></div>
+      <div style="grid-column: 5;"></div>
+      <div></div>
+      <div></div>
+      <div></div>
+    </div>
+  </div>
+  <!-- Test correct tracking of collapsed tracks when the grid begins in the middle of the repeat. -->
+  <div class="holder">
+    <div class="grid-container">
+      <div style="grid-column: 4;"></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+      <div></div>
+    </div>
+  </div>
+  <!-- Test grid span with correct tracking of collapsed tracks. -->
+  <div class="holder" style="width: 510px">
+    <div class="grid-container">
+      <div></div>
+      <div style="grid-column: 4 / 7;"></div>
+      <div></div>
+    </div>
+  </div>
+</body>
+
+</html>
diff --git a/css/css-grid/grid-definition/grid-support-named-grid-lines-002-ref.html b/css/css-grid/grid-definition/grid-support-named-grid-lines-002-ref.html
new file mode 100644
index 0000000..d656964
--- /dev/null
+++ b/css/css-grid/grid-definition/grid-support-named-grid-lines-002-ref.html
@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://www.w3.org/TR/css-grid-1/#named-lines" title="5.1.1. Named Grid Lines: the '(&lt;custom-ident\&gt;*)' syntax">
+<link rel="help" href="https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fill" title="7.2.2.2. Repeat-to-fill: 'auto-fill' and 'auto-fit' repetitions">
+<style>
+
+.holder {
+  width: 300px;
+  height: 20px;
+  border-bottom: 2px solid #cfbfcf;
+}
+
+.holder > :nth-child(2) {
+  clear: left; /* Forces the div to a new line to simulate a new grid row. */
+  padding-top: 2px; /* Simulates the grid row gap. */
+}
+
+.grid-container > * { float: left; height: 8px; }
+
+.grid-container > :nth-child(3n)   {  background: sienna; }
+.grid-container > :nth-child(3n+1) {  background: gold; }
+.grid-container > :nth-child(3n+2) {  background: orange; }
+
+.alt-color > :nth-child(2n) { background: sienna; }
+.alt-color > :nth-child(2n+1) { background: orange; }
+
+.invis { width: 0px; visibility: none; }
+
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:30px; margin-left:30px"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:50px; margin-left:170px"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:30px; margin-left:30px"></div>
+    <div style="width:30px; margin-left:40px"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:30px; margin-left:20px"></div>
+    <div style="width:30px; margin-left:40px"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:30px; margin-left:30px"></div>
+    <div style="width:50px; margin-left:110px"></div>
+    <div style="width:60px;"></div>
+  </div>
+  <div class="grid-container">
+    <div style="width:10px"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:30px; margin-left:20px"></div>
+    <div style="width:50px; margin-left:110px"></div>
+    <div style="width:60px;"></div>
+  </div>
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:50px; margin-left:10px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:90px; margin-left:10px;"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:90px;"></div>
+    <div class="invis"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div style="width:120px;"></div>
+    <div style="width:40px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:90px;"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:50px;"></div>
+    <div class="invis"></div>
+    <div style="width:40px;"></div>
+    <div style="width:30px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div style="width:90px;"></div>
+    <div style="width:30px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:50px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:20px;"></div>
+    <div style="width:140px;"></div>
+    <div style="width:50px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:20px;"></div>
+    <div class="invis"></div>
+    <div style="width:140px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div style="width:30px;"></div>
+    <div style="width:140px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:140px; margin-left:20px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:210px;"></div>
+  </div>
+</div>
+
diff --git a/css/css-grid/grid-definition/grid-support-named-grid-lines-002.html b/css/css-grid/grid-definition/grid-support-named-grid-lines-002.html
new file mode 100644
index 0000000..6b3b19e
--- /dev/null
+++ b/css/css-grid/grid-definition/grid-support-named-grid-lines-002.html
@@ -0,0 +1,219 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Support for named grid lines when 'grid-template-columns' and 'grid-template-rows' have multiple values inside of a repeat.</title>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://www.w3.org/TR/css-grid-1/#named-lines" title="5.1.1. Named Grid Lines: the '(&lt;custom-ident\&gt;*)' syntax">
+<link rel="help" href="https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fill" title="7.2.2.2. Repeat-to-fill: 'auto-fill' and 'auto-fit' repetitions">
+<link rel="match" href="grid-support-named-grid-lines-002-ref.html">
+<style>
+
+.holder {
+  width: 300px;
+  height: 20px;
+  border-bottom: 2px solid #cfbfcf;
+}
+
+.grid-container {
+  display: grid;
+  /*
+    Defines the grid areas 'repeat', which covers the repeat only, and
+    'around-repeat' which covers the repeat and one track on either end.
+
+    Provides the line name 'all' in every track, the line names 'v' and 'u'
+    which alternate in every grid line.
+  */
+  grid-template-columns: [v] 10px [around-repeat-start a t-start w-start u all] 20px [repeat-start b] repeat(auto-fill, [all x v] 30px [all w-end y u] 40px [all t-end z]) [repeat-end c v] 50px [around-repeat-end all d u] 60px [e v];
+  grid-template-rows:
+    [w-start t-start around-repeat-start repeat-start]
+    repeat(auto-fill, 8px)
+    [w-end   t-end   around-repeat-end   repeat-end  ]
+    8px;
+  grid-row-gap: 2px;
+}
+
+.grid-container > :nth-child(3n)   {  background: sienna; }
+.grid-container > :nth-child(3n+1) {  background: gold; }
+.grid-container > :nth-child(3n+2) {  background: orange; }
+
+/* Alternate colors for some grid containers, where sometimes multiple grid
+ items would appear as one item or the actual ordering would be ambiguous
+ otherwise. */
+.alt-color > :nth-child(2n) { background: sienna; }
+.alt-color > :nth-child(2n+1) { background: orange; }
+
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<!-- Use the line names just before and just after the repeat. -->
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column:b / span 1"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column:c / span 1"></div>
+  </div>
+</div>
+
+<!-- Use line names that are inside a repeat. -->
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column-start:x"></div>
+    <div style="grid-column-start:z"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-column-start:x"></div>
+    <div style="grid-column-start:z"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column-start:x 1"></div>
+    <div style="grid-column-start:z 2"></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-column-start:x 1"></div>
+    <div style="grid-column-start:z 2"></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<!-- Using a span that goes from outside a repeat to inside the repeat. -->
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column:u / y"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column:u / z"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<!-- Using an area which has one end inside the repeat. -->
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-area: t;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div style="grid-area: t;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-area: t;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-area: w;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div style="grid-area: w;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-area: w;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<!-- Using an area which spans the entire repeat. -->
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div></div>
+    <div style="grid-area: repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-area: repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div></div>
+    <div style="grid-area: repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-area: repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-area: around-repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
diff --git a/css/css-grid/grid-definition/grid-support-named-grid-lines-003-ref.html b/css/css-grid/grid-definition/grid-support-named-grid-lines-003-ref.html
new file mode 100644
index 0000000..33f88bf
--- /dev/null
+++ b/css/css-grid/grid-definition/grid-support-named-grid-lines-003-ref.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://www.w3.org/TR/css-grid-1/#named-lines" title="5.1.1. Named Grid Lines: the '(&lt;custom-ident\&gt;*)' syntax">
+<link rel="help" href="https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fill" title="7.2.2.2. Repeat-to-fill: 'auto-fill' and 'auto-fit' repetitions">
+<style>
+
+.holder {
+  width: 300px;
+  height: 20px;
+  border-bottom: 2px solid #cfbfcf;
+}
+
+.holder > :nth-child(2) {
+  clear: left; /* Forces the div to a new line to simulate a new grid row. */
+  padding-top: 2px; /* Simulates the grid row gap. */
+}
+
+.grid-container > * { float: left; height: 8px; }
+
+.grid-container > :nth-child(3n)   {  background: sienna; }
+.grid-container > :nth-child(3n+1) {  background: gold; }
+.grid-container > :nth-child(3n+2) {  background: orange; }
+
+.alt-color > :nth-child(2n) { background: sienna; }
+.alt-color > :nth-child(2n+1) { background: orange; }
+
+.invis { width: 0px; visibility: none; }
+
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:30px; margin-left:30px"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:30px; margin-left:20px"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:30px; margin-left:30px"></div>
+    <div style="width:50px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+  <div class="grid-container">
+    <div style="width:10px"></div>
+    <div style="width:20px"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:30px; margin-left:20px;"></div>
+    <div style="width:50px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px"></div>
+    <div style="width:20px"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:50px; margin-left:10px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:90px; margin-left:10px;"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:90px;"></div>
+    <div class="invis"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div style="width:120px;"></div>
+    <div style="width:40px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:90px;"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:50px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:50px;"></div>
+    <div class="invis"></div>
+    <div style="width:40px;"></div>
+    <div style="width:30px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div style="width:90px;"></div>
+    <div style="width:30px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:50px;"></div>
+    <div style="width:40px;"></div>
+    <div style="width:30px;"></div>
+    <div style="width:40px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:20px;"></div>
+    <div style="width:140px;"></div>
+    <div style="width:50px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:20px;"></div>
+    <div class="invis"></div>
+    <div style="width:140px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div style="width:30px;"></div>
+    <div style="width:140px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:140px; margin-left:20px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="width:10px;"></div>
+    <div style="width:210px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div style="width:10px;"></div>
+    <div style="width:210px;"></div>
+    <div style="width:60px;"></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div class="invis"></div>
+    <div style="width:10px;"></div>
+    <div class="invis"></div>
+    <div style="width:210px;"></div>
+  </div>
+</div>
+
diff --git a/css/css-grid/grid-definition/grid-support-named-grid-lines-003.html b/css/css-grid/grid-definition/grid-support-named-grid-lines-003.html
new file mode 100644
index 0000000..c2c7224
--- /dev/null
+++ b/css/css-grid/grid-definition/grid-support-named-grid-lines-003.html
@@ -0,0 +1,224 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Support for named grid lines when 'grid-template-columns' and 'grid-template-rows' have multiple values inside of a repeat.</title>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://www.w3.org/TR/css-grid-1/#named-lines" title="5.1.1. Named Grid Lines: the '(&lt;custom-ident\&gt;*)' syntax">
+<link rel="help" href="https://www.w3.org/TR/css-grid-1/#valdef-repeat-auto-fill" title="7.2.2.2. Repeat-to-fill: 'auto-fill' and 'auto-fit' repetitions">
+<link rel="match" href="grid-support-named-grid-lines-003-ref.html">
+<style>
+
+.holder {
+  width: 300px;
+  height: 20px;
+  border-bottom: 2px solid #cfbfcf;
+}
+
+.grid-container {
+  display: grid;
+  /*
+    Defines the grid areas 'repeat', which covers the repeat only, and
+    'around-repeat' which covers the repeat and one track on either end.
+
+    Provides the line name 'all' in every track, the line names 'v' and 'u'
+    which alternates in every grid line.
+  */
+  grid-template-columns: [v] 10px [around-repeat-start a t-start w-start u all] 20px [repeat-start b] repeat(auto-fit, [all x v] 30px [all w-end y u] 40px [all t-end z]) [repeat-end c v] 50px [around-repeat-end all d u] 60px [e v];
+  grid-template-rows:
+    [w-start t-start around-repeat-start repeat-start]
+    repeat(auto-fit, 8px)
+    [w-end   t-end   around-repeat-end   repeat-end  ]
+    8px;
+  grid-row-gap: 2px;
+}
+
+.grid-container > :nth-child(3n)   {  background: sienna; }
+.grid-container > :nth-child(3n+1) {  background: gold; }
+.grid-container > :nth-child(3n+2) {  background: orange; }
+
+/* Alternate colors for some grid containers, where sometimes multiple grid
+ items would appear as one item or the actual ordering would be ambiguous
+ otherwise. */
+.alt-color > :nth-child(2n) { background: sienna; }
+.alt-color > :nth-child(2n+1) { background: orange; }
+
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<!-- Use line names that are inside a repeat. -->
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column-start:x"></div>
+    <div style="grid-column-start:z"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-column-start:x"></div>
+    <div style="grid-column-start:z"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column-start:x 1"></div>
+    <div style="grid-column-start:z 2"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-column-start:x 1"></div>
+    <div style="grid-column-start:z 2"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<!-- Using a span that goes from outside a repeat to inside the repeat. -->
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column:u / y"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-column:u / z"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<!-- Using an area which has one end inside the repeat. -->
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-area: t;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div style="grid-area: t;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-area: t;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-area: w;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div style="grid-area: w;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-area: w;"></div>
+    <div></div>
+    <div></div>
+    <div></div>
+  </div>
+</div>
+
+<!-- Using an area which spans the entire repeat. -->
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div></div>
+    <div style="grid-area: repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-area: repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div></div>
+    <div style="grid-area: repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-area: repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div></div>
+    <div style="grid-area: around-repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container alt-color">
+    <div></div>
+    <div style="grid-area: around-repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
+<div class="holder">
+  <div class="grid-container">
+    <div style="grid-area: around-repeat;"></div>
+    <div></div>
+  </div>
+</div>
+
diff --git a/css/css-grid/parsing/grid-template-columns-computed-withcontent.html b/css/css-grid/parsing/grid-template-columns-computed-withcontent.html
index a788ca2..ed67f03 100644
--- a/css/css-grid/parsing/grid-template-columns-computed-withcontent.html
+++ b/css/css-grid/parsing/grid-template-columns-computed-withcontent.html
@@ -80,6 +80,12 @@
                     '100px [two] 100px [two] 100px [two]');
 test_computed_value("grid-template-columns", 'repeat(auto-fit, [three] minmax(max-content, 6em) [four])',
                     '[three] 240px [four]');
+test_computed_value('grid-template-columns', '[a] 21px [b] repeat(auto-fill, [c] 22px [d] 23px [e]) [f] 24px [g]',
+                    '[a] 21px [b c] 22px [d] 23px [e c] 22px [d] 23px [e c] 22px [d] 23px [e c] 22px [d] 23px [e c] 22px [d] 23px [e f] 24px [g]');
+test_computed_value('grid-template-columns', '[a] 21px [b c] repeat(auto-fill, [d e] 22px [f g h] 23px [i j k l]) [m n] 24px [o]',
+                    '[a] 21px [b c d e] 22px [f g h] 23px [i j k l d e] 22px [f g h] 23px [i j k l d e] 22px [f g h] 23px [i j k l d e] 22px [f g h] 23px [i j k l d e] 22px [f g h] 23px [i j k l m n] 24px [o]');
+test_computed_value('grid-template-columns', '[a] repeat(2, [b] 20px [c d] 21px [e f g]) [h i] repeat(auto-fit, [j] 22px [k l m] 23px [n o p q]) [r s]',
+                    '[a b] 20px [c d] 21px [e f g b] 20px [c d] 21px [e f g h i j] 0px [k l m] 0px [n o p q j] 0px [k l m] 0px [n o p q j] 0px [k l m] 0px [n o p q j] 0px [k l m] 0px [n o p q r s]');
 
 // <auto-track-list> =
 // [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?
diff --git a/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-001.html b/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-001.html
new file mode 100644
index 0000000..c18f296
--- /dev/null
+++ b/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-001.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: getComputedStyle().gridTemplateColumns</title>
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template-columns">
+<meta name="assert" content="grid-template-columns computed value is the keyword none or a computed track list.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<script src="/css/css-grid/support/grid-child-utils.js"></script>
+<style>
+
+#target {
+    display: grid;
+    width: 32px;
+    height: 10px;
+};
+
+</style>
+</head>
+<body>
+<div id="container">
+  <div id="target">
+    <div></div>
+    <div></div>
+    <div id="child"></div>
+    <div style="grid-column: 7"></div>
+    <div></div>
+  </div>
+</div>
+<script>
+
+let autoFitTester = new GridChildHelper(gridChildHelperCol,
+    "[a] 1px [b] 2px [c d] repeat(auto-fit, [e f] 3px [g] 4px [h]) [i] 5px [k] 6px [l m] ");
+
+let autoFillTester = new GridChildHelper(gridChildHelperCol,
+    "[a] 1px [b] 2px [c d] repeat(auto-fill, [e f] 3px [g] 4px [h]) [i] 5px [k] 6px [l m] ");
+
+// Auto-fit
+autoFitTester.runTest(3, "[a] 1px [b] 2px [c d e f] 3px [g] 0px [h e f] 0px [g] 0px [h i] 5px [k] 6px [l m]");
+autoFitTester.runTest(4, "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 0px [g] 0px [h i] 5px [k] 6px [l m]");
+autoFitTester.runTest(5, "[a] 1px [b] 2px [c d e f] 0px [g] 0px [h e f] 3px [g] 0px [h i] 5px [k] 6px [l m]");
+autoFitTester.runTest(6, "[a] 1px [b] 2px [c d e f] 0px [g] 0px [h e f] 0px [g] 4px [h i] 5px [k] 6px [l m]");
+autoFitTester.runTest("4 / 5", "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 0px [g] 0px [h i] 5px [k] 6px [l m]");
+autoFitTester.runTest("4 / 6", "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 3px [g] 0px [h i] 5px [k] 6px [l m]");
+autoFitTester.runTest("3 / 6", "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 0px [h i] 5px [k] 6px [l m]");
+// Auto-fill. These tests are semi-redundant, but should still pass.
+autoFillTester.runTest(3, "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
+autoFillTester.runTest(4, "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
+autoFillTester.runTest(5, "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
+autoFillTester.runTest("4 / 7", "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
+autoFillTester.runTest("3 / 6", "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h i] 5px [k] 6px [l m]");
+
+</script>
+</body>
+</html>
diff --git a/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-002.html b/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-002.html
new file mode 100644
index 0000000..8cb9209
--- /dev/null
+++ b/css/css-grid/parsing/grid-template-repeat-auto-computed-withcontent-002.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: getComputedStyle().gridTemplateColumns</title>
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template-columns">
+<meta name="assert" content="grid-template-columns computed value is the keyword none or a computed track list.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<script src="/css/css-grid/support/grid-child-utils.js"></script>
+<style>
+
+#target {
+    display: grid;
+    width: 54px;
+    height: 32px;
+};
+
+</style>
+</head>
+<body>
+<div id="container">
+  <div id="target">
+    <div></div>
+    <div></div>
+    <div style="grid-column: 4"></div>
+    <div id="child"></div>
+    <div style="grid-column: 10"></div>
+    <div></div>
+  </div>
+</div>
+<script>
+
+// Style with 3 repeat tracks.
+let style3 =
+    "[a] 1px [b] 2px [c d] repeat(auto-fit, [e f] 3px [g] 4px [h] 5px [i j]) [k] 7px [k] 8px [l m]";
+let col3Tester = new GridChildHelper(gridChildHelperCol, style3);
+let rowTester = new GridChildHelper(gridChildHelperRow, style3);
+
+// Style with 2 repeat tracks.
+let style2 =
+    "[a] 1px [b] 2px [c d] repeat(auto-fit, [e f] 3px [g] 4px [h]) [i j] 7px [k] 8px [l m]";
+let col2Tester = new GridChildHelper(gridChildHelperCol, style2);
+
+rowTester.runTest(3,
+    "[a] 1px [b] 2px [c d e f] 3px [g] 0px [h] 0px [i j k] 7px [k] 8px [l m]");
+rowTester.runTest(5,
+    "[a] 1px [b] 2px [c d e f] 0px [g] 0px [h] 5px [i j k] 7px [k] 8px [l m]");
+rowTester.runTest("3 / 8",
+    "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
+rowTester.runTest("4 / span 2",
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
+rowTester.runTest("4 / 5",
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 0px [i j k] 7px [k] 8px [l m]");
+
+col3Tester.runTest(3,
+    "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h] 0px [i j e f] 0px [g] 0px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
+col3Tester.runTest(6,
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 0px [i j e f] 3px [g] 0px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
+col3Tester.runTest("3 / 8",
+    "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h] 5px [i j e f] 3px [g] 4px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
+col3Tester.runTest("5 / span 2",
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 5px [i j e f] 3px [g] 0px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
+col3Tester.runTest("7 / span 2",
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
+col3Tester.runTest("5 / 8",
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 5px [i j e f] 3px [g] 4px [h] 0px [i j e f] 0px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
+col3Tester.runTest("8 / 10",
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h] 0px [i j e f] 0px [g] 0px [h] 5px [i j e f] 3px [g] 4px [h] 5px [i j k] 7px [k] 8px [l m]");
+
+col2Tester.runTest(3,
+    "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 0px [g] 0px [h e f] 0px [g] 0px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
+col2Tester.runTest(6,
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 0px [g] 4px [h e f] 0px [g] 0px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
+col2Tester.runTest("3 / 8",
+    "[a] 1px [b] 2px [c d e f] 3px [g] 4px [h e f] 3px [g] 4px [h e f] 3px [g] 0px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
+col2Tester.runTest("6 / span 2",
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h e f] 0px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
+col2Tester.runTest("5 / 10",
+    "[a] 1px [b] 2px [c d e f] 0px [g] 4px [h e f] 3px [g] 4px [h e f] 3px [g] 4px [h e f] 3px [g] 4px [h e f] 3px [g] 0px [h i j] 7px [k] 8px [l m]");
+
+</script>
+</body>
+</html>
diff --git a/css/css-grid/subgrid/grid-template-computed-nogrid.html b/css/css-grid/subgrid/grid-template-computed-nogrid.html
new file mode 100644
index 0000000..6c2042f
--- /dev/null
+++ b/css/css-grid/subgrid/grid-template-computed-nogrid.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: getComputedStyle().gridTemplateColumns</title>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/css-grid-2/#resolved-track-list" "title"="2.3. Resolved Value of a Track Listing">
+<meta name="assert" content="Checks the resolved value of grid-template-columns or grid-template-columns on an element which is not a grid container.">
+<style>
+#target {
+  display: block;
+  height: 1px;
+  font-size: 1px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<div id="target"></div>
+<script>
+test_computed_value("grid-template-columns", "subgrid [a]");
+test_computed_value("grid-template-columns", "subgrid [a] [b]");
+test_computed_value("grid-template-columns", "subgrid [a] [b] [b] [c]");
+test_computed_value("grid-template-columns", "subgrid [a] [b c d] [e f] [e f] [g]");
+test_computed_value("grid-template-columns", "subgrid [a b c] [d] [e f]");
+test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c])");
+test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c]) [g] [h i]");
+test_computed_value("grid-template-columns", "subgrid [a] repeat(auto-fill, [c]) [g] [h i]");
+test_computed_value("grid-template-columns", "subgrid [a b] repeat(auto-fill, [c]) [g]");
+test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c]) [g h]");
+test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c])");
+test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c d])");
+test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c d]) [g] [h i]");
+test_computed_value("grid-template-columns", "subgrid [a] repeat(auto-fill, [c d]) [g] [h i]");
+test_computed_value("grid-template-columns", "subgrid [a b] repeat(auto-fill, [c d]) [g]");
+test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c d]) [g h]");
+test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c d])");
+test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c] [d])");
+test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c] [d]) [g] [h i]");
+test_computed_value("grid-template-columns", "subgrid [a] repeat(auto-fill, [c] [d]) [g] [h i]");
+test_computed_value("grid-template-columns", "subgrid [a b] repeat(auto-fill, [c] [d]) [g]");
+test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c] [d]) [g h]");
+test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c] [d])");
+test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c] [d e])");
+test_computed_value("grid-template-columns", "subgrid repeat(auto-fill, [c] [d e]) [g] [h i]");
+test_computed_value("grid-template-columns", "subgrid [a] repeat(auto-fill, [c] [d e]) [g] [h i]");
+test_computed_value("grid-template-columns", "subgrid [a b] repeat(auto-fill, [c] [d e]) [g]");
+test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c] [d e]) [g h]");
+test_computed_value("grid-template-columns", "subgrid [a] [b] repeat(auto-fill, [c] [d e])");
+
+</script>
diff --git a/css/css-grid/subgrid/repeat-auto-fill-008-ref.html b/css/css-grid/subgrid/repeat-auto-fill-008-ref.html
new file mode 100644
index 0000000..4cbb154
--- /dev/null
+++ b/css/css-grid/subgrid/repeat-auto-fill-008-ref.html
@@ -0,0 +1,322 @@
+<!DOCTYPE HTML>
+<!--
+     Any copyright is dedicated to the Public Domain.
+     http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+  <head>
+    <style>
+html,body {
+  color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0;
+}
+
+.grid {
+  display: inline-grid;
+  grid-auto-columns: 15px;
+  border: 1px solid;
+}
+
+.subgrid {
+  display: grid;
+  grid-column: 3 / span 4;
+  grid-auto-rows: 8px;
+  background: grey;
+}
+
+.fill-0a  { grid-template-columns: subgrid [z] [z] [z] [z] [z] }  /* [z] [z] [z] [z] [z] */
+.fill-0b  { grid-template-columns: subgrid [z] [z] [z] [z] [z] }  /* [z] [z] [z] [z] [z] */
+.fill-0c  { grid-template-columns: subgrid [x] [y] [y] [y] [z] }  /* [x] [y] [y] [y] [z] */
+.fill-0d  { grid-template-columns: subgrid [x] [z] [z] [z] [z] }  /* [x] [z] [z] [z] [z] */
+.fill-0e  { grid-template-columns: subgrid [x] [x] [x] [x] [z] }  /* [x] [x] [x] [x] [z] */
+.fill-0f  { grid-template-columns: subgrid [x] [x] [z] [z] [z] }  /* [x] [x] [z] [z] [z] */
+.fill-0g  { grid-template-columns: subgrid [x] [y] [z] [z]  }  /* [x] [y] [z] [z] [] */
+.fill-0h  { grid-template-columns: subgrid [x] [y] [x] [y] [z] }  /* [x] [y] [x] [y] [z] */
+.fill-0i  { grid-template-columns: subgrid [x] [y] [x] [y] }  /* [x] [y] [x] [y] [] */
+.fill-0j  { grid-template-columns: subgrid [y] [y] [y] [z] [z] }  /* [y] [y] [y] [z] [z] */
+.fill-0k  { grid-template-columns: subgrid [x] [y] [z] [z] }  /* [x] [y] [z] [z] [] */
+.fill-0l  { grid-template-columns: subgrid [z] [x] [y] [z] }  /* [z] [x] [y] [z] [] */
+.fill-0m  { grid-template-columns: subgrid [z] [x] [y] [x] [y] }  /* [z] [x] [y] [x] [y] */
+.fill-0n  { grid-template-columns: subgrid [z] [z] [z] [z] [z] }  /* [z] [z] [z] [z] [z] */
+.fill-0o  { grid-template-columns: subgrid [z] [x] [y] [z] }  /* [z] [x] [y] [z] [] */
+.fill-0p  { grid-template-columns: subgrid [z] [x] [y] [z] [x] }  /* [z] [x] [y] [z] [x] */
+.fill-0q  { grid-template-columns: subgrid [x] [y] [z] [x] }  /* [x] [y] [z] [x] [] */
+.fill-0r  { grid-template-columns: subgrid [x] [y] [z] [y] [z] }  /* [x] [y] [z] [y] [z] */
+
+.fill-0s  {
+  grid-column: 2 / span 5;
+  grid-template-columns: subgrid [w] [y] [z] [y] [z] [x];  /* [w] [y] [z] [y] [z] [x] */
+}
+
+.fill-0t  {
+  grid-column: 1 / span 6;
+  grid-template-columns: subgrid [w] [y] [z] [y] [z] [x];  /* [w] [y] [z] [y] [z] [x] [] */
+}
+
+.subgrid > :nth-child(2n)   {  background: black; }
+.subgrid > :nth-child(2n+1) {  background: pink; }
+
+    </style>
+  </head>
+<body>
+
+<div class="grid"><div class="subgrid fill-0a">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0b">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0c">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0d">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0e">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0f">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0g">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0h">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0i">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0j">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0k">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0l">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0m">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0n">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0o">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0p">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0q">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0r">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0s">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0t">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+</body>
diff --git a/css/css-grid/subgrid/repeat-auto-fill-008.html b/css/css-grid/subgrid/repeat-auto-fill-008.html
new file mode 100644
index 0000000..2823817
--- /dev/null
+++ b/css/css-grid/subgrid/repeat-auto-fill-008.html
@@ -0,0 +1,358 @@
+<!DOCTYPE HTML>
+<html>
+  <link rel="author" title="Mozilla" href="https://mozilla.org">
+  <link rel="match" href="repeat-auto-fill-008-ref.html">
+  <link rel="help" href="https://drafts.csswg.org/css-grid-2/#resolved-track-list">
+  <head>
+    <style>
+html,body {
+  color:black; background-color:white; font:10px/1 monospace; padding:0; margin:0;
+}
+
+.grid {
+  display: inline-grid;
+  grid-auto-columns: 15px;
+  border: 1px solid;
+}
+
+.subgrid {
+  display: grid;
+  grid-column: 3 / span 4;
+  grid-auto-rows: 8px;
+  background: grey;
+}
+
+.fill-0a  { grid-template-columns: subgrid repeat(auto-fill, [y] [y]) [z] [z] [z] [z] [z] }  /* [z] [z] [z] [z] [z] */
+.fill-0b  { grid-template-columns: subgrid [z] repeat(auto-fill, [z] [z] [z]) [z] }  /* [z] [z] [z] [z] [z] */
+.fill-0c  { grid-template-columns: subgrid [x] repeat(auto-fill, [y] [y] [y]) [z] }  /* [x] [y] [y] [y] [z] */
+.fill-0d  { grid-template-columns: subgrid [x] repeat(auto-fill, [z] [z]) }  /* [x] [z] [z] [z] [z] */
+.fill-0e  { grid-template-columns: subgrid repeat(auto-fill, [x] [x]) [z] }  /* [x] [x] [x] [x] [z] */
+.fill-0f  { grid-template-columns: subgrid repeat(auto-fill, [x] [x]) [z] [z] [z] }  /* [x] [x] [z] [z] [z] */
+.fill-0g  { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) [z] [z] }  /* [x] [y] [z] [z] [] */
+.fill-0h  { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) [z] }  /* [x] [y] [x] [y] [z] */
+.fill-0i  { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) }  /* [x] [y] [x] [y] [] */
+.fill-0j  { grid-template-columns: subgrid repeat(auto-fill, [y]) [z] [z] }  /* [y] [y] [y] [z] [z] */
+.fill-0k  { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) [z] [z] }  /* [x] [y] [z] [z] [] */
+.fill-0l  { grid-template-columns: subgrid [z] repeat(auto-fill, [x] [y]) [z] }  /* [z] [x] [y] [z] [] */
+.fill-0m  { grid-template-columns: subgrid [z] repeat(auto-fill, [x] [y]) }  /* [z] [x] [y] [x] [y] */
+.fill-0n  { grid-template-columns: subgrid repeat(auto-fill, [x] [y]) repeat(100, [z])}  /* [z] [z] [z] [z] [z] */
+.fill-0o  { grid-template-columns: subgrid [z] repeat(auto-fill, [x] [y] [z]) }  /* [z] [x] [y] [z] [] */
+.fill-0p  { grid-template-columns: subgrid [z] repeat(auto-fill, [x] [y] [z]) [x] }  /* [z] [x] [y] [z] [x] */
+.fill-0q  { grid-template-columns: subgrid repeat(auto-fill, [x] [y] [z]) [x] }  /* [x] [y] [z] [x] [] */
+.fill-0r  { grid-template-columns: subgrid [x] repeat(auto-fill, [y] [z]) }  /* [x] [y] [z] [y] [z] */
+
+/* With span of 5... */
+.fill-0s  {
+  grid-column: 2 / span 5;
+  grid-template-columns: subgrid [w] repeat(auto-fill, [y] [z]) [x]; /* [w] [y] [z] [y] [z] [x] */
+}
+
+/* With span of 6, same as fill-0s but with room for a partial additional repetition */
+.fill-0t  {
+  grid-column: 1 / span 6;
+  grid-template-columns: subgrid [w] repeat(auto-fill, [y] [z]) [x]; /* [w] [y] [z] [y] [z] [x] [] */
+}
+
+.subgrid > :nth-child(2n)   {  background: black; }
+.subgrid > :nth-child(2n+1) {  background: pink; }
+
+    </style>
+  </head>
+<body>
+
+<div class="grid"><div class="subgrid fill-0a">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0b">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0c">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0d">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0e">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0f">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0g">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0h">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0i">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0j">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0k">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0l">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0m">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0n">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0o">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0p">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0q">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0r">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0s">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<div class="grid"><div class="subgrid fill-0t">
+  <div style="grid-column:y 5"></div>
+  <div style="grid-column:y 4"></div>
+  <div style="grid-column:y 3"></div>
+  <div style="grid-column:y 2"></div>
+  <div style="grid-column:y 1"></div>
+  <div style="grid-column:y -1"></div>
+  <div style="grid-column:y -2"></div>
+  <div style="grid-column:y -3"></div>
+  <div style="grid-column:y -4"></div>
+  <div style="grid-column:y -5"></div>
+</div></div>
+
+<script>
+  const expectedResults = [
+    "subgrid [z] [z] [z] [z] [z]",
+    "subgrid [z] [z] [z] [z] [z]",
+    "subgrid [x] [y] [y] [y] [z]",
+    "subgrid [x] [z] [z] [z] [z]",
+    "subgrid [x] [x] [x] [x] [z]",
+    "subgrid [x] [x] [z] [z] [z]",
+    "subgrid [x] [y] [z] [z] []",
+    "subgrid [x] [y] [x] [y] [z]",
+    "subgrid [x] [y] [x] [y] []",
+    "subgrid [y] [y] [y] [z] [z]",
+    "subgrid [x] [y] [z] [z] []",
+    "subgrid [z] [x] [y] [z] []",
+    "subgrid [z] [x] [y] [x] [y]",
+    "subgrid [z] [z] [z] [z] [z]",
+    "subgrid [z] [x] [y] [z] []",
+    "subgrid [z] [x] [y] [z] [x]",
+    "subgrid [x] [y] [z] [x] []",
+    "subgrid [x] [y] [z] [y] [z]",
+    "subgrid [w] [y] [z] [y] [z] [x]",
+    "subgrid [w] [y] [z] [y] [z] [x] []",
+  ];
+  [...document.querySelectorAll('.subgrid')].forEach(function(subgrid, i) {
+    let actual = window.getComputedStyle(subgrid)['grid-template-columns'];
+    let expected = expectedResults[i];
+    if (actual != expected) {
+      let err = "Unexpected getComputedStyle value for subgrid " + i + " with className '" + subgrid.className + "':" +
+      " Actual: \"" + actual + "\", Expected: \"" + expected + "\"";
+      document.body.appendChild(document.createTextNode(err));
+      document.body.appendChild(document.createElement("br"));
+    }
+  });
+</script>
+
+</body>
diff --git a/css/css-grid/support/grid-child-utils.js b/css/css-grid/support/grid-child-utils.js
new file mode 100644
index 0000000..d75ad6e
--- /dev/null
+++ b/css/css-grid/support/grid-child-utils.js
@@ -0,0 +1,45 @@
+// Any copyright is dedicated to the Public Domain.
+// https://creativecommons.org/publicdomain/zero/1.0/
+
+const gridChildHelperRow = "row";
+const gridChildHelperCol = "col";
+
+// Helper for building testcases for grid-template-* with a child div in
+// multiple positions. Prop is expected ot be one of gridChildHelperRow or
+// gridChildHelperCol, to select testing grid rows or grid columns,
+// respectively.
+// The child div is found by the id of 'child'.
+function GridChildHelper(prop, style){
+  this.child = document.getElementById("child");
+  this.style = style;
+  this.prop = prop;
+}
+
+// Runs a test for computed values on the property the helper object was
+// constructed with. The childStyle is used for choosing the grid row/column
+// of the child div.
+// expected is passed as-is to the computed value test.
+// The child style is appended to the test name in such a way that different
+// tests for the same parent style but different child style values will have
+// different test names.
+GridChildHelper.prototype.runTest = function(childStyle, expected) {
+  'use strict';
+  const childProps = {
+    [gridChildHelperCol]:"gridColumn",
+    [gridChildHelperRow]:"gridRow"
+  };
+  const childProp = childProps[this.prop];
+
+  const parentProps = {
+    [gridChildHelperCol]:"grid-template-columns",
+    [gridChildHelperRow]:"grid-template-rows"
+  };
+  const parentProp = parentProps[this.prop];
+
+  const oldChildStyle = this.child[childProp];
+  this.child.style[childProp] = childStyle;
+
+  test_computed_value(parentProp, this.style, expected, childProp + " = " + childStyle);
+
+  this.child[childProp] = oldChildStyle;
+}