# TEMPORARY overrides of
# src/third_party/WebKit/LayoutTests/platform/chromium/test_expectations.txt
# that are associated with changes to the Skia code.
#
# GUIDELINES:
# - This file should be empty most of the time.
# - Expectations should only be added TEMPORARILY, as a step towards
#   rebaselining layout test results.  If any one expectation remains in here
#   for more than a week or two, then we are probably doing something wrong.
# - Expectations from this file should NOT be rolled into any other
#   test_expectations file.  If there is a test that we expect to fail
#   indefinitely, then we should add that test to the roach motel that is
#   src/third_party/WebKit/LayoutTests/platform/chromium/test_expectations.txt
# - Tests listed in this file should NOT be rebaselined by WebKit Gardeners,
#   unless they have made arrangements with Skia developers.
#
# For more information, see https://bugs.webkit.org/show_bug.cgi?id=86749
# or email skia-dev@google.com .
#
# INSTRUCTIONS:
# If you are rolling Skia's DEPS within Chrome, and trybot results indicate
# that the DEPS roll would break some webkit layout_tests, please follow
# these steps:
#
# 1. Confirm that those layout_test failures are "reasonable"-- Are they
# actually improvements, not regressions?  Or maybe they are very minor
# differences that go along with a performance improvement?
# If not, please fix Skia rather than rolling in the version that will
# regress the webkit layout_tests.
#
# 2. File a bug to yourself to track the rebaselining of results caused by
# your Skia DEPS roll.
#
# 3. Add one or more lines to this file, in the same syntax used in the main
# test_expectations file, to mark those tests as expected-to-fail.
# Add this file to your DEPS roll CL.
#
# 4. Run your DEPS roll CL through the trybots again, and confirm your CL does
# not cause any layout tests to fail.  (If there are still failures as a
# result of your CL, you probably didn't add the test expectations correctly.)
#
# 5. Commit your DEPS roll CL, and keep an eye on the waterfall bots to make
# sure nothing goes red.
#
# 6. Make sure to rebaseline the layout tests as soon as possible!  The longer
# we leave overrides in this file, the harder it will be to rebaseline those
# tests (because other rendering changes might creep in).
#
# START OVERRIDES HERE

# END OVERRIDES HERE (this line ensures that the file is newline-terminated)
