blob: e6f20a14d8c46c5cf4ff1291ae8ed7ee27f9410b [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
from telemetry import decorators
from telemetry.page import page as page_module
from telemetry.testing import options_for_unittests
from telemetry.testing import page_test_test_case
from telemetry.util import wpr_modes
from measurements import smoothness
from page_sets import repaint_helpers
class TestRepaintPage(page_module.Page):
def __init__(self, page_set, base_dir):
super(TestRepaintPage, self).__init__('file://blank.html',
page_set, base_dir)
def RunPageInteractions(self, action_runner):
repaint_helpers.Repaint(action_runner)
class RepaintUnitTest(page_test_test_case.PageTestTestCase):
"""Smoke test for repaint measurement
Runs repaint measurement on a simple page and verifies
that all metrics were added to the results. The test is purely functional,
i.e. it only checks if the metrics are present and non-zero.
"""
def setUp(self):
self._options = options_for_unittests.GetCopy()
self._options.browser_options.wpr_mode = wpr_modes.WPR_OFF
# Previously this test was disabled on chromeos, see crbug.com/483212.
@unittest.skip("flaky") # crbug.com/715962
def testRepaint(self):
ps = self.CreateEmptyPageSet()
ps.AddStory(TestRepaintPage(ps, ps.base_dir))
measurement = smoothness.Repaint()
results = self.RunMeasurement(measurement, ps, options=self._options)
self.assertEquals(0, len(results.failures))
frame_times = results.FindAllPageSpecificValuesNamed('frame_times')
self.assertEquals(len(frame_times), 1)
self.assertGreater(frame_times[0].GetRepresentativeNumber(), 0)
mean_frame_time = results.FindAllPageSpecificValuesNamed('mean_frame_time')
self.assertEquals(len(mean_frame_time), 1)
self.assertGreater(mean_frame_time[0].GetRepresentativeNumber(), 0)
frame_time_discrepancy = results.FindAllPageSpecificValuesNamed(
'frame_time_discrepancy')
self.assertEquals(len(frame_time_discrepancy), 1)
self.assertGreater(frame_time_discrepancy[0].GetRepresentativeNumber(), 0)
percentage_smooth = results.FindAllPageSpecificValuesNamed(
'percentage_smooth')
self.assertEquals(len(percentage_smooth), 1)
self.assertGreaterEqual(percentage_smooth[0].GetRepresentativeNumber(), 0)
# Make sure that we don't have extra timeline based metrics that are not
# related to smoothness.
mainthread_jank = results.FindAllPageSpecificValuesNamed(
'responsive-total_big_jank_thread_time')
self.assertEquals(len(mainthread_jank), 0)
@decorators.Disabled('android')
def testCleanUpTrace(self):
self.TestTracingCleanedUp(smoothness.Repaint, self._options)