Home | History | Annotate | Download | only in page_sets
      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 # pylint: disable=W0401,W0614
      5 from telemetry.page.actions.all_page_actions import *
      6 from telemetry.page import page as page_module
      7 from telemetry.page import page_set as page_set_module
      8 
      9 class PolymerPage(page_module.Page):
     10 
     11   def __init__(self, url, page_set):
     12     super(PolymerPage, self).__init__(
     13       url=url,
     14       page_set=page_set)
     15     self.archive_data_file = "data/polymer.json"
     16     self.script_to_evaluate_on_commit = '''
     17       document.addEventListener("polymer-ready", function() {
     18         window.__polymer_ready = true;
     19       });
     20     '''
     21 
     22   def RunNavigateSteps(self, action_runner):
     23     action_runner.NavigateToPage(self)
     24     action_runner.WaitForJavaScriptCondition(
     25         'window.__polymer_ready')
     26 
     27 
     28 class PolymerCalculatorPage(PolymerPage):
     29 
     30   def __init__(self, page_set):
     31     super(PolymerCalculatorPage, self).__init__(
     32       url='http://localhost:8000/components/paper-calculator/demo.html',
     33       page_set=page_set)
     34 
     35   def RunSmoothness(self, action_runner):
     36     self.TapButton(action_runner)
     37     self.SlidePanel(action_runner)
     38 
     39   def TapButton(self, action_runner):
     40     interaction = action_runner.BeginInteraction(
     41         'Action_TapAction', is_smooth=True)
     42     action_runner.TapElement(element_function='''
     43         document.querySelector(
     44             'body /deep/ #outerPanels'
     45         ).querySelector(
     46             '#standard'
     47         ).shadowRoot.querySelector(
     48             'paper-calculator-key[label="5"]'
     49         )''')
     50     action_runner.Wait(2)
     51     interaction.End()
     52 
     53   def SlidePanel(self, action_runner):
     54     interaction = action_runner.BeginInteraction(
     55         'Action_SwipeAction', is_smooth=True)
     56     action_runner.SwipeElement(
     57         left_start_ratio=0.1, top_start_ratio=0.2,
     58         direction='left', distance=300, speed=5000,
     59         element_function='''
     60             document.querySelector(
     61               'body /deep/ #outerPanels'
     62             ).querySelector(
     63               '#advanced'
     64             ).shadowRoot.querySelector(
     65               '.handle-bar'
     66             )''')
     67     action_runner.WaitForJavaScriptCondition('''
     68         var outer = document.querySelector("body /deep/ #outerPanels");
     69         outer.opened || outer.wideMode;''')
     70     interaction.End()
     71 
     72 
     73 class PolymerShadowPage(PolymerPage):
     74 
     75   def __init__(self, page_set):
     76     super(PolymerShadowPage, self).__init__(
     77       url='http://localhost:8000/components/paper-shadow/demo.html',
     78       page_set=page_set)
     79     self.archive_data_file = 'data/polymer.json'
     80 
     81   def RunSmoothness(self, action_runner):
     82     action_runner.ExecuteJavaScript(
     83         "document.getElementById('fab').scrollIntoView()")
     84     action_runner.Wait(5)
     85     self.AnimateShadow(action_runner, 'card')
     86     self.AnimateShadow(action_runner, 'fab')
     87 
     88   def AnimateShadow(self, action_runner, eid):
     89     for i in range(1, 6):
     90       action_runner.ExecuteJavaScript(
     91           'document.getElementById("{0}").z = {1}'.format(eid, i))
     92       action_runner.Wait(1)
     93 
     94 
     95 class PolymerPageSet(page_set_module.PageSet):
     96 
     97   def __init__(self):
     98     super(PolymerPageSet, self).__init__(
     99       user_agent_type='mobile',
    100       archive_data_file='data/polymer.json',
    101       bucket=page_set_module.INTERNAL_BUCKET)
    102 
    103     self.AddPage(PolymerCalculatorPage(self))
    104     self.AddPage(PolymerShadowPage(self))
    105