Bug 1326189 part 3 - Make test_visited_reftests support needs-focus. r=dholbert draft
authorXidorn Quan <me@upsuper.org>
Fri, 20 Jan 2017 17:15:02 +1100
changeset 464850 c81fce0505ec806f3d93adf4eee474a9cadd58a0
parent 464849 5e968e38e924e7c741cf1d3a5c414650d2b093b0
child 464851 1fc4b8683d9eb10b6e9d90902bf6d177b7ac50cd
push id42456
push userxquan@mozilla.com
push dateMon, 23 Jan 2017 04:22:23 +0000
reviewersdholbert
bugs1326189
milestone53.0a1
Bug 1326189 part 3 - Make test_visited_reftests support needs-focus. r=dholbert MozReview-Commit-ID: XCy3kVh5FN
layout/style/test/test_visited_reftests.html
--- a/layout/style/test/test_visited_reftests.html
+++ b/layout/style/test/test_visited_reftests.html
@@ -121,33 +121,48 @@ function passes(equal, shot1, shot2)
   return correct;
 }
 
 function waitFor100ms() {
   return new Promise(resolve => setTimeout(resolve, 100));
 }
 
 async function runTest(testLine) {
-  var splitData = testLine.split(" ");
-  let isEqual = splitData[0] == "==";
-  let testFile = splitData[1];
-  let refFile = splitData[2];
+  let splitData = testLine.split(" ");
+  let isEqual;
+  let needsFocus = false;
+  while (true) {
+    let op = splitData.shift();
+    if (op == "needs-focus") {
+      needsFocus = true;
+    } else if (op == "==" || op == "!=") {
+      isEqual = op == "==";
+      break;
+    } else {
+      ok(false, "Unknown syntax");
+      return;
+    }
+  }
+  let [testFile, refFile] = splitData;
 
   let promiseTestWin = startIframe(testFile);
   let promiseRefWin = startIframe(refFile);
   let refSnapshot = snapshotWindow(await promiseRefWin);
   let testWindow = await promiseTestWin;
   // Always wait at least 100ms, so that any test that switches
   // from passing to failing when the asynchronous link coloring
   // happens should fail at least some of the time.
   await waitFor100ms();
 
   let tries;
   let testSnapshot;
   for (tries = 0; tries < gMaxPassingTries * gTimeoutFactor; ++tries) {
+    if (needsFocus) {
+      await SimpleTest.promiseFocus(testWindow, false);
+    }
     testSnapshot = snapshotWindow(testWindow);
     if (passes(isEqual, testSnapshot, refSnapshot)) {
       if (tries > gMaxPassingTries) {
         gMaxPassingTries = tries;
       }
       break;
     }
     // Links might not have been colored yet. Try again in 100ms.