From 9629178ee689bb5ceffe308c6a170442615ee770 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 --- HACKING.md | 24 +++++++++++++++++++ compositor/display_delegate_bitmap.cc | 2 +- .../framework/flights-app-pixels-expected.sky | 13 ++++++++++ tests/framework/flights-app-pixels.sky | 13 ++++++++++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests/framework/flights-app-pixels-expected.sky create mode 100644 tests/framework/flights-app-pixels.sky diff --git a/HACKING.md b/HACKING.md index b2c18c2dbf5..94977af6a46 100644 --- a/HACKING.md +++ b/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/compositor/display_delegate_bitmap.cc b/compositor/display_delegate_bitmap.cc index 571eda1f536..c8ba5537846 100644 --- a/compositor/display_delegate_bitmap.cc +++ b/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) { diff --git a/tests/framework/flights-app-pixels-expected.sky b/tests/framework/flights-app-pixels-expected.sky new file mode 100644 index 00000000000..dc092716016 --- /dev/null +++ b/tests/framework/flights-app-pixels-expected.sky @@ -0,0 +1,13 @@ + + + + + + + diff --git a/tests/framework/flights-app-pixels.sky b/tests/framework/flights-app-pixels.sky new file mode 100644 index 00000000000..ff06a09ebe7 --- /dev/null +++ b/tests/framework/flights-app-pixels.sky @@ -0,0 +1,13 @@ + + + + +