Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Unified Diff: third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html

Issue 2560253004: IntersectionObserver: convert tests to testharness.js (Closed)
Patch Set: rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html
diff --git a/third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html b/third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html
index 91b03e1c6f73a54d27028573c2604695b8f41389..d23a92ded60c492c5fead3beca5662203def1317 100644
--- a/third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html
+++ b/third_party/WebKit/LayoutTests/intersection-observer/multiple-targets.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
-<script src="../resources/js-test.js"></script>
-<script src="../resources/intersection-observer-helper-functions.js"></script>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
<style>
.target {
width: 100px;
@@ -9,57 +9,81 @@
background-color: green;
}
</style>
-<div style="width:100%; height:700px;"></div>
+<div id="leading-space" style="width:100%; height:700px;"></div>
<div id="target1" class="target"></div>
<div id="target2" class="target"></div>
<div id="target3" class="target"></div>
<script>
-description("Verify that notifications for multiple targets are sorted by the order in which observe() was called on each target.");
-var target1 = document.getElementById("target1");
-var target2 = document.getElementById("target2");
-var target3 = document.getElementById("target3");
-var entries = [];
-var observer = new IntersectionObserver(
- changes => { entries.push(...changes); }
-);
+function waitForNotification(f) {
+ requestAnimationFrame(() => {
+ setTimeout(() => {
+ setTimeout(f);
+ });
+ });
+}
onload = function() {
+ var t = async_test("Verify that notifications for multiple targets are sorted by the order in which observe() was called on each target.");
+
+ test(function() { assert_equals(window.innerWidth, 800) }, "Window must be 800 pixels wide.");
+ test(function() { assert_equals(window.innerHeight, 600) }, "Window must be 600 pixels high.");
+
+ var target1 = document.getElementById("target1");
+ var target2 = document.getElementById("target2");
+ var target3 = document.getElementById("target3");
+ var entries = [];
+ var observer = new IntersectionObserver(function(changes) {
+ entries = entries.concat(changes)
+ });
observer.observe(target1);
observer.observe(target2);
observer.observe(target3);
entries = entries.concat(observer.takeRecords());
- shouldBeEqualToNumber("entries.length", 0);
+ test(function() { assert_equals(entries.length, 0) }, "No initial notifications.");
document.scrollingElement.scrollTop = 150;
waitForNotification(step0);
-}
-function step0() {
- shouldBeEqualToNumber("entries.length", 1);
- if (entries.length > 0)
- shouldBeEqualToString("entries[0].target.id", "target1");
- document.scrollingElement.scrollTop = 10000;
- waitForNotification(step1);
-}
+ function step0() {
+ test(function() { assert_equals(entries.length, 1) }, "One notification.");
+ if (entries.length > 0) {
+ test(function() { assert_true(entries[0].target === target1) },
+ "entries[0].target === target1");
+ }
+ document.scrollingElement.scrollTop = 10000;
+ waitForNotification(step1);
+ }
-function step1() {
- shouldBeEqualToNumber("entries.length", 3);
- if (entries.length > 1)
- shouldBeEqualToString("entries[1].target.id", "target2");
- if (entries.length > 2)
- shouldBeEqualToString("entries[2].target.id", "target3");
- document.scrollingElement.scrollTop = 0;
- waitForNotification(step2);
-}
+ function step1() {
+ test(function() { assert_equals(entries.length, 3) }, "Three notifications.");
+ if (entries.length > 1) {
+ test(function() { assert_true(entries[1].target === target2) },
+ "entries[1].target === target2");
+ }
+ if (entries.length > 2) {
+ test(function() { assert_true(entries[2].target === target3) },
+ "entries[2].target === target3");
+ }
+ document.scrollingElement.scrollTop = 0;
+ waitForNotification(step2);
+ }
-function step2() {
- shouldBeEqualToNumber("entries.length", 6);
- if (entries.length > 3)
- shouldBeEqualToString("entries[3].target.id", "target1");
- if (entries.length > 4)
- shouldBeEqualToString("entries[4].target.id", "target2");
- if (entries.length > 5)
- shouldBeEqualToString("entries[5].target.id", "target3");
- finishJSTest();
-}
+ function step2() {
+ test(function() { assert_equals(entries.length, 6) }, "Six notifications.");
+ if (entries.length > 3) {
+ test(function() { assert_true(entries[3].target === target1) },
+ "entries[3].target === target1");
+ }
+ if (entries.length > 4) {
+ test(function() { assert_true(entries[4].target === target2) },
+ "entries[4].target === target2");
+ }
+ if (entries.length > 5) {
+ test(function() { assert_true(entries[5].target === target3) },
+ "entries[5].target === target3");
+ }
+ document.getElementById("leading-space").style.height = "";
+ t.done();
+ }
+};
</script>

Powered by Google App Engine
This is Rietveld 408576698