Make captureCanvas-webrtc.html more robust
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 25 Sep 2017 16:00:42 +0000 (16:00 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 25 Sep 2017 16:00:42 +0000 (16:00 +0000)
https://bugs.webkit.org/show_bug.cgi?id=177334

Patch by Youenn Fablet <youenn@apple.com> on 2017-09-25
Reviewed by Darin Adler.

Making test more robust by printing synchronously the canvas and increasing.
the threshold for pixel comparison.
Minor refactoring for improving the readability.

* webrtc/captureCanvas-webrtc.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@222446 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/webrtc/captureCanvas-webrtc.html

index 3e3e166..f7f0bc2 100644 (file)
@@ -1,5 +1,18 @@
 2017-09-25  Youenn Fablet  <youenn@apple.com>
 
+        Make captureCanvas-webrtc.html more robust
+        https://bugs.webkit.org/show_bug.cgi?id=177334
+
+        Reviewed by Darin Adler.
+
+        Making test more robust by printing synchronously the canvas and increasing.
+        the threshold for pixel comparison.
+        Minor refactoring for improving the readability.
+
+        * webrtc/captureCanvas-webrtc.html:
+
+2017-09-25  Youenn Fablet  <youenn@apple.com>
+
         LayoutTest webrtc/video-mute.html is very often failing
         https://bugs.webkit.org/show_bug.cgi?id=177331
 
index ae58090..a925d1c 100644 (file)
         <script>
 
 var color = "green";
-function printRectangle()
+
+function printCanvas()
 {
     var context = canvas1.getContext("2d");
     context.fillStyle = color;
-    context.fillRect(0, 0, 320, 240);
-    setTimeout(printRectangle, 50);
+    context.fillRect(0, 0, canvas1.width, canvas1.height);
+}
+
+function printRectangleEvery50ms()
+{
+    printCanvas();
+    setTimeout(printRectangleEvery50ms, 50);
 }
 
-function testCanvas(testName, array1, isSame, count)
+function testCanvas(testName, canvas, isSame, count)
 {
+    var array1 = canvas.getContext("2d").getImageData(20, 20, 60, 60).data;
     if (count === undefined)
         count = 0;
     canvas2.getContext("2d").drawImage(video, 0 ,0);
@@ -29,24 +36,24 @@ function testCanvas(testName, array1, isSame, count)
     for (index = 0; index < array1.length; ++index) {
         // Rough comparison since we are compressing data.
         // This test still catches errors since we are going from green to blue to red.
-        if (Math.abs(array1[index] - array2[index]) > 40) {
+        if (Math.abs(array1[index] - array2[index]) > 100) {
             isEqual = false;
             continue;
         }
     }
     if (isEqual === isSame)
-        return;
+        return Promise.resolve();
 
     if (count === 20)
         return Promise.reject(testName + " failed, expected " + JSON.stringify(array1) + " but got " + JSON.stringify(array2));
 
     return waitFor(100).then(() => {
-        return testCanvas(testName, array1, isSame, ++count);
+        return testCanvas(testName, canvas, isSame, ++count);
     });
 }
 
 promise_test((test) => {
-    printRectangle();
+    printRectangleEvery50ms();
     return new Promise((resolve, reject) => {
         createConnections((firstConnection) => {
             var stream = canvas1.captureStream();
@@ -68,29 +75,26 @@ promise_test((test) => {
 }, "Setting up the connection");
 
 promise_test((test) => {
-    return waitFor(100).then(() => {
-        return testCanvas("test 1", canvas1.getContext("2d").getImageData(20, 20, 60, 60).data, true);
-    });
+    return testCanvas("test 1", canvas1, true);
 }, "Checking canvas is green");
 
 promise_test((test) => {
     color = "red";
-    return waitFor(300).then(() => {
-        return testCanvas("test 2", canvas1.getContext("2d").getImageData(20, 20, 60, 60).data, true);
-    });
+    printCanvas()
+    return testCanvas("test 2", canvas1, true);
 }, "Checking canvas is red");
 
 
 promise_test((test) => {
     color = "green";
-    return waitFor(300).then(() => {
-        return testCanvas("test 3", canvas1.getContext("2d").getImageData(20, 20, 60, 60).data, true);
-    });
+    printCanvas();
+    return testCanvas("test 3", canvas1, true);
 }, "Checking canvas is green again");
 
 promise_test((test) => {
     canvas1.width = 640;
     canvas1.height = 480;
+    printCanvas();
     return waitForVideoSize(video, 640, 480);
 }, "Checking canvas size change");
         </script>