summaryrefslogtreecommitdiffstats
path: root/tools/perf/page_sets/key_hit_test_cases.py
blob: a0dd0ce123b6b24fa9af9f8382850f486ca75962 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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.

from telemetry.page import page_set as page_set_module

from page_sets import polymer

class PaperCalculatorHitTest(polymer.PolymerPage):

  def __init__(self, page_set):
    super(PaperCalculatorHitTest, self).__init__(
      # Generated from https://github.com/zqureshi/paper-calculator
      # vulcanize --inline --strip paper-calculator/demo.html
      url='file://key_hit_test_cases/paper-calculator-no-rendering.html',
      page_set=page_set, run_no_page_interactions=False)

    self.user_agent_type = 'mobile'

  def PerformPageInteractions(self, action_runner):
    # pay cost of selecting tap target only once
    action_runner.ExecuteJavaScript('''
        window.__tapTarget = document.querySelector(
            'body /deep/ #outerPanels'
        ).querySelector(
            '#standard'
        ).shadowRoot.querySelector(
            'paper-calculator-key[label="5"]'
        )''')
    action_runner.WaitForJavaScriptCondition(
        'window.__tapTarget != null')

    for _ in xrange(100):
        self.TapButton(action_runner)

  def TapButton(self, action_runner):
    with action_runner.CreateInteraction('Action_TapAction'):
      action_runner.TapElement(element_function='''window.__tapTarget''')


class KeyHitTestCasesPageSet(page_set_module.PageSet):

  def __init__(self):
    super(KeyHitTestCasesPageSet, self).__init__(
      user_agent_type='mobile')

    self.AddUserStory(PaperCalculatorHitTest(self))