Bug 1265582 - Fix reftest structured logs to match wpt, r=ahal draft
authorJames Graham <james@hoppipolla.co.uk>
Tue, 27 Sep 2016 22:54:50 +0100
changeset 419025 6b83d98aff1c5e73ac0a802b5a83b8be95adf59a
parent 419024 be2718204d4dacd5f3353060b39010ab134fe68d
child 532472 8e3482df3b845d8760e35bd4b9d38c04d69b1822
push id30823
push userjames@hoppipolla.co.uk
push dateThu, 29 Sep 2016 14:04:43 +0000
reviewersahal
bugs1265582
milestone52.0a1
Bug 1265582 - Fix reftest structured logs to match wpt, r=ahal This allows the logs to work with the structured reftest viewer. MozReview-Commit-ID: CY71vSdDjLP
layout/tools/reftest/output.py
layout/tools/reftest/reftest.jsm
testing/mozbase/mozlog/mozlog/formatters/tbplformatter.py
--- a/layout/tools/reftest/output.py
+++ b/layout/tools/reftest/output.py
@@ -50,21 +50,21 @@ class ReftestFormatter(TbplFormatter):
                 status_msg += "(EXPECTED RANDOM)"
 
 
         output_text = "%s | %s | %s" % (status_msg, test, data.get("message", ""))
 
         if "reftest_screenshots" in extra:
             screenshots = extra["reftest_screenshots"]
             if len(screenshots) == 3:
-                output_text += ("\nREFTEST   IMAGE 1 (TEST): %s\n"
-                                "REFTEST   IMAGE 2 (REFERENCE): %s") % (screenshots[0]["screenshot"],
+                output_text += ("\nREFTEST   IMAGE 1 (TEST): data:image/png;base64,%s\n"
+                                "REFTEST   IMAGE 2 (REFERENCE): data:image/png;base64,%s") % (screenshots[0]["screenshot"],
                                                                          screenshots[2]["screenshot"])
             elif len(screenshots) == 1:
-                output_text += "\nREFTEST   IMAGE: %(image1)s" % screenshots[0]["screenshot"]
+                output_text += "\nREFTEST   IMAGE: data:image/png;base64,%(image1)s" % screenshots[0]["screenshot"]
 
 
         output_text += "\nREFTEST TEST-END | %s" % test
         return "%s\n" % output_text
 
     def process_output(self, data):
         return "%s\n" % data["data"]
 
--- a/layout/tools/reftest/reftest.jsm
+++ b/layout/tools/reftest/reftest.jsm
@@ -1705,23 +1705,27 @@ function RecordResult(testRunTime, error
             } else {
                 var message = "image comparison";
                 if (!test_passed && expected == EXPECTED_PASS ||
                     !test_passed && expected == EXPECTED_FUZZY ||
                     test_passed && expected == EXPECTED_FAIL) {
                     if (!equal) {
                         extra.max_difference = maxDifference.value;
                         extra.differences = differences;
+                        var image1 = gCanvas1.toDataURL();
+                        var image2 = gCanvas2.toDataURL();
                         extra.reftest_screenshots = [
-                            {url:gURLs[0].identifier[0], screenshot: gCanvas1.toDataURL()},
+                            {url:gURLs[0].identifier[0],
+                             screenshot: image1.slice(image1.indexOf(",") + 1)},
                             gURLs[0].identifier[1],
-                            {url:gURLs[0].identifier[1], screenshot: gCanvas2.toDataURL()}
+                            {url:gURLs[0].identifier[2],
+                             screenshot: image2.slice(image2.indexOf(",") + 1)}
                         ];
-                        extra.image1 = gCanvas1.toDataURL();
-                        extra.image2 = gCanvas2.toDataURL();
+                        extra.image1 = image1;
+                        extra.image2 = image2;
                         message += (", max difference: " + extra.max_difference +
                                     ", number of differing pixels: " + differences);
                     } else {
                         extra.image1 = gCanvas1.toDataURL();
                     }
                 }
                 logger.testEnd(gURLs[0].identifier, output.s[0], output.s[1], message, null, extra);
 
--- a/testing/mozbase/mozlog/mozlog/formatters/tbplformatter.py
+++ b/testing/mozbase/mozlog/mozlog/formatters/tbplformatter.py
@@ -186,21 +186,21 @@ class TbplFormatter(BaseFormatter):
                 message += "\n%s" % data["stack"]
             if message and message[-1] == "\n":
                 message = message[:-1]
 
             extra = data.get("extra", {})
             if "reftest_screenshots" in extra:
                 screenshots = extra["reftest_screenshots"]
                 if len(screenshots) == 3:
-                     message += ("\nREFTEST   IMAGE 1 (TEST): %s\n"
-                                 "REFTEST   IMAGE 2 (REFERENCE): %s") % (screenshots[0]["screenshot"],
+                     message += ("\nREFTEST   IMAGE 1 (TEST): data:image/png;base64,%s\n"
+                                 "REFTEST   IMAGE 2 (REFERENCE): data:image/png;base64,%s") % (screenshots[0]["screenshot"],
                                                                          screenshots[2]["screenshot"])
                 elif len(screenshots) == 1:
-                    message += "\nREFTEST   IMAGE: %(image1)s" % screenshots[0]["screenshot"]
+                    message += "\nREFTEST   IMAGE: data:image/png;base64,%(image1)s" % screenshots[0]["screenshot"]
 
             failure_line = "TEST-UNEXPECTED-%s | %s | %s\n" % (
             data["status"], test_id, message)
 
             if data["expected"] not in ("PASS", "OK"):
                 expected_msg = "expected %s | " % data["expected"]
             else:
                 expected_msg = ""