From 6b61c0ba793a223d173ff7f976ac10cd4e1a205d Mon Sep 17 00:00:00 2001 From: Ojan Vafai Date: Wed, 7 Jan 2015 11:40:27 -0800 Subject: [PATCH] Make a reftest for the flights app. This way we get some broad pixel test coverage. Do this by dumping the png from the flights app, uploading it to google storage and then having the reference file load the uploaded file. This isn't a good long-term solution. Long-term we should dump paint commands (or some other textual representation) and/or make more targetted reftests that don't need pngs. As such, the process for doing this is painful and manual. If we decide we want to have pixel tests properly, we'll want to do something more automated obviously. Also, turn on the discard_transparency bool when encoding the pngs. Otherwise, the png is lossy and none of this works. R=esprehn@chromium.org Review URL: https://codereview.chromium.org/836363003 --- engine/src/flutter/HACKING.md | 24 +++++++++++++++++++ .../compositor/display_delegate_bitmap.cc | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/engine/src/flutter/HACKING.md b/engine/src/flutter/HACKING.md index b2c18c2dbf..94977af6a4 100644 --- a/engine/src/flutter/HACKING.md +++ b/engine/src/flutter/HACKING.md @@ -41,3 +41,27 @@ describe('My pretty test of my subject', function() { }); }); ``` + +Adding pixel tests +------------------ + +Sky does not have proper pixel tests. Instead we have only reftests. +If you want a pixel test, you need to dump the png from a reftest, +upload it to googlestorage and then put and pointing to the +uploaded file in the reference. + +1. Create your test (e.g. foo.sky). +2. Create an dummy reference file (foo-expected.sky). +3. Run the test (it will fail). +4. Copy the -actual.png file to googlestorage (see below). +5. Put an pointing to your newly uploaded png in the reference file. + +Copying the file to googlestorage: +$ sha1sum ../out/Debug/layout-test-results/framework/flights-app-pixels-actual.png +db0508cdfe69e996a93464050dc383f6480f1283 ../out/Debug/layout-test-results/framework/flights-app-pixels-actual.png +$ gsutil.py cp ../out/Debug/layout-test-results/framework/flights-app-pixels-actual.png gs://mojo/sky-pngs/db0508cdfe69e996a93464050dc383f6480f1283 + +Long-term, we should not have these tests at all and should just +dump paint commands. In the short-term, if we find we're doing this +a lot we should obviously automate this process, e.g. test_sky could +do all of this work, including spitting out the correct reference file. diff --git a/engine/src/flutter/compositor/display_delegate_bitmap.cc b/engine/src/flutter/compositor/display_delegate_bitmap.cc index 571eda1f53..c8ba553784 100644 --- a/engine/src/flutter/compositor/display_delegate_bitmap.cc +++ b/engine/src/flutter/compositor/display_delegate_bitmap.cc @@ -22,7 +22,7 @@ DisplayDelegate* DisplayDelegateBitmap::create(LayerClient* client) { } void DisplayDelegateBitmap::GetPixelsForTesting(std::vector* pixels) { - gfx::PNGCodec::EncodeBGRASkBitmap(bitmap_, false, pixels); + gfx::PNGCodec::EncodeBGRASkBitmap(bitmap_, true, pixels); } void DisplayDelegateBitmap::Paint(mojo::GaneshSurface& surface, const gfx::Rect& size) {