1# Copyright 2014 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5from measurements import repaint 6from telemetry import test 7from telemetry.core import wpr_modes 8from telemetry.page import page_measurement_unittest_base 9from telemetry.page import page as page_module 10# pylint: disable=W0401,W0614 11from telemetry.page.actions.all_page_actions import * 12from telemetry.unittest import options_for_unittests 13 14 15class TestRepaintPage(page_module.Page): 16 def __init__(self, page_set, base_dir): 17 super(TestRepaintPage, self).__init__('file://blank.html', 18 page_set, base_dir) 19 20 def RunRepaint(self, action_runner): 21 action_runner.RunAction(RepaintContinuouslyAction({'seconds': 2})) 22 23 24class RepaintUnitTest( 25 page_measurement_unittest_base.PageMeasurementUnitTestBase): 26 """Smoke test for repaint measurement 27 28 Runs repaint measurement on a simple page and verifies 29 that all metrics were added to the results. The test is purely functional, 30 i.e. it only checks if the metrics are present and non-zero. 31 """ 32 33 def setUp(self): 34 self._options = options_for_unittests.GetCopy() 35 self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF 36 37 @test.Disabled # http://crbug.com/368767 38 def testRepaint(self): 39 ps = self.CreateEmptyPageSet() 40 ps.AddPage(TestRepaintPage(ps, ps.base_dir)) 41 measurement = repaint.Repaint() 42 results = self.RunMeasurement(measurement, ps, options=self._options) 43 self.assertEquals(0, len(results.failures)) 44 45 frame_times = results.FindAllPageSpecificValuesNamed('frame_times') 46 self.assertEquals(len(frame_times), 1) 47 self.assertGreater(frame_times[0].GetRepresentativeNumber(), 0) 48 49 mean_frame_time = results.FindAllPageSpecificValuesNamed('mean_frame_time') 50 self.assertEquals(len(mean_frame_time), 1) 51 self.assertGreater(mean_frame_time[0].GetRepresentativeNumber(), 0) 52 53 jank = results.FindAllPageSpecificValuesNamed('jank') 54 self.assertEquals(len(jank), 1) 55 self.assertGreater(jank[0].GetRepresentativeNumber(), 0) 56 57 mostly_smooth = results.FindAllPageSpecificValuesNamed('mostly_smooth') 58 self.assertEquals(len(mostly_smooth), 1) 59 self.assertGreaterEqual(mostly_smooth[0].GetRepresentativeNumber(), 0) 60 61 @test.Disabled('android') 62 def testCleanUpTrace(self): 63 self.TestTracingCleanedUp(repaint.Repaint, self._options) 64