summaryrefslogtreecommitdiffstats
path: root/gfx/tests/reftest
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /gfx/tests/reftest
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'gfx/tests/reftest')
-rw-r--r--gfx/tests/reftest/1086723-ref.html27
-rw-r--r--gfx/tests/reftest/1086723.html27
-rw-r--r--gfx/tests/reftest/1131264-1.svg17
-rw-r--r--gfx/tests/reftest/1143303-1.svg26
-rw-r--r--gfx/tests/reftest/1149923-ref.html28
-rw-r--r--gfx/tests/reftest/1149923.html29
-rw-r--r--gfx/tests/reftest/1419528-ref.html18
-rw-r--r--gfx/tests/reftest/1419528.html19
-rw-r--r--gfx/tests/reftest/1424673-ref.html6
-rw-r--r--gfx/tests/reftest/1424673.html39
-rw-r--r--gfx/tests/reftest/1429411-ref.html25
-rw-r--r--gfx/tests/reftest/1429411.html27
-rw-r--r--gfx/tests/reftest/1435143-ref.html22
-rw-r--r--gfx/tests/reftest/1435143.html25
-rw-r--r--gfx/tests/reftest/1444904-ref.html18
-rw-r--r--gfx/tests/reftest/1444904.html36
-rw-r--r--gfx/tests/reftest/1451168-ref.html54
-rw-r--r--gfx/tests/reftest/1451168.html56
-rw-r--r--gfx/tests/reftest/1461313-ref.html4
-rw-r--r--gfx/tests/reftest/1461313.html9
-rw-r--r--gfx/tests/reftest/1463802-ref.html22
-rw-r--r--gfx/tests/reftest/1463802.html22
-rw-r--r--gfx/tests/reftest/1474722-ref.html17
-rw-r--r--gfx/tests/reftest/1474722.html17
-rw-r--r--gfx/tests/reftest/1501195-ref.html30
-rw-r--r--gfx/tests/reftest/1501195.html31
-rw-r--r--gfx/tests/reftest/1519754-ref.html5
-rw-r--r--gfx/tests/reftest/1519754.html5
-rw-r--r--gfx/tests/reftest/1523080-ref.html7
-rw-r--r--gfx/tests/reftest/1523080.html13
-rw-r--r--gfx/tests/reftest/1523776-ref.html13
-rw-r--r--gfx/tests/reftest/1523776.html12
-rw-r--r--gfx/tests/reftest/1524261-ref.html4
-rw-r--r--gfx/tests/reftest/1524261.html10
-rw-r--r--gfx/tests/reftest/1524353-ref.html8
-rw-r--r--gfx/tests/reftest/1524353.html8
-rw-r--r--gfx/tests/reftest/1616444-same-color-different-paths-ref.html54
-rw-r--r--gfx/tests/reftest/1616444-same-color-different-paths.html92
-rw-r--r--gfx/tests/reftest/1662062-1-no-blurry.html20
-rw-r--r--gfx/tests/reftest/1662062-1-ref.html20
-rw-r--r--gfx/tests/reftest/1681610-ref.html41
-rw-r--r--gfx/tests/reftest/1681610.html40
-rw-r--r--gfx/tests/reftest/468496-1-ref.html32
-rw-r--r--gfx/tests/reftest/468496-1.html51
-rw-r--r--gfx/tests/reftest/611498-1.html19
-rw-r--r--gfx/tests/reftest/611498-ref.html6
-rw-r--r--gfx/tests/reftest/709477-1-ref.html47
-rw-r--r--gfx/tests/reftest/709477-1.html69
-rw-r--r--gfx/tests/reftest/853889-1-ref.html12
-rw-r--r--gfx/tests/reftest/853889-1.html19
-rw-r--r--gfx/tests/reftest/blacktrans.pngbin0 -> 105 bytes
-rw-r--r--gfx/tests/reftest/bug1523410-translate-scale-snap-ref.html37
-rw-r--r--gfx/tests/reftest/bug1523410-translate-scale-snap.html37
-rw-r--r--gfx/tests/reftest/bwinton.jpgbin0 -> 1110 bytes
-rw-r--r--gfx/tests/reftest/pass.svg8
-rw-r--r--gfx/tests/reftest/picture-caching-on-async-zoom.html90
-rw-r--r--gfx/tests/reftest/reftest.list29
57 files changed, 1459 insertions, 0 deletions
diff --git a/gfx/tests/reftest/1086723-ref.html b/gfx/tests/reftest/1086723-ref.html
new file mode 100644
index 0000000000..0242f9e96b
--- /dev/null
+++ b/gfx/tests/reftest/1086723-ref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Testcase for bug 1086723</title>
+ <style type="text/css">
+ .test_div {
+ position: fixed;
+ overflow: hidden;
+ background: blue;
+ width: 50%;
+ height: 50%;
+ border-radius: 0px 50% 50% 0px;
+ }
+ .filler {
+ height: 5000px;
+ }
+ body,html {
+ overflow: hidden;
+ }
+ </style>
+</head>
+<body>
+ <div class="test_div"></div>
+ <div class="filler"></div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/1086723.html b/gfx/tests/reftest/1086723.html
new file mode 100644
index 0000000000..05ac2d7d89
--- /dev/null
+++ b/gfx/tests/reftest/1086723.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML>
+<html reftest-async-scroll reftest-async-scroll-x="0" reftest-async-scroll-y="2000">
+<head>
+ <meta charset="utf-8">
+ <title>Testcase for bug 1086723</title>
+ <style type="text/css">
+ .test_div {
+ position: fixed;
+ overflow: hidden;
+ background: blue;
+ width: 50%;
+ height: 50%;
+ border-radius: 0px 50% 50% 0px;
+ }
+ .filler {
+ height: 5000px;
+ }
+ body,html {
+ scrollbar-width: none;
+ }
+ </style>
+</head>
+<body>
+ <div class="test_div"></div>
+ <div class="filler"></div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/1131264-1.svg b/gfx/tests/reftest/1131264-1.svg
new file mode 100644
index 0000000000..fdafd6b134
--- /dev/null
+++ b/gfx/tests/reftest/1131264-1.svg
@@ -0,0 +1,17 @@
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<svg xmlns="http://www.w3.org/2000/svg"
+ width="100%" height="100%">
+
+ <title>Testcase for small radius circle with large center coordinates</title>
+ <!--From https://bugzilla.mozilla.org/show_bug.cgi?id=1131264 -->
+
+ <rect width="100%" height="100%" fill="lime"/>
+
+ <circle r="5" cx="40" cy="40" fill="red" />
+ <circle r="1" cx="10004" cy="10004" fill="lime"
+ transform="scale(10 10) translate(-10000 -10000)"/>
+
+</svg>
diff --git a/gfx/tests/reftest/1143303-1.svg b/gfx/tests/reftest/1143303-1.svg
new file mode 100644
index 0000000000..4654cff5c0
--- /dev/null
+++ b/gfx/tests/reftest/1143303-1.svg
@@ -0,0 +1,26 @@
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
+ width="100%" height="100%">
+ <title>Testcase for small circles</title>
+ <!--From https://bugzilla.mozilla.org/show_bug.cgi?id=1143303 -->
+
+ <rect width="100%" height="100%" fill="lime"/>
+
+ <circle cx="200" cy="150" r="95" fill="red"/>
+ <g transform="translate(200, 150)" fill="lime">
+ <g transform="scale(1e8, 1e8)">
+ <circle cx="0" cy="0" r="1e-6"/>
+ </g>
+ </g>
+
+ <circle cx="342" cy="176.06" r="1" fill="red"/>
+ <g transform="translate(342,1098.55)" fill="lime">
+ <g transform="scale(418.2,-405.9)">
+ <circle cx="0" cy="2.2727" r=".006"/>
+ </g>
+ </g>
+
+</svg>
diff --git a/gfx/tests/reftest/1149923-ref.html b/gfx/tests/reftest/1149923-ref.html
new file mode 100644
index 0000000000..46625a786d
--- /dev/null
+++ b/gfx/tests/reftest/1149923-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+
+ <head>
+ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1">
+ <meta charset="utf-8">
+ <title>Testcase for bug 1149923</title>
+ <style>
+ #outer {
+ width: 64px;
+ height: 64px;
+ background-color: #00f;
+ opacity: 1.0;
+ transform: rotate(90deg);
+ }
+ #inner {
+ width: 100%;
+ height: 100%;
+ background-color: #f00;
+ border-top-left-radius: 10%;
+ border-bottom-left-radius: 10%;
+ }
+ </style>
+ </head>
+ <body>
+ <div id='outer'><div id='inner'></div></div>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/1149923.html b/gfx/tests/reftest/1149923.html
new file mode 100644
index 0000000000..ec5f777ad3
--- /dev/null
+++ b/gfx/tests/reftest/1149923.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+
+ <head>
+ <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1">
+ <meta charset="utf-8">
+ <title>Testcase for bug 1149923</title>
+ <style>
+ #outer {
+ width: 64px;
+ height: 64px;
+ background-color: #00f;
+ opacity: 1.0;
+ transform: rotate(90deg);
+ }
+ #inner {
+ width: 100%;
+ height: 100%;
+ background-color: #f00;
+ will-change: transform;
+ border-top-left-radius: 10%;
+ border-bottom-left-radius: 10%;
+ }
+ </style>
+ </head>
+ <body>
+ <div id='outer'><div id='inner'></div></div>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/1419528-ref.html b/gfx/tests/reftest/1419528-ref.html
new file mode 100644
index 0000000000..2a3595b9af
--- /dev/null
+++ b/gfx/tests/reftest/1419528-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<style>
+.outer {
+ display: flex;
+}
+.inner {
+ padding-bottom: 6px;
+ padding-top: 10 px;
+}
+</style>
+<body>
+ <div class="outer">
+ <ul class="inner">
+ Testing
+ </ul>
+ </div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/1419528.html b/gfx/tests/reftest/1419528.html
new file mode 100644
index 0000000000..a9c65b3914
--- /dev/null
+++ b/gfx/tests/reftest/1419528.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<style>
+.outer {
+ display: flex;
+}
+.inner {
+ padding-bottom: 6px;
+ padding-top: 10 px;
+ box-shadow: inset 0 0 0 0 #000;
+}
+</style>
+<body>
+ <div class="outer">
+ <ul class="inner">
+ Testing
+ </ul>
+ </div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/1424673-ref.html b/gfx/tests/reftest/1424673-ref.html
new file mode 100644
index 0000000000..5e227d709d
--- /dev/null
+++ b/gfx/tests/reftest/1424673-ref.html
@@ -0,0 +1,6 @@
+<html>
+<body>
+<div style="width: 200px; height: 200px; background-color: lime;">
+</div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/1424673.html b/gfx/tests/reftest/1424673.html
new file mode 100644
index 0000000000..31384741b5
--- /dev/null
+++ b/gfx/tests/reftest/1424673.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<style>
+body {
+ overflow:hidden;
+}
+
+.container {
+ background-color: lime;
+}
+
+.text_shadow {
+ color: #fff;
+ text-shadow: 0px 0px 10px #fff;
+ line-height: 0;
+ top: 300px;
+ width: 300px;
+ height: 300px;
+ font-size: 300px;
+}
+</style>
+<script>
+function shadow(){
+ document.write('<div class="text_shadow" style="position: absolute; top: 30px; left: 10px;">.</div>');
+ document.write('<div class="text_shadow" style="position: absolute; top: 30px; left: 10px;">.</div>');
+ document.write('<div class="text_shadow" style="position: absolute; top: 30px; left: 10px;">.</div>');
+}
+
+function run_Test(){
+ document.write('<div style="position: relative; top: 160px; left: 0px;"><script>shadow();<\/script></div>');
+ document.write('<div style="position: relative; top: 160px; left: -90px;"><script>shadow();<\/script></div>');
+ document.write('<div style="position: relative; top: 160px; left: 70px;"><script>shadow();<\/script></div>');
+ document.documentElement.classList.remove("reftest-wait");
+}
+
+run_Test();
+</script>
+<div class="container" style="width: 200px; height: 200px;">
+</html>
diff --git a/gfx/tests/reftest/1429411-ref.html b/gfx/tests/reftest/1429411-ref.html
new file mode 100644
index 0000000000..72dcdcfb61
--- /dev/null
+++ b/gfx/tests/reftest/1429411-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<style>
+
+.outer {
+ position: absolute;
+ width: 200px;
+ height: 150px;
+ overflow: hidden;
+}
+.inner {
+ position: absolute;
+ top: 3px;
+ left: 3px;
+ width: 200px;
+ height: 150px;
+ box-shadow: blue 0px 0px 20px inset;
+}
+
+</style>
+
+<div class="outer">
+<div class="inner"></div>
+</div>
diff --git a/gfx/tests/reftest/1429411.html b/gfx/tests/reftest/1429411.html
new file mode 100644
index 0000000000..79b878a6db
--- /dev/null
+++ b/gfx/tests/reftest/1429411.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<style>
+
+.outer {
+ position: absolute;
+ margin-top: 3px;
+ margin-left: 3px;
+ width: 200px;
+ height: 150px;
+ overflow: hidden;
+}
+.inner {
+ position: absolute;
+ margin-top: -3px;
+ margin-left: -3px;
+ width: 200px;
+ height: 150px;
+ box-shadow: blue 3px 3px 20px inset;
+}
+
+</style>
+
+<div class="outer">
+<div class="inner"></div>
+</div>
diff --git a/gfx/tests/reftest/1435143-ref.html b/gfx/tests/reftest/1435143-ref.html
new file mode 100644
index 0000000000..f5d1d4de8e
--- /dev/null
+++ b/gfx/tests/reftest/1435143-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ #green {
+ position: absolute;
+ background: green;
+ border-radius: 1px;
+ transform: translateX(100px);
+ }
+ #text {
+ visibility: hidden;
+ }
+ </style>
+ </head>
+
+ <body>
+ <div id="header">
+ <div id="green"><span id="text">Text.</span></div>
+ </div>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/1435143.html b/gfx/tests/reftest/1435143.html
new file mode 100644
index 0000000000..3e209f05dd
--- /dev/null
+++ b/gfx/tests/reftest/1435143.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ #header {
+ position: fixed;
+ }
+ #green {
+ position: absolute;
+ background: green;
+ border-radius: 1px;
+ transform: translateX(100px);
+ }
+ #text {
+ visibility: hidden;
+ }
+ </style>
+ </head>
+
+ <body>
+ <div id="header">
+ <div id="green"><span id="text">Text.</span></div>
+ </div>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/1444904-ref.html b/gfx/tests/reftest/1444904-ref.html
new file mode 100644
index 0000000000..c41c180796
--- /dev/null
+++ b/gfx/tests/reftest/1444904-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ #box {
+ position: absolute;
+ top: 80px;
+ width: 20px;
+ height: 20px;
+ background: green;
+ }
+ </style>
+ </head>
+
+ <body style="height: 10000px;">
+ <div id="box"></div>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/1444904.html b/gfx/tests/reftest/1444904.html
new file mode 100644
index 0000000000..c9fe387e74
--- /dev/null
+++ b/gfx/tests/reftest/1444904.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <style>
+ #container {
+ float: left;
+ position: sticky;
+ top: 0;
+ margin-top: -20px;
+ z-index: 100;
+ }
+
+ #target {
+ margin-top: 80px;
+ width: 20px;
+ height: 20px;
+ background: green;
+ }
+
+ #necessary-fixed-box {
+ position: fixed;
+ top: 0;
+ width: 20px;
+ height: 20px;
+
+ }
+ </style>
+ </head>
+
+ <body style="height: 10000px;">
+ <div id="container">
+ <div id="target"></div>
+ <div id="necessary-fixed-box"></div>
+ </div>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/1451168-ref.html b/gfx/tests/reftest/1451168-ref.html
new file mode 100644
index 0000000000..7aa35b9245
--- /dev/null
+++ b/gfx/tests/reftest/1451168-ref.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style type="text/css">
+html {
+ height:100%;
+ margin:0;
+ padding: 0;
+}
+body {
+ height:100%;
+ margin: 0;
+ padding: 0;
+ overflow:hidden;
+ position:relative;
+ left:0;
+}
+nav {
+ display:block;
+ position:absolute;
+ top:0;
+ left:0;
+ bottom:auto;
+ width:280px;
+ height:100%;
+ z-index:1000;
+}
+
+.nav-menu-inner-container {
+ position:relative;
+ height:100%;
+}
+
+.nav-menu-scroll-pane {
+ bottom:100px;
+ overflow-y:scroll;
+ position:absolute;
+ top:0;
+ width:254px
+}
+ </style>
+</head>
+
+<body>
+<nav class="moz-global-nav-drawer">
+ <div class="nav-menu-inner-container">
+ <div class="nav-menu-scroll-pane">
+ <div style="height: 5000px">
+ Scroll here and look for the scrollbar
+ </div>
+ </div>
+ </div>
+</nav>
+</body></html>
diff --git a/gfx/tests/reftest/1451168.html b/gfx/tests/reftest/1451168.html
new file mode 100644
index 0000000000..8a0711be44
--- /dev/null
+++ b/gfx/tests/reftest/1451168.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style type="text/css">
+html {
+ height:100%;
+ margin:0;
+ padding: 0;
+}
+body {
+ height:100%;
+ margin: 0;
+ padding: 0;
+ overflow:hidden;
+ position:relative;
+ left:0;
+ transform:translateX(320px);
+}
+nav {
+ display:block;
+ position:absolute;
+ top:0;
+ left:0;
+ bottom:auto;
+ width:280px;
+ height:100%;
+ z-index:1000;
+ transform:translateX(-320px);
+}
+
+.nav-menu-inner-container {
+ position:relative;
+ height:100%;
+}
+
+.nav-menu-scroll-pane {
+ bottom:100px;
+ overflow-y:scroll;
+ position:absolute;
+ top:0;
+ width:254px
+}
+ </style>
+</head>
+
+<body>
+<nav class="moz-global-nav-drawer">
+ <div class="nav-menu-inner-container">
+ <div class="nav-menu-scroll-pane">
+ <div style="height: 5000px">
+ Scroll here and look for the scrollbar
+ </div>
+ </div>
+ </div>
+</nav>
+</body></html>
diff --git a/gfx/tests/reftest/1461313-ref.html b/gfx/tests/reftest/1461313-ref.html
new file mode 100644
index 0000000000..14a5f811ce
--- /dev/null
+++ b/gfx/tests/reftest/1461313-ref.html
@@ -0,0 +1,4 @@
+<!doctype html>
+<body>
+ <div style="background-color: green; width: 100px; height: 100px;"></div>
+</body>
diff --git a/gfx/tests/reftest/1461313.html b/gfx/tests/reftest/1461313.html
new file mode 100644
index 0000000000..71e492d40d
--- /dev/null
+++ b/gfx/tests/reftest/1461313.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<style>
+body {
+ clip-path: url(non-existent-resource);
+}
+</style>
+<body>
+ <div style="background-color: green; width: 100px; height: 100px;"></div>
+</body>
diff --git a/gfx/tests/reftest/1463802-ref.html b/gfx/tests/reftest/1463802-ref.html
new file mode 100644
index 0000000000..840263e493
--- /dev/null
+++ b/gfx/tests/reftest/1463802-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+ <title>Clock</title>
+ <style type="text/css">
+ * {
+ box-sizing: border-box !important;
+ }
+ .inner {
+ width: 100%;
+ height: 100%;
+ background: white;
+ border-radius: 100%;
+ box-shadow: 0px 0px 18px black inset;
+ }
+ </style>
+ </head>
+ <body>
+ <div style="width: 588px; height: 588px; padding: 26px;">
+<div class="inner"></div>
+ </div>
+</body></html>
diff --git a/gfx/tests/reftest/1463802.html b/gfx/tests/reftest/1463802.html
new file mode 100644
index 0000000000..48978ba16a
--- /dev/null
+++ b/gfx/tests/reftest/1463802.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html><head>
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+ <title>Clock</title>
+ <style type="text/css">
+ * {
+ box-sizing: border-box !important;
+ }
+ .inner {
+ width: 100%;
+ height: 100%;
+ background: white;
+ border-radius: 100%;
+ box-shadow: 0px 0px 18px black inset;
+ }
+ </style>
+ </head>
+ <body>
+ <div style="width: 588px; height: 588px; padding: 26.01px;">
+<div class="inner"></div>
+ </div>
+</body></html>
diff --git a/gfx/tests/reftest/1474722-ref.html b/gfx/tests/reftest/1474722-ref.html
new file mode 100644
index 0000000000..e0fadcf53f
--- /dev/null
+++ b/gfx/tests/reftest/1474722-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <style>
+ .shadowed {
+ box-shadow: 0 0 35px rgba(0, 0, 0, .9);
+ border: 1px solid lightgray;
+ margin: 0 2em;
+ float: left;
+ }
+ </style>
+</head>
+<body style = "overflow:hidden">
+<div class="shadowed" style="height: 200vh"> long shadow </div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/1474722.html b/gfx/tests/reftest/1474722.html
new file mode 100644
index 0000000000..9920eee238
--- /dev/null
+++ b/gfx/tests/reftest/1474722.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <style>
+ .shadowed {
+ box-shadow: 0 0 35px rgba(0, 0, 0, .9);
+ border: 1px solid lightgray;
+ margin: 0 2em;
+ float: left;
+ }
+ </style>
+</head>
+<body style = "overflow:hidden">
+<div class="shadowed" style="height: 100000px"> long shadow </div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/1501195-ref.html b/gfx/tests/reftest/1501195-ref.html
new file mode 100644
index 0000000000..45ea08d565
--- /dev/null
+++ b/gfx/tests/reftest/1501195-ref.html
@@ -0,0 +1,30 @@
+<html reftest-zoom="1.1">
+<head>
+<style type="text/css">
+.parent {
+display: flex;
+overflow: hidden;
+}
+
+.bg {
+background-color: lime;
+width: 200px;
+height: 200px;
+transform: scale(1.05);
+}
+
+.bg_overlay {
+background-color: red;
+width: 100px;
+height: 100px;
+position: absolute;
+}
+</style>
+</head>
+<body>
+<div class="parent">
+ <div class="bg"></div>
+ <div class="bg_overlay"></div>
+</div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/1501195.html b/gfx/tests/reftest/1501195.html
new file mode 100644
index 0000000000..f1664e54ff
--- /dev/null
+++ b/gfx/tests/reftest/1501195.html
@@ -0,0 +1,31 @@
+<html reftest-zoom="1.1">
+<head>
+<style type="text/css">
+.parent {
+display: flex;
+transform: translate3d(0px, 0px, 0px);
+overflow: hidden;
+}
+
+.bg {
+background-color: lime;
+width: 200px;
+height: 200px;
+transform: scale(1.05);
+}
+
+.bg_overlay {
+background-color: red;
+width: 100px;
+height: 100px;
+position: absolute;
+}
+</style>
+</head>
+<body>
+<div class="parent">
+ <div class="bg"></div>
+ <div class="bg_overlay"></div>
+</div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/1519754-ref.html b/gfx/tests/reftest/1519754-ref.html
new file mode 100644
index 0000000000..4d1b6e7992
--- /dev/null
+++ b/gfx/tests/reftest/1519754-ref.html
@@ -0,0 +1,5 @@
+<body style="margin-left: 0px">
+<div style="margin-left: 200px; width: 200px; height: 100px; overflow: auto;">
+ <div style="background-color: red; height: 200px;"/>
+</div>
+</body>
diff --git a/gfx/tests/reftest/1519754.html b/gfx/tests/reftest/1519754.html
new file mode 100644
index 0000000000..7db2093cfd
--- /dev/null
+++ b/gfx/tests/reftest/1519754.html
@@ -0,0 +1,5 @@
+<body>
+<div style="left: 400px; position: fixed; transform: translateX(-200px); width: 200px; height: 100px; overflow: auto;">
+ <div style="background-color: red; height: 200px;"/>
+</div>
+</body>
diff --git a/gfx/tests/reftest/1523080-ref.html b/gfx/tests/reftest/1523080-ref.html
new file mode 100644
index 0000000000..42e0e793b2
--- /dev/null
+++ b/gfx/tests/reftest/1523080-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<style>
+html, body {
+ margin: 0;
+}
+</style>
+<div style="width: 400px; height: 400px; background-color: green"></div>
diff --git a/gfx/tests/reftest/1523080.html b/gfx/tests/reftest/1523080.html
new file mode 100644
index 0000000000..069f86d3e5
--- /dev/null
+++ b/gfx/tests/reftest/1523080.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<style>
+html, body {
+ margin: 0;
+}
+</style>
+<div id="red" style="position:absolute; width: 400px; height: 400px; background-color: red; top: 0px; left: 0px"></div>
+<div id="scroller" style="overflow:hidden; width:400px; height: 400px">
+ <div style="filter: blur(20px); width: 800px; height: 800px; background-color: green"></div>
+</div>
+<script>
+ document.getElementById('scroller').scrollTo(100, 100);
+</script>
diff --git a/gfx/tests/reftest/1523776-ref.html b/gfx/tests/reftest/1523776-ref.html
new file mode 100644
index 0000000000..3f57f8df24
--- /dev/null
+++ b/gfx/tests/reftest/1523776-ref.html
@@ -0,0 +1,13 @@
+<style>
+html, body {
+ margin: 0;
+}
+</style>
+ <div style="filter: drop-shadow(50px 50px 20px red)">
+ <div style="width:256px; height:256px; border-radius:16px; overflow:hidden">
+ <div style="width:256px; height:256px; background-color:green;"></div>
+ </div>
+ </div>
+<!-- add white divs on top to simulate the clip from the test file -->
+<div style="background-color: white; position:absolute; left: 0; top: 0; width: 100px; height: 700px"></div>
+<div style="background-color: white; position:absolute; left: 0; top: 0; width: 700px; height: 100px"></div>
diff --git a/gfx/tests/reftest/1523776.html b/gfx/tests/reftest/1523776.html
new file mode 100644
index 0000000000..76a666763d
--- /dev/null
+++ b/gfx/tests/reftest/1523776.html
@@ -0,0 +1,12 @@
+<style>
+html, body {
+ margin: 0;
+}
+</style>
+<div style="clip: rect(100px,1000px,1000px,100px); position:absolute">
+ <div style="filter: drop-shadow(50px 50px 20px red)">
+ <div style="width:256px; height:256px; border-radius:16px; overflow:hidden">
+ <div style="width:256px; height:256px; background-color:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/gfx/tests/reftest/1524261-ref.html b/gfx/tests/reftest/1524261-ref.html
new file mode 100644
index 0000000000..45d798cec8
--- /dev/null
+++ b/gfx/tests/reftest/1524261-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<html>
+<div style="overflow-y:hidden; position:absolute; top:50px; width: 200px; height: 100px; border: solid 1px black">
+</div>
diff --git a/gfx/tests/reftest/1524261.html b/gfx/tests/reftest/1524261.html
new file mode 100644
index 0000000000..33824a9038
--- /dev/null
+++ b/gfx/tests/reftest/1524261.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html reftest-async-scroll>
+<div style="overflow-y:scroll; scrollbar-width:none; position:absolute; top:50px; width: 200px; height: 100px; border: solid 1px black"
+ reftest-displayport-x="0" reftest-displayport-y="0"
+ reftest-displayport-w="200" reftest-displayport-h="300"
+ reftest-async-scroll-x="0" reftest-async-scroll-y="50">
+ <div style="transform: translateY(0px); width: 100px; height: 300px">
+ <div style="background-color: green; height: 25px; width: 25px; border-radius: 5px"></div>
+ </div>
+</div>
diff --git a/gfx/tests/reftest/1524353-ref.html b/gfx/tests/reftest/1524353-ref.html
new file mode 100644
index 0000000000..e1c5e78314
--- /dev/null
+++ b/gfx/tests/reftest/1524353-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<div style="overflow:hidden; width: 300px; height: 200px; border: solid 1px black">
+ <div style="width: 600px; transform: translateX(0px); will-change: transform">
+ <svg style="height: 200px" width="600">
+ <path d="M0 0 H 300 V 25 Z" fill="red"></path>
+ </svg>
+ </div>
+</div>
diff --git a/gfx/tests/reftest/1524353.html b/gfx/tests/reftest/1524353.html
new file mode 100644
index 0000000000..72a0f7d686
--- /dev/null
+++ b/gfx/tests/reftest/1524353.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<div style="overflow:hidden; width: 300px; height: 200px; border: solid 1px black">
+ <div style="width: 600px; transform: translateX(0px); will-change: transform">
+ <svg style="height: 200px" width="600">
+ <path d="M0 0 H 600 V 50 Z" fill="red"></path>
+ </svg>
+ </div>
+</div>
diff --git a/gfx/tests/reftest/1616444-same-color-different-paths-ref.html b/gfx/tests/reftest/1616444-same-color-different-paths-ref.html
new file mode 100644
index 0000000000..80f3634bc9
--- /dev/null
+++ b/gfx/tests/reftest/1616444-same-color-different-paths-ref.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=windows-1252"><style>
+ .swatch {
+ float: left;
+ height: 40px;
+ width: 120px;
+ box-sizing: border-box;
+ }
+ .swatch2 {
+ float: left;
+ height: 40px;
+ width: 720px;
+ box-sizing: border-box;
+ }
+ .header {
+ border: 1px solid black;
+ font-size: 10px;
+ font-weight: bold;
+ }
+ br { clear: both; }
+
+ .red { background: red }
+ .orange { background: orange }
+ .yellow { background: yellow }
+ .green { background: green }
+ .blue { background: blue }
+ .indigo { background: indigo }
+ .violet { background: violet }
+
+</style>
+</head><body>
+ <div class="swatch header">A: named color</div>
+ <div class="swatch header">B: �&amp; will-change: transform</div>
+ <div class="swatch header">C: �&amp; border</div>
+ <div class="swatch header">D: solid-color gradient </div>
+ <div class="swatch header">E: �&amp; will-change: transform</div>
+ <div class="swatch header">F: �&amp; border</div>
+ <br>
+ <div class="swatch2 red"></div>
+ <br>
+ <div class="swatch2 orange"></div>
+ <br>
+ <div class="swatch2 yellow"></div>
+ <br>
+ <div class="swatch2 green"></div>
+ <br>
+ <div class="swatch2 blue"></div>
+ <br>
+ <div class="swatch2 indigo"></div>
+ <br>
+ <div class="swatch2 violet"></div>
+ <br>
+</body></html>
diff --git a/gfx/tests/reftest/1616444-same-color-different-paths.html b/gfx/tests/reftest/1616444-same-color-different-paths.html
new file mode 100644
index 0000000000..be51b1d243
--- /dev/null
+++ b/gfx/tests/reftest/1616444-same-color-different-paths.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=windows-1252"><style>
+ .swatch {
+ float: left;
+ height: 40px;
+ width: 120px;
+ box-sizing: border-box;
+ }
+ .header {
+ border: 1px solid black;
+ font-size: 10px;
+ font-weight: bold;
+ }
+ br { clear: both; }
+ .layer { will-change: transform }
+
+ .add-border { border-left: 1px solid transparent; }
+ .red { background: red }
+ .g-red { background: linear-gradient(red,red) }
+ .orange { background: orange }
+ .g-orange { background: linear-gradient(orange,orange) }
+ .yellow { background: yellow }
+ .g-yellow { background: linear-gradient(yellow,yellow) }
+ .green { background: green }
+ .g-green { background: linear-gradient(green,green) }
+ .blue { background: blue }
+ .g-blue { background: linear-gradient(blue,blue) }
+ .indigo { background: indigo }
+ .g-indigo { background: linear-gradient(indigo,indigo) }
+ .violet { background: violet }
+ .g-violet { background: linear-gradient(violet,violet) }
+
+</style>
+</head><body>
+ <div class="swatch header">A: named color</div>
+ <div class="swatch header">B: �&amp; will-change: transform</div>
+ <div class="swatch header">C: �&amp; border</div>
+ <div class="swatch header">D: solid-color gradient </div>
+ <div class="swatch header">E: �&amp; will-change: transform</div>
+ <div class="swatch header">F: �&amp; border</div>
+ <br>
+ <div class="swatch red"></div>
+ <div class="swatch red layer"></div>
+ <div class="swatch red layer add-border"></div>
+ <div class="swatch g-red"></div>
+ <div class="swatch g-red layer"></div>
+ <div class="swatch g-red layer add-border"></div>
+ <br>
+ <div class="swatch orange"></div>
+ <div class="swatch orange layer"></div>
+ <div class="swatch orange layer add-border"></div>
+ <div class="swatch g-orange"></div>
+ <div class="swatch g-orange layer"></div>
+ <div class="swatch g-orange layer add-border"></div>
+ <br>
+ <div class="swatch yellow"></div>
+ <div class="swatch yellow layer"></div>
+ <div class="swatch yellow layer add-border"></div>
+ <div class="swatch g-yellow"></div>
+ <div class="swatch g-yellow layer"></div>
+ <div class="swatch g-yellow layer add-border"></div>
+ <br>
+ <div class="swatch green"></div>
+ <div class="swatch green layer"></div>
+ <div class="swatch green layer add-border"></div>
+ <div class="swatch g-green"></div>
+ <div class="swatch g-green layer"></div>
+ <div class="swatch g-green layer add-border"></div>
+ <br>
+ <div class="swatch blue"></div>
+ <div class="swatch blue layer"></div>
+ <div class="swatch blue layer add-border"></div>
+ <div class="swatch g-blue"></div>
+ <div class="swatch g-blue layer"></div>
+ <div class="swatch g-blue layer add-border"></div>
+ <br>
+ <div class="swatch indigo"></div>
+ <div class="swatch indigo layer"></div>
+ <div class="swatch indigo layer add-border"></div>
+ <div class="swatch g-indigo"></div>
+ <div class="swatch g-indigo layer"></div>
+ <div class="swatch g-indigo layer add-border"></div>
+ <br>
+ <div class="swatch violet"></div>
+ <div class="swatch violet layer"></div>
+ <div class="swatch violet layer add-border"></div>
+ <div class="swatch g-violet"></div>
+ <div class="swatch g-violet layer"></div>
+ <div class="swatch g-violet layer add-border"></div>
+ <br>
+</body></html>
diff --git a/gfx/tests/reftest/1662062-1-no-blurry.html b/gfx/tests/reftest/1662062-1-no-blurry.html
new file mode 100644
index 0000000000..93542b9b1f
--- /dev/null
+++ b/gfx/tests/reftest/1662062-1-no-blurry.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html reftest-resolution="5.0">
+<head>
+ <style>
+ html {
+ scrollbar-width: none;
+ }
+ body {
+ margin: 0;
+ }
+ </style>
+</head>
+<body>
+
+<svg height="100" width="100">
+ <polygon points="50 10 55 20 70 20 60 30 65 45 50 35 35 45 40 30 30 20 45 20" stroke="green" fill="transparent" stroke-width="5"/>
+</svg>
+
+</body>
+</html>
diff --git a/gfx/tests/reftest/1662062-1-ref.html b/gfx/tests/reftest/1662062-1-ref.html
new file mode 100644
index 0000000000..ca25585df9
--- /dev/null
+++ b/gfx/tests/reftest/1662062-1-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ html {
+ scrollbar-width: none;
+ }
+ body {
+ margin: 0;
+ }
+ </style>
+</head>
+<body>
+
+<svg height="500" width="500">
+ <polygon points="250 50 275 100 350 100 300 150 325 225 250 175 175 225 200 150 150 100 225 100" stroke="green" fill="transparent" stroke-width="25"/>
+</svg>
+
+</body>
+</html>
diff --git a/gfx/tests/reftest/1681610-ref.html b/gfx/tests/reftest/1681610-ref.html
new file mode 100644
index 0000000000..cb3693cc7f
--- /dev/null
+++ b/gfx/tests/reftest/1681610-ref.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <style>
+ body {
+ margin-left: 100px;
+ font-size: 500%;
+ font-family: Nimbus Sans, sans-serif;
+ }
+ ul {
+ width: 1em; /* This must to be non-zero, for the percentages to work. */
+ }
+ li {
+ /* This clip path is chosen to mask off all the rounded edges of a
+ 'disc' list item marker, to hide the anti-aliased pixels along the
+ round edges of the bullets from the reftest. This makes correctly
+ rendered 'disc' and 'square' list item markers appear identical,
+ while a bogus clear pixel in the middle of a 'disc' marker (the
+ present bug) still shows up.
+
+ The exact placement and rendering of the marker is up to the user
+ agent, so these values are specific to Firefox. The right and left
+ inset values fall outside the usual 0%-100% range because the
+ marker appears to the left of the <li>'s border box. */
+ clip-path: inset(44% 159% 44% -74%);
+ list-style-type: square;
+ }
+ </style>
+ </head>
+ <body>
+ <ul>
+ <li></li>
+ <li></li>
+ <li></li>
+ <li></li>
+ <li></li>
+ <li></li>
+ </ul>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/1681610.html b/gfx/tests/reftest/1681610.html
new file mode 100644
index 0000000000..e93fe5bd5b
--- /dev/null
+++ b/gfx/tests/reftest/1681610.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <style>
+ body {
+ margin-left: 100px;
+ font-size: 500%;
+ font-family: Nimbus Sans, sans-serif;
+ }
+ ul {
+ width: 1em; /* This must to be non-zero, for the percentages to work. */
+ }
+ li {
+ /* This clip path is chosen to mask off all the rounded edges of a
+ 'disc' list item marker, to hide the anti-aliased pixels along the
+ round edges of the bullets from the reftest. This makes correctly
+ rendered 'disc' and 'square' list item markers appear identical,
+ while a bogus clear pixel in the middle of a 'disc' marker (the
+ present bug) still shows up.
+
+ The exact placement and rendering of the marker is up to the user
+ agent, so these values are specific to Firefox. The right and left
+ inset values fall outside the usual 0%-100% range because the
+ marker appears to the left of the <li>'s border box. */
+ clip-path: inset(44% 159% 44% -74%);
+ }
+ </style>
+ </head>
+ <body>
+ <ul>
+ <li></li>
+ <li></li>
+ <li></li>
+ <li></li>
+ <li></li>
+ <li></li>
+ </ul>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/468496-1-ref.html b/gfx/tests/reftest/468496-1-ref.html
new file mode 100644
index 0000000000..c045d7d769
--- /dev/null
+++ b/gfx/tests/reftest/468496-1-ref.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html><head>
+<title>stretched image artifacts (test)</title>
+<style>
+div {
+ height: 5px;
+ background-image: url("data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=");
+ background-repeat: repeat-x;
+}
+</style>
+</head><body>
+<div style="width: 540px">
+</div><div style="width: 541px">
+</div><div style="width: 542px">
+</div><div style="width: 543px">
+</div><div style="width: 544px">
+</div><div style="width: 545px">
+</div><div style="width: 546px">
+</div><div style="width: 547px">
+</div><div style="width: 548px">
+</div><div style="width: 549px">
+</div><div style="width: 550px">
+</div><div style="width: 551px">
+</div><div style="width: 552px">
+</div><div style="width: 553px">
+</div><div style="width: 554px">
+</div><div style="width: 555px">
+</div><div style="width: 556px">
+</div><div style="width: 557px">
+</div><div style="width: 558px">
+</div><div style="width: 559px">
+</div></body></html>
diff --git a/gfx/tests/reftest/468496-1.html b/gfx/tests/reftest/468496-1.html
new file mode 100644
index 0000000000..a6bc6dde63
--- /dev/null
+++ b/gfx/tests/reftest/468496-1.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html><head>
+<title>stretched image artifacts (test)</title>
+<style>
+img { display: block; }
+div { height: 5px; }
+</style>
+</head><body>
+<div style="width: 540px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 541px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 542px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 543px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 544px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+
+</div><div style="width: 545px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 546px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 547px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 548px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 549px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 550px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 551px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 552px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 553px">
+
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 554px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 555px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 556px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 557px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 558px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div><div style="width: 559px">
+<img width="100%" height="2" src="data:image/gif;base64,R0lGODdhAQACAPABAAD/AP///ywAAAAAAQACAAACAkQKADs=">
+</div></body></html>
diff --git a/gfx/tests/reftest/611498-1.html b/gfx/tests/reftest/611498-1.html
new file mode 100644
index 0000000000..28a9059ae4
--- /dev/null
+++ b/gfx/tests/reftest/611498-1.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<html class="reftest-wait">
+<script type="text/javascript">
+function done()
+{
+ document.documentElement.className = "";
+}
+function move()
+{
+ elem = document.getElementById("moving");
+ elem.addEventListener("transitionend", done, true);
+ elem.style.position = "relative";
+ elem.style.top = 0;
+}
+</script>
+<body style="background: url('bwinton.jpg'); background-attachment: fixed" onload="move()">
+<div id="moving" style="position: absolute; top: 50px; background-image: url('blacktrans.png'); width: 100px; height: 100px; -moz-transition: top 0.1s; padding: 2px;">blah blah blah</div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/611498-ref.html b/gfx/tests/reftest/611498-ref.html
new file mode 100644
index 0000000000..0763857c8b
--- /dev/null
+++ b/gfx/tests/reftest/611498-ref.html
@@ -0,0 +1,6 @@
+<!doctype html>
+<html>
+<body style="background: url('bwinton.jpg'); background-attachment: fixed">
+<div style="background: url('blacktrans.png'); width: 100px; height: 100px; padding: 2px;">blah blah blah</div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/709477-1-ref.html b/gfx/tests/reftest/709477-1-ref.html
new file mode 100644
index 0000000000..eb8897f8ee
--- /dev/null
+++ b/gfx/tests/reftest/709477-1-ref.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>glyph clipping (reference)</title>
+ <style>
+ #clip { position: absolute;
+ overflow: hidden;
+ font-size: 16px;
+ width: 500px;
+ height: 300px;}
+ /* Offsets keep the text far enough away from clip boundaries so that
+ cairo knows the text is within the clip. Non-unit alpha color makes
+ the bug show even without antialiasing. */
+ #text { position: absolute;
+ left: 100px;
+ top: 100px;
+ color: rgba(0,0,0,0.4)}
+ #cover { position: absolute;
+ top: 90px;
+ left: 120px;
+ height: 50px;
+ width: 60px;
+ background: transparent; }
+ #mod { position: absolute;
+ top: 400px;
+ left: 0px;
+ height: 2000px;
+ width: 600px;
+ background: transparent; }
+ </style>
+</head>
+<body>
+ <div id="clip">
+ <div id="text">
+ Some text that was</br>
+ initially partially covered.</br>
+ </div>
+ </div>
+ <div id="cover">
+ </div>
+ <div id="mod">
+ </div>
+</body>
+<script>
+ scrollTo(0,1);
+</script>
+</html>
diff --git a/gfx/tests/reftest/709477-1.html b/gfx/tests/reftest/709477-1.html
new file mode 100644
index 0000000000..8895ea67ec
--- /dev/null
+++ b/gfx/tests/reftest/709477-1.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+ <title>glyph clipping (test)</title>
+ <style>
+ #clip { position: absolute;
+ overflow: hidden;
+ font-size: 16px;
+ width: 500px;
+ height: 300px;}
+ /* Offsets keep the text far enough away from clip boundaries so that
+ cairo knows the text is within the clip. Non-unit alpha color makes
+ the bug show even without antialiasing. */
+ #text { position: absolute;
+ left: 100px;
+ top: 100px;
+ color: rgba(0,0,0,0.4)}
+ #cover { position: absolute;
+ top: 90px;
+ left: 120px;
+ height: 50px;
+ width: 60px;
+ background: green; }
+ #mod { position: absolute;
+ top: 400px;
+ left: 0px;
+ height: 2000px;
+ width: 600px;
+ background: green; }
+ </style>
+ <script>
+
+function doPaint()
+{
+ window.addEventListener("MozAfterPaint", doScroll);
+ var cover = document.getElementById("cover");
+ cover.style.background = "transparent";
+ var mod = document.getElementById("mod");
+ mod.style.background = "transparent";
+}
+
+function doScroll()
+{
+ window.removeEventListener("MozAfterPaint", doScroll);
+ window.addEventListener("MozAfterPaint", endTest);
+ scrollTo(0,1);
+}
+
+function endTest()
+{
+ document.documentElement.removeAttribute("class");
+}
+
+document.addEventListener("MozReftestInvalidate", doPaint);
+ </script>
+</head>
+<body>
+ <div id="clip">
+ <div id="text">
+ Some text that was</br>
+ initially partially covered.</br>
+ </div>
+ </div>
+ <div id="cover">
+ </div>
+ <div id="mod">
+ </div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/853889-1-ref.html b/gfx/tests/reftest/853889-1-ref.html
new file mode 100644
index 0000000000..1a8513dedf
--- /dev/null
+++ b/gfx/tests/reftest/853889-1-ref.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<html>
+ <head><title>Testcase for bug 853889</title></head>
+ <body>
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="400px" height="400px">
+ <path d="M 0 0 L 0 50 L 400 50 L 400 0 Z"
+ fill="rgb(12,200,12)"></path>
+ </svg>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/853889-1.html b/gfx/tests/reftest/853889-1.html
new file mode 100644
index 0000000000..2b728c2975
--- /dev/null
+++ b/gfx/tests/reftest/853889-1.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<html>
+ <head><title>Testcase for bug 853889</title></head>
+ <body>
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="400px" height="400px">
+
+ <path d="M 0 400 L 0 450 L 600 450 L 600 400 Z"
+ fill="rgb(200,12,12)"></path>
+ <path d="M 0 0 L 0 50 L 600 50 L 600 0 Z"
+ fill="rgb(200,12,12)"></path>
+
+ <path d="M 0 0 L 0 50 L 600 50 L 600 0 Z
+ M 0 400 L 0 450 L 600 450 L 600 400 Z"
+ fill="rgb(12,200,12)"></path>
+ </svg>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/blacktrans.png b/gfx/tests/reftest/blacktrans.png
new file mode 100644
index 0000000000..1b3ef9baa5
--- /dev/null
+++ b/gfx/tests/reftest/blacktrans.png
Binary files differ
diff --git a/gfx/tests/reftest/bug1523410-translate-scale-snap-ref.html b/gfx/tests/reftest/bug1523410-translate-scale-snap-ref.html
new file mode 100644
index 0000000000..159d8a31e0
--- /dev/null
+++ b/gfx/tests/reftest/bug1523410-translate-scale-snap-ref.html
@@ -0,0 +1,37 @@
+<html reftest-zoom="0.8">
+<head>
+<style type="text/css">
+div.outermost {
+max-width: 1240px;
+}
+
+div.outer {
+max-width: 50%;
+}
+
+div.inner {
+transform: translateX(1px);
+position: relative;
+overflow: hidden;
+padding-bottom: 56.25%;
+}
+
+div.innermost {
+position: absolute;
+will-change: transform;
+transform: scale(1.0);
+}
+</style>
+</head>
+<body>
+<div class="outermost">
+<div class="outer">
+<div class="inner">
+<div class="innermost">
+<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmwAAAFdCAIAAAAxOabnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4wEcFTUw5a6RmgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAERklEQVR42u3VMQEAAAjDMMC/56EB7kRCn3YKAPgYCQDARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAEwUAEwUAEwUAEwUADBRADBRADBRADBRADBRAMBEAcBEAcBEAcBEAcBEAQATBQATBQATBQATBQBMFABMFABMFABMFABMFAAwUQAwUQAwUQAwUQAwUQDARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAEwUAEwUAEwUAEwUAEwUADBRADBRADBRADBRAMBEAcBEAcBEAcBEAcBEAQATBQATBQATBQATBQATBQBMFABMFABMFABMFAAwUQAwUQAwUQAwUQAwUQDARAHARAHARAHARAHARAEAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFAEwUAEwUAEwUAEwUAEwUADBRADBRADBRADBRADBRAMBEAcBEAcBEAcBEAQATBQATBQATBQATBQATBQBMFABMFABMFABMFABMFAAwUQAwUQAwUQAwUQDARAHARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQAMFEAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAEwUAEwUAEwUAEwUADBRADBRADBRADBRADBRAMBEAcBEAcBEAcBEAcBEAQATBQATBQATBQATBQBMFABMFABMFABMFABMFAAwUQAwUQAwUQAwUQAwUQDARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAEwUAEwUAEwUAEwUAExUAgAwUQAwUQAwUQAwUQDARAHARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQAMFEAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFAEwUAEwUAEwUAEwUAEwUADBRADBRADBRADBRADBRAMBEAcBEAcBEAcBEAQATBQATBQATBQATBQATBQBMFABMFABMFABMFABMFAAwUQAwUQAwUQAwUQDARAHARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAI4WK5EDuRah8ngAAAAASUVORK5CYII=">
+</div>
+</div>
+</div>
+</div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/bug1523410-translate-scale-snap.html b/gfx/tests/reftest/bug1523410-translate-scale-snap.html
new file mode 100644
index 0000000000..9c894c748a
--- /dev/null
+++ b/gfx/tests/reftest/bug1523410-translate-scale-snap.html
@@ -0,0 +1,37 @@
+<html reftest-zoom="0.8">
+<head>
+<style type="text/css">
+div.outermost {
+max-width: 1240px;
+}
+
+div.outer {
+max-width: 50%;
+}
+
+div.inner {
+transform: translateX(1px);
+position: relative;
+overflow: hidden;
+padding-bottom: 56.25%;
+}
+
+div.innermost {
+position: absolute;
+will-change: transform;
+transform: scale(2.0);
+}
+</style>
+</head>
+<body>
+<div class="outermost">
+<div class="outer">
+<div class="inner">
+<div class="innermost">
+<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmwAAAFdCAIAAAAxOabnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4wEcFTUw5a6RmgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAERklEQVR42u3VMQEAAAjDMMC/56EB7kRCn3YKAPgYCQDARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAEwUAEwUAEwUAEwUADBRADBRADBRADBRADBRAMBEAcBEAcBEAcBEAcBEAQATBQATBQATBQATBQBMFABMFABMFABMFABMFAAwUQAwUQAwUQAwUQAwUQDARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAEwUAEwUAEwUAEwUAEwUADBRADBRADBRADBRAMBEAcBEAcBEAcBEAcBEAQATBQATBQATBQATBQATBQBMFABMFABMFABMFAAwUQAwUQAwUQAwUQAwUQDARAHARAHARAHARAHARAEAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFAEwUAEwUAEwUAEwUAEwUADBRADBRADBRADBRADBRAMBEAcBEAcBEAcBEAQATBQATBQATBQATBQATBQBMFABMFABMFABMFABMFAAwUQAwUQAwUQAwUQDARAHARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQAMFEAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAEwUAEwUAEwUAEwUADBRADBRADBRADBRADBRAMBEAcBEAcBEAcBEAcBEAQATBQATBQATBQATBQBMFABMFABMFABMFABMFAAwUQAwUQAwUQAwUQAwUQDARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAEwUAEwUAEwUAEwUAExUAgAwUQAwUQAwUQAwUQDARAHARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQAMFEAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFAEwUAEwUAEwUAEwUAEwUADBRADBRADBRADBRADBRAMBEAcBEAcBEAcBEAQATBQATBQATBQATBQATBQBMFABMFABMFABMFABMFAAwUQAwUQAwUQAwUQDARAHARAHARAHARAHARAEAEwUAEwUAEwUAEwUAEwUATBQATBQATBQATBQATBQAMFEAMFEAMFEAMFEAwEQBwEQBwEQBwEQBwEQBABMFABMFABMFABMFABMFAI4WK5EDuRah8ngAAAAASUVORK5CYII=">
+</div>
+</div>
+</div>
+</div>
+</body>
+</html>
diff --git a/gfx/tests/reftest/bwinton.jpg b/gfx/tests/reftest/bwinton.jpg
new file mode 100644
index 0000000000..708354511b
--- /dev/null
+++ b/gfx/tests/reftest/bwinton.jpg
Binary files differ
diff --git a/gfx/tests/reftest/pass.svg b/gfx/tests/reftest/pass.svg
new file mode 100644
index 0000000000..c09c6601e8
--- /dev/null
+++ b/gfx/tests/reftest/pass.svg
@@ -0,0 +1,8 @@
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
+ <title>Testcase reference file for generic pass condition</title>
+ <rect width="100%" height="100%" fill="lime"/>
+</svg>
diff --git a/gfx/tests/reftest/picture-caching-on-async-zoom.html b/gfx/tests/reftest/picture-caching-on-async-zoom.html
new file mode 100644
index 0000000000..f32ab02d3b
--- /dev/null
+++ b/gfx/tests/reftest/picture-caching-on-async-zoom.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+ <head>
+ <meta name="viewport" content="width=device-width"/>
+ <title>The Grid in an overflowing div</title>
+ <style type="text/css">
+ html, body {
+ padding: 0;
+ border: 0;
+ margin: 0;
+ scrollbar-width: none;
+ }
+ table {
+ padding: 0;
+ margin: 0;
+ border-top: none;
+ border-left: none;
+ border-right: 1px solid black;
+ border-bottom: 1px solid black;
+ }
+ tr {
+ padding: 0;
+ border: 0;
+ margin: 0;
+ }
+ td {
+ /* top border counts as part of height, but
+ left border doesn't count as part of width.
+ go figure.
+ */
+ min-height: 99px;
+ height: 99px;
+ max-height: 99px;
+ min-width: 99px;
+ width: 99px;
+ max-width: 99px;
+ padding: 0;
+ border-left: 1px solid black;
+ border-top: 1px solid black;
+ border-right: none;
+ border-bottom: none;
+ margin: 0;
+ font-size: 12px;
+ text-align: left;
+ vertical-align: top;
+ font-family: monospace;
+ }
+ </style>
+ </head>
+ <body>
+ <div style="color: red">this text is above the scrolling div. the div below is 300x400</div>
+ <div id="nest" style="overflow: scroll; scrollbar-width: none; height: 400px; width: 300px">
+ <table cellspacing="0" cellpadding="0" border="0">
+ <script type="text/javascript">
+ var PAGE_SIZE = 2000;
+ var GRID_SIZE = 100;
+
+ var cnt = (PAGE_SIZE / GRID_SIZE);
+ for (var y = 0; y < cnt; y++) {
+ document.writeln( "<tr>" );
+ for (var x = 0; x < cnt; x++) {
+ var color = ((x + y) % 2) ? "blue" : "red";
+ document.writeln( "<td style='background-color: " + color + "'></td>" );
+ }
+ document.writeln( "</tr>" );
+ }
+ </script>
+ </table>
+ </div>
+ <div style="color: red">this text is below the scrolling div</div>
+ <script>
+ if (location.search == "?ref") {
+ // In the reference case we use a CSS transform so that we don't use
+ // the async-zoom codepath (which is handled differently by WR).
+ document.documentElement.setAttribute("style", "transform: scale(1.1); transform-origin: top left");
+ document.documentElement.classList.remove("reftest-wait");
+ } else {
+ // In the test case, we want to first paint the unscaled content, so that
+ // WR populates the picture cache. Then we apply an async zoom and paint
+ // again for the final snapshot. The bug in this case was that WR wasn't
+ // properly invalidating the picture cache tiles and so things would
+ // appear incorrectly.
+ window.addEventListener("MozAfterPaint", () => {
+ document.documentElement.setAttribute("reftest-async-zoom", "1.1");
+ document.documentElement.classList.remove("reftest-wait");
+ });
+ }
+ </script>
+ </body>
+</html>
diff --git a/gfx/tests/reftest/reftest.list b/gfx/tests/reftest/reftest.list
new file mode 100644
index 0000000000..4505a13709
--- /dev/null
+++ b/gfx/tests/reftest/reftest.list
@@ -0,0 +1,29 @@
+# 468496-1 will also detect bugs in video drivers.
+== 468496-1.html 468496-1-ref.html
+fuzzy(0-175,0-443) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 611498-1.html 611498-ref.html # Bug 1392106
+skip-if((gtkWidget||Android)&&webrender) == 709477-1.html 709477-1-ref.html #Bug 1620096
+skip-if(!asyncPan) == 1086723.html 1086723-ref.html
+== 853889-1.html 853889-1-ref.html
+skip-if(Android) fuzzy-if(skiaContent,0-1,0-587) == 1143303-1.svg pass.svg
+fuzzy(0-100,0-30) == 1149923.html 1149923-ref.html # use fuzzy due to few distorted pixels caused by border-radius
+== 1131264-1.svg pass.svg
+== 1419528.html 1419528-ref.html
+== 1424673.html 1424673-ref.html
+== 1429411.html 1429411-ref.html
+fuzzy-if(winWidget,0-1,0-4) == 1435143.html 1435143-ref.html
+== 1444904.html 1444904-ref.html
+fuzzy-if(winWidget&&webrender,90-95,1000-1100) == 1451168.html 1451168-ref.html
+== 1461313.html 1461313-ref.html
+fuzzy(5-32,21908-26621) fuzzy-if(webrender,4-5,868-1039) == 1463802.html 1463802-ref.html
+fuzzy(0-11,0-4) == 1474722.html 1474722-ref.html
+== 1501195.html 1501195-ref.html
+== 1519754.html 1519754-ref.html
+skip-if(!asyncPan) == 1524261.html 1524261-ref.html
+fuzzy-if(webrender,14-14,44-95) == 1524353.html 1524353-ref.html
+fuzzy-if(webrender,2-7,17500-36908) == 1523776.html 1523776-ref.html
+== bug1523410-translate-scale-snap.html bug1523410-translate-scale-snap-ref.html
+== 1523080.html 1523080-ref.html
+== 1616444-same-color-different-paths.html 1616444-same-color-different-paths-ref.html
+skip-if(!asyncPan||!webrender||Android) fuzzy-if(winWidget,94-94,3415-3415) pref(apz.allow_zooming,true) == picture-caching-on-async-zoom.html picture-caching-on-async-zoom.html?ref
+pref(apz.allow_zooming,true) == 1662062-1-no-blurry.html 1662062-1-ref.html
+== 1681610.html 1681610-ref.html