blob: e1c3993afe4decc60ed83b25b7a0607e2399844d [file] [log] [blame]
# Copyright 2018 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.
from telemetry.page import page as page_module
class PressStory(page_module.Page):
"""Base class for Press stories.
Override ExecuteTest to execute javascript on the page and
ParseTestResults to obtain javascript metrics from page.
Example Implementation:
class FooPressStory:
URL = 'http://foo'
def ExecuteTest(self, action_runner):
//Execute some javascript
def ParseTestResults(self, action_runner):
some_value = action_runner.EvaluateJavascript("some javascript")
self.AddJavascriptMetricValue(some_value)
"""
URL = None
DETERMINISTIC_JS = False
NAME = None
def __init__(self, ps):
super(PressStory, self).__init__(
self.URL, ps,
base_dir=ps.base_dir,
make_javascript_deterministic=self.DETERMINISTIC_JS,
name=self.NAME if self.NAME else self.URL)
self._values = []
self._summary_values = []
self._histogram_values = []
def GetJavascriptMetricValues(self):
return self._values
def AddJavascriptMetricValue(self, value):
self._values.append(value)
def GetJavascriptMetricSummaryValues(self):
return self._summary_values
def AddJavascriptMetricSummaryValue(self, value):
self._summary_values.append(value)
def GetJavascriptMetricHistograms(self):
return self._histogram_values
def AddJavascriptMetricHistogram(self, value):
self._histogram_values.append(value)
def ExecuteTest(self, action_runner):
pass
def ParseTestResults(self, action_runner):
pass
def RunPageInteractions(self, action_runner):
self.ExecuteTest(action_runner)
self.ParseTestResults(action_runner)