[layout] Respect align-self/justify-self for abspos elements.

This fixes the bug that we weren't respecting align-self/justify-self
for abspos elements with both insets set.

Instead of just using the containing block "start" inset bias when
both insets are set - look at the value of align-self/justify-self
(see logic in GetAlignmentInsetBias).

Tests are validating the following:
 - {align,justify}-self-*.html -> validates the correct position with
   different writing-mode combinations and *-self keywords. (Tests the
   complex logic in GetAlignmentInsetBias).
 - safe-{align,justify}-self-*.html -> validates the safe/unsafe
   behaviour with different writing-mode combinations, and "safe end".
   (Tests the clamping logic in ComputeInsets).
 - stretch-intrinsic-size-*.html -> validates the correct aspect-ratio
   handling for stretching one axes, and the size being reflexed in
   the opposite axis, with different writing-mode combinations. (Tests
   the logic in ComputeOof*Dimensions and the replaced logic in
   out_of_flow_layout_part.cc).
 - table-{align,justify}-self-stretch.html -> validates correct table
   stretching behaviour, and that tables still respect their implicit
   min-intrinsic size constraint.

Placed behind blink flag: LayoutAlignForPositioned

Bug: 226252
Change-Id: Ide7cc3cf0fa00d431c8ea1ca24192a5643f18310
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5086490
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1236432}
diff --git a/css/css-align/abspos/align-self-htb-ltr-htb.html b/css/css-align/abspos/align-self-htb-ltr-htb.html
new file mode 100644
index 0000000..786cec7
--- /dev/null
+++ b/css/css-align/abspos/align-self-htb-ltr-htb.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-htb-ltr-vlr.html b/css/css-align/abspos/align-self-htb-ltr-vlr.html
new file mode 100644
index 0000000..917e50d
--- /dev/null
+++ b/css/css-align/abspos/align-self-htb-ltr-vlr.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-htb-ltr-vrl.html b/css/css-align/abspos/align-self-htb-ltr-vrl.html
new file mode 100644
index 0000000..b60d461
--- /dev/null
+++ b/css/css-align/abspos/align-self-htb-ltr-vrl.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-htb-rtl-htb.html b/css/css-align/abspos/align-self-htb-rtl-htb.html
new file mode 100644
index 0000000..9bf919d
--- /dev/null
+++ b/css/css-align/abspos/align-self-htb-rtl-htb.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-htb-rtl-vlr.html b/css/css-align/abspos/align-self-htb-rtl-vlr.html
new file mode 100644
index 0000000..5c1e8c7
--- /dev/null
+++ b/css/css-align/abspos/align-self-htb-rtl-vlr.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-htb-rtl-vrl.html b/css/css-align/abspos/align-self-htb-rtl-vrl.html
new file mode 100644
index 0000000..b7f0056
--- /dev/null
+++ b/css/css-align/abspos/align-self-htb-rtl-vrl.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vlr-ltr-htb.html b/css/css-align/abspos/align-self-vlr-ltr-htb.html
new file mode 100644
index 0000000..98e3c0b
--- /dev/null
+++ b/css/css-align/abspos/align-self-vlr-ltr-htb.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vlr-ltr-vlr.html b/css/css-align/abspos/align-self-vlr-ltr-vlr.html
new file mode 100644
index 0000000..73585d2
--- /dev/null
+++ b/css/css-align/abspos/align-self-vlr-ltr-vlr.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vlr-ltr-vrl.html b/css/css-align/abspos/align-self-vlr-ltr-vrl.html
new file mode 100644
index 0000000..39ecd38
--- /dev/null
+++ b/css/css-align/abspos/align-self-vlr-ltr-vrl.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vlr-rtl-htb.html b/css/css-align/abspos/align-self-vlr-rtl-htb.html
new file mode 100644
index 0000000..7a4167f
--- /dev/null
+++ b/css/css-align/abspos/align-self-vlr-rtl-htb.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vlr-rtl-vlr.html b/css/css-align/abspos/align-self-vlr-rtl-vlr.html
new file mode 100644
index 0000000..4ce7d46
--- /dev/null
+++ b/css/css-align/abspos/align-self-vlr-rtl-vlr.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vlr-rtl-vrl.html b/css/css-align/abspos/align-self-vlr-rtl-vrl.html
new file mode 100644
index 0000000..0fe1604
--- /dev/null
+++ b/css/css-align/abspos/align-self-vlr-rtl-vrl.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vrl-ltr-htb.html b/css/css-align/abspos/align-self-vrl-ltr-htb.html
new file mode 100644
index 0000000..98e6145
--- /dev/null
+++ b/css/css-align/abspos/align-self-vrl-ltr-htb.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vrl-ltr-vlr.html b/css/css-align/abspos/align-self-vrl-ltr-vlr.html
new file mode 100644
index 0000000..d22b347
--- /dev/null
+++ b/css/css-align/abspos/align-self-vrl-ltr-vlr.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vrl-ltr-vrl.html b/css/css-align/abspos/align-self-vrl-ltr-vrl.html
new file mode 100644
index 0000000..602b7af
--- /dev/null
+++ b/css/css-align/abspos/align-self-vrl-ltr-vrl.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vrl-rtl-htb.html b/css/css-align/abspos/align-self-vrl-rtl-htb.html
new file mode 100644
index 0000000..1dcfd87
--- /dev/null
+++ b/css/css-align/abspos/align-self-vrl-rtl-htb.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vrl-rtl-vlr.html b/css/css-align/abspos/align-self-vrl-rtl-vlr.html
new file mode 100644
index 0000000..d22b347
--- /dev/null
+++ b/css/css-align/abspos/align-self-vrl-rtl-vlr.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/align-self-vrl-rtl-vrl.html b/css/css-align/abspos/align-self-vrl-rtl-vrl.html
new file mode 100644
index 0000000..602b7af
--- /dev/null
+++ b/css/css-align/abspos/align-self-vrl-rtl-vrl.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="align-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="align-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-htb-ltr-htb.html b/css/css-align/abspos/justify-self-htb-ltr-htb.html
new file mode 100644
index 0000000..cfef344
--- /dev/null
+++ b/css/css-align/abspos/justify-self-htb-ltr-htb.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-htb-ltr-vlr.html b/css/css-align/abspos/justify-self-htb-ltr-vlr.html
new file mode 100644
index 0000000..55680f4
--- /dev/null
+++ b/css/css-align/abspos/justify-self-htb-ltr-vlr.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-htb-ltr-vrl.html b/css/css-align/abspos/justify-self-htb-ltr-vrl.html
new file mode 100644
index 0000000..57ee3af
--- /dev/null
+++ b/css/css-align/abspos/justify-self-htb-ltr-vrl.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-htb-rtl-htb.html b/css/css-align/abspos/justify-self-htb-rtl-htb.html
new file mode 100644
index 0000000..95e54c2
--- /dev/null
+++ b/css/css-align/abspos/justify-self-htb-rtl-htb.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-htb-rtl-vlr.html b/css/css-align/abspos/justify-self-htb-rtl-vlr.html
new file mode 100644
index 0000000..e7224e7
--- /dev/null
+++ b/css/css-align/abspos/justify-self-htb-rtl-vlr.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-htb-rtl-vrl.html b/css/css-align/abspos/justify-self-htb-rtl-vrl.html
new file mode 100644
index 0000000..ba7e98a
--- /dev/null
+++ b/css/css-align/abspos/justify-self-htb-rtl-vrl.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-width="20" data-offset-x="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-width="20" data-offset-x="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-width="20" data-offset-x="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-width="40" data-offset-x="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vlr-ltr-htb.html b/css/css-align/abspos/justify-self-vlr-ltr-htb.html
new file mode 100644
index 0000000..d47c504
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vlr-ltr-htb.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vlr-ltr-vlr.html b/css/css-align/abspos/justify-self-vlr-ltr-vlr.html
new file mode 100644
index 0000000..71e3687
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vlr-ltr-vlr.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vlr-ltr-vrl.html b/css/css-align/abspos/justify-self-vlr-ltr-vrl.html
new file mode 100644
index 0000000..ae90d4d
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vlr-ltr-vrl.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vlr-rtl-htb.html b/css/css-align/abspos/justify-self-vlr-rtl-htb.html
new file mode 100644
index 0000000..1a192b5
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vlr-rtl-htb.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vlr-rtl-vlr.html b/css/css-align/abspos/justify-self-vlr-rtl-vlr.html
new file mode 100644
index 0000000..cb9986d
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vlr-rtl-vlr.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vlr-rtl-vrl.html b/css/css-align/abspos/justify-self-vlr-rtl-vrl.html
new file mode 100644
index 0000000..fb717a0
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vlr-rtl-vrl.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vrl-ltr-htb.html b/css/css-align/abspos/justify-self-vrl-ltr-htb.html
new file mode 100644
index 0000000..e2cbff3
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vrl-ltr-htb.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vrl-ltr-vlr.html b/css/css-align/abspos/justify-self-vrl-ltr-vlr.html
new file mode 100644
index 0000000..5aa2f48
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vrl-ltr-vlr.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vrl-ltr-vrl.html b/css/css-align/abspos/justify-self-vrl-ltr-vrl.html
new file mode 100644
index 0000000..cf2db8d
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vrl-ltr-vrl.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vrl-rtl-htb.html b/css/css-align/abspos/justify-self-vrl-rtl-htb.html
new file mode 100644
index 0000000..317e53e
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vrl-rtl-htb.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vrl-rtl-vlr.html b/css/css-align/abspos/justify-self-vrl-rtl-vlr.html
new file mode 100644
index 0000000..2d144d1
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vrl-rtl-vlr.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/justify-self-vrl-rtl-vrl.html b/css/css-align/abspos/justify-self-vrl-rtl-vrl.html
new file mode 100644
index 0000000..026c6e9
--- /dev/null
+++ b/css/css-align/abspos/justify-self-vrl-rtl-vrl.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: rtl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  position: absolute;
+  background: green;
+  inset: 0;
+}
+
+.item::before {
+  width: 20px;
+  height: 20px;
+  content: '';
+  display: block;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-start;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: self-end;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: center;" data-expected-height="20" data-offset-y="10"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: baseline;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: last baseline;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-start;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: self-end;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: left;" data-expected-height="20" data-offset-y="0"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: right;" data-expected-height="20" data-offset-y="20"></div>
+</div>
+
+<div class="container">
+  <div class="item rtl" style="justify-self: stretch;" data-expected-height="40" data-offset-y="0"></div>
+</div>
+
diff --git a/css/css-align/abspos/safe-align-self-htb.html b/css/css-align/abspos/safe-align-self-htb.html
new file mode 100644
index 0000000..9e259c1
--- /dev/null
+++ b/css/css-align/abspos/safe-align-self-htb.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  position: absolute;
+  background: green;
+  inset: 5px;
+  margin: 10px;
+  width: 30px;
+  height: 30px;
+}
+
+.safe {
+  align-self: safe end;
+}
+.unsafe {
+  align-self: unsafe end;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<!-- UNSAFE -->
+<br>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<!-- UNSAFE RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
diff --git a/css/css-align/abspos/safe-align-self-vlr.html b/css/css-align/abspos/safe-align-self-vlr.html
new file mode 100644
index 0000000..d47b183
--- /dev/null
+++ b/css/css-align/abspos/safe-align-self-vlr.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  position: absolute;
+  background: green;
+  inset: 5px;
+  margin: 10px;
+  width: 30px;
+  height: 30px;
+}
+
+.safe {
+  align-self: safe end;
+}
+.unsafe {
+  align-self: unsafe end;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<!-- UNSAFE -->
+<br>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<!-- UNSAFE RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
diff --git a/css/css-align/abspos/safe-align-self-vrl.html b/css/css-align/abspos/safe-align-self-vrl.html
new file mode 100644
index 0000000..3432762
--- /dev/null
+++ b/css/css-align/abspos/safe-align-self-vrl.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  position: absolute;
+  background: green;
+  inset: 5px;
+  margin: 10px;
+  width: 30px;
+  height: 30px;
+}
+
+.safe {
+  align-self: safe end;
+}
+.unsafe {
+  align-self: unsafe end;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<!-- UNSAFE -->
+<br>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<!-- UNSAFE RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="15"></div>
+</div>
+
diff --git a/css/css-align/abspos/safe-justify-self-htb.html b/css/css-align/abspos/safe-justify-self-htb.html
new file mode 100644
index 0000000..0fa5cc3
--- /dev/null
+++ b/css/css-align/abspos/safe-justify-self-htb.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  position: absolute;
+  background: green;
+  inset: 5px;
+  margin: 10px;
+  width: 30px;
+  height: 30px;
+}
+
+.safe {
+  justify-self: safe end;
+}
+.unsafe {
+  justify-self: unsafe end;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<!-- UNSAFE -->
+<br>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="-5"></div>
+</div>
+
+<!-- UNSAFE RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-x="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-x="15"></div>
+</div>
+
diff --git a/css/css-align/abspos/safe-justify-self-vlr.html b/css/css-align/abspos/safe-justify-self-vlr.html
new file mode 100644
index 0000000..7554975
--- /dev/null
+++ b/css/css-align/abspos/safe-justify-self-vlr.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-lr;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  position: absolute;
+  background: green;
+  inset: 5px;
+  margin: 10px;
+  width: 30px;
+  height: 30px;
+}
+
+.safe {
+  justify-self: safe end;
+}
+.unsafe {
+  justify-self: unsafe end;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<!-- UNSAFE -->
+<br>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<!-- UNSAFE RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="15"></div>
+</div>
+
diff --git a/css/css-align/abspos/safe-justify-self-vrl.html b/css/css-align/abspos/safe-justify-self-vrl.html
new file mode 100644
index 0000000..fe2405c
--- /dev/null
+++ b/css/css-align/abspos/safe-justify-self-vrl.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  direction: ltr;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  position: absolute;
+  background: green;
+  inset: 5px;
+  margin: 10px;
+  width: 30px;
+  height: 30px;
+}
+
+.safe {
+  justify-self: safe end;
+}
+.unsafe {
+  justify-self: unsafe end;
+}
+
+.rtl {
+  direction: rtl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<!-- UNSAFE -->
+<br>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<!-- RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="-5"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item safe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="-5"></div>
+</div>
+
+<!-- UNSAFE RTL -->
+<br>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: horizontal-tb; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: veritcal-rl; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-rl; direction: rtl;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: ltr;" data-offset-y="15"></div>
+</div>
+
+<div class="container rtl">
+  <div class="item unsafe" style="writing-mode: vertical-lr; direction: rtl;" data-offset-y="15"></div>
+</div>
+
diff --git a/css/css-align/abspos/stretch-intrinsic-size-htb-htb.html b/css/css-align/abspos/stretch-intrinsic-size-htb-htb.html
new file mode 100644
index 0000000..dc7df33
--- /dev/null
+++ b/css/css-align/abspos/stretch-intrinsic-size-htb-htb.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 60px;
+  height: 60px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  position: absolute;
+  background: green;
+  inset: 5px 10px 5px 10px;
+}
+
+.child::before {
+  aspect-ratio: 1/1;
+  min-width: 20px;
+  min-height: 20px;
+  width: 100%;
+  height: 100%;
+  content: '';
+  display: block;
+}
+
+.ar {
+  aspect-ratio: 1/1;
+  min-width: 20px;
+  min-height: 20px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<body>
+
+<div class="container">
+  <div class="item child" style="justify-self: start; align-self: start;" data-expected-width="20" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item child" style="justify-self: stretch; align-self: start;" data-expected-width="40" data-expected-height="40"></div>
+</div>
+
+<div class="container">
+  <div class="item child" style="justify-self: start; align-self: stretch;" data-expected-width="50" data-expected-height="50"></div>
+</div>
+
+<div class="container">
+  <div class="item child" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></div>
+</div>
+
+<br>
+
+<div class="container">
+  <div class="item ar" style="justify-self: start; align-self: start;" data-expected-width="20" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: stretch; align-self: start;" data-expected-width="40" data-expected-height="40"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: start; align-self: stretch;" data-expected-width="50" data-expected-height="50"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></div>
+</div>
+
+<br>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: start; align-self: start;" data-expected-width="10" data-expected-height="10"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: stretch; align-self: start;" data-expected-width="40" data-expected-height="40"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: start; align-self: stretch;" data-expected-width="50" data-expected-height="50"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></canvas>
+</div>
diff --git a/css/css-align/abspos/stretch-intrinsic-size-htb-vrl.html b/css/css-align/abspos/stretch-intrinsic-size-htb-vrl.html
new file mode 100644
index 0000000..cd2c9b9
--- /dev/null
+++ b/css/css-align/abspos/stretch-intrinsic-size-htb-vrl.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 60px;
+  height: 60px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  position: absolute;
+  background: green;
+  inset: 5px 10px 5px 10px;
+}
+
+.item::before {
+  aspect-ratio: 1/1;
+  min-width: 20px;
+  min-height: 20px;
+  width: 100%;
+  height: 100%;
+  content: '';
+  display: block;
+}
+
+.ar {
+  aspect-ratio: 1/1;
+  min-width: 20px;
+  min-height: 20px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<body>
+
+<div class="container">
+  <div class="item" style="justify-self: start; align-self: start;" data-expected-width="20" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch; align-self: start;" data-expected-width="40" data-expected-height="40"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: start; align-self: stretch;" data-expected-width="50" data-expected-height="50"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></div>
+</div>
+
+<br>
+
+<div class="container">
+  <div class="item ar" style="justify-self: start; align-self: start;" data-expected-width="20" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: stretch; align-self: start;" data-expected-width="40" data-expected-height="40"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: start; align-self: stretch;" data-expected-width="50" data-expected-height="50"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></div>
+</div>
+
+<br>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: start; align-self: start;" data-expected-width="10" data-expected-height="10"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: stretch; align-self: start;" data-expected-width="40" data-expected-height="40"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: start; align-self: stretch;" data-expected-width="50" data-expected-height="50"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></canvas>
+</div>
diff --git a/css/css-align/abspos/stretch-intrinsic-size-vrl-htb.html b/css/css-align/abspos/stretch-intrinsic-size-vrl-htb.html
new file mode 100644
index 0000000..7b10021
--- /dev/null
+++ b/css/css-align/abspos/stretch-intrinsic-size-vrl-htb.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 60px;
+  height: 60px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  position: absolute;
+  background: green;
+  inset: 5px 10px 5px 10px;
+}
+
+.item::before {
+  aspect-ratio: 1/1;
+  min-width: 20px;
+  min-height: 20px;
+  width: 100%;
+  height: 100%;
+  content: '';
+  display: block;
+}
+
+.ar {
+  aspect-ratio: 1/1;
+  min-width: 20px;
+  min-height: 20px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<body>
+
+<div class="container">
+  <div class="item" style="justify-self: start; align-self: start;" data-expected-width="20" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch; align-self: start;" data-expected-width="50" data-expected-height="50"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: start; align-self: stretch;" data-expected-width="40" data-expected-height="40"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></div>
+</div>
+
+<br>
+
+<div class="container">
+  <div class="item ar" style="justify-self: start; align-self: start;" data-expected-width="20" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: stretch; align-self: start;" data-expected-width="50" data-expected-height="50"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: start; align-self: stretch;" data-expected-width="40" data-expected-height="40"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></div>
+</div>
+
+<br>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: start; align-self: start;" data-expected-width="10" data-expected-height="10"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: stretch; align-self: start;" data-expected-width="50" data-expected-height="50"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: start; align-self: stretch;" data-expected-width="40" data-expected-height="40"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></canvas>
+</div>
diff --git a/css/css-align/abspos/stretch-intrinsic-size-vrl-vrl.html b/css/css-align/abspos/stretch-intrinsic-size-vrl-vrl.html
new file mode 100644
index 0000000..10f11a9
--- /dev/null
+++ b/css/css-align/abspos/stretch-intrinsic-size-vrl-vrl.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: vertical-rl;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 60px;
+  height: 60px;
+}
+
+.item {
+  writing-mode: vertical-rl;
+  position: absolute;
+  background: green;
+  inset: 5px 10px 5px 10px;
+}
+
+.item::before {
+  aspect-ratio: 1/1;
+  min-width: 20px;
+  min-height: 20px;
+  width: 100%;
+  height: 100%;
+  content: '';
+  display: block;
+}
+
+.ar {
+  aspect-ratio: 1/1;
+  min-width: 20px;
+  min-height: 20px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<body>
+
+<div class="container">
+  <div class="item" style="justify-self: start; align-self: start;" data-expected-width="20" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch; align-self: start;" data-expected-width="50" data-expected-height="50"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: start; align-self: stretch;" data-expected-width="40" data-expected-height="40"></div>
+</div>
+
+<div class="container">
+  <div class="item" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></div>
+</div>
+
+<br>
+
+<div class="container">
+  <div class="item ar" style="justify-self: start; align-self: start;" data-expected-width="20" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: stretch; align-self: start;" data-expected-width="50" data-expected-height="50"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: start; align-self: stretch;" data-expected-width="40" data-expected-height="40"></div>
+</div>
+
+<div class="container">
+  <div class="item ar" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></div>
+</div>
+
+<br>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: start; align-self: start;" data-expected-width="10" data-expected-height="10"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: stretch; align-self: start;" data-expected-width="50" data-expected-height="50"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: start; align-self: stretch;" data-expected-width="40" data-expected-height="40"></canvas>
+</div>
+
+<div class="container">
+  <canvas width="10" height="10" class="item" style="justify-self: stretch; align-self: stretch;" data-expected-width="40" data-expected-height="50"></canvas>
+</div>
diff --git a/css/css-align/abspos/table-align-self-stretch.html b/css/css-align/abspos/table-align-self-stretch.html
new file mode 100644
index 0000000..bedd0a5
--- /dev/null
+++ b/css/css-align/abspos/table-align-self-stretch.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  position: absolute;
+  background: green;
+  inset: 5px;
+  align-self: stretch;
+  display: table;
+}
+
+.item::before {
+  content: '';
+  display: block;
+  width: 10px;
+  height: 20px;
+}
+
+.big::before {
+  width: 50px;
+  height: 60px;
+}
+
+.vrl {
+  writing-mode: vertical-rl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<body>
+
+<div class="container">
+  <div class="item" data-expected-width="10" data-expected-height="30"></div>
+</div>
+
+<div class="container">
+  <div class="item big" data-expected-width="50" data-expected-height="60"></div>
+</div>
+
+<div class="container">
+  <div class="item vrl" data-expected-width="10" data-expected-height="30"></div>
+</div>
+
+<div class="container">
+  <div class="item big vrl" data-expected-width="50" data-expected-height="60"></div>
+</div>
+
+<br>
+
+<div class="container vrl">
+  <div class="item" data-expected-width="30" data-expected-height="20"></div>
+</div>
+
+<div class="container vrl">
+  <div class="item big" data-expected-width="50" data-expected-height="60"></div>
+</div>
+
+<div class="container vrl">
+  <div class="item vrl" data-expected-width="30" data-expected-height="20"></div>
+</div>
+
+<div class="container vrl">
+  <div class="item big vrl" data-expected-width="50" data-expected-height="60"></div>
+</div>
+
diff --git a/css/css-align/abspos/table-justify-self-stretch.html b/css/css-align/abspos/table-justify-self-stretch.html
new file mode 100644
index 0000000..c409b10
--- /dev/null
+++ b/css/css-align/abspos/table-justify-self-stretch.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-abspos">
+<style>
+body {
+  margin: 0;
+}
+
+.container {
+  writing-mode: horizontal-tb;
+  display: inline-block;
+  position: relative;
+  margin: 20px;
+  border: solid 4px;
+  width: 40px;
+  height: 40px;
+}
+
+.item {
+  writing-mode: horizontal-tb;
+  position: absolute;
+  background: green;
+  inset: 5px;
+  justify-self: stretch;
+  display: table;
+}
+
+.item::before {
+  content: '';
+  display: block;
+  width: 10px;
+  height: 20px;
+}
+
+.big::before {
+  width: 50px;
+  height: 60px;
+}
+
+.vrl {
+  writing-mode: vertical-rl;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onload="checkLayout('.item')">
+
+<body>
+
+<div class="container">
+  <div class="item" data-expected-width="30" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item big" data-expected-width="50" data-expected-height="60"></div>
+</div>
+
+<div class="container">
+  <div class="item vrl" data-expected-width="30" data-expected-height="20"></div>
+</div>
+
+<div class="container">
+  <div class="item big vrl" data-expected-width="50" data-expected-height="60"></div>
+</div>
+
+<br>
+
+<div class="container vrl">
+  <div class="item" data-expected-width="10" data-expected-height="30"></div>
+</div>
+
+<div class="container vrl">
+  <div class="item big" data-expected-width="50" data-expected-height="60"></div>
+</div>
+
+<div class="container vrl">
+  <div class="item vrl" data-expected-width="10" data-expected-height="30"></div>
+</div>
+
+<div class="container vrl">
+  <div class="item big vrl" data-expected-width="50" data-expected-height="60"></div>
+</div>
+