polymer.py revision cedac228d2dd51db4b79ea1e72c7f249408ee061
15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu# Copyright 2014 The Chromium Authors. All rights reserved.
25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu# Use of this source code is governed by a BSD-style license that can be
35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu# found in the LICENSE file.
45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu# pylint: disable=W0401,W0614
55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liufrom telemetry.page.actions.all_page_actions import *
65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liufrom telemetry.page import page as page_module
75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liufrom telemetry.page import page_set as page_set_module
85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class PolymerPage(page_module.Page):
105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  def __init__(self, url, page_set):
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    super(PolymerPage, self).__init__(
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      url=url,
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      page_set=page_set)
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    self.archive_data_file = "data/polymer.json"
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    self.script_to_evaluate_on_commit = '''
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      document.addEventListener("polymer-ready", function() {
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        window.__polymer_ready = true;
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      });
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    '''
215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  def RunNavigateSteps(self, action_runner):
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    action_runner.NavigateToPage(self)
245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    action_runner.RunAction(WaitAction(
25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      { 'javascript': "window.__polymer_ready" }))
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class PolymerCalculatorPage(PolymerPage):
29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  def __init__(self, page_set):
31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    super(PolymerCalculatorPage, self).__init__(
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      url='http://localhost:8000/components/paper-calculator/demo.html',
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      page_set=page_set)
345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  def RunSmoothness(self, action_runner):
365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    self.TapButton(action_runner)
375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    self.SlidePanel(action_runner)
385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  def TapButton(self, action_runner):
405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    action_runner.RunAction(TapAction(
415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      {
425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        'element_function': '''
435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu          function(callback) {
445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu            callback(
455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu              document.querySelector(
465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                'body /deep/ #outerPanels'
475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu              ).querySelector(
485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                '#standard'
495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu              ).shadowRoot.querySelector(
505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                'paper-calculator-key[label="5"]'
515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu              )
525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu            );
535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu          }''',
545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        'wait_after': { 'seconds': 2 }
555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      }))
565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  def SlidePanel(self, action_runner):
585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    action_runner.RunAction(SwipeAction(
595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      {
605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        'left_start_percentage': 0.1,
615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        'distance': 300,
625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        'direction': 'left',
635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        'wait_after': {
645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu          'javascript': '''
65010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)            var outer = document.querySelector("body /deep/ #outerPanels");
66010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)            outer.opened || outer.wideMode;
675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu          '''
685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        },
695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        'top_start_percentage': 0.2,
705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        'element_function': '''
715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu          function(callback) {
725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu            callback(
735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu              document.querySelector(
745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                'body /deep/ #outerPanels'
755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu              ).querySelector(
765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                '#advanced'
775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu              ).shadowRoot.querySelector(
785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu                '.handle-bar'
795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu              )
805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu            );
815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu          }''',
825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu        'speed': 5000
835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      }))
845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
86010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)class PolymerShadowPage(PolymerPage):
87010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
88010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  def __init__(self, page_set):
89010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    super(PolymerShadowPage, self).__init__(
90010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      url='http://localhost:8000/components/paper-shadow/demo.html',
91010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      page_set=page_set)
92010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    self.archive_data_file = 'data/polymer.json'
93010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
94010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  def RunSmoothness(self, action_runner):
95010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    action_runner.RunAction(JavascriptAction(
96010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      {
97010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        'expression': "document.getElementById('fab').scrollIntoView()"
98010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      }))
99010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    action_runner.RunAction(WaitAction(
100010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      {
101010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        'seconds': 5
102010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      }))
103010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    self.AnimateShadow(action_runner, 'card')
104010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    self.AnimateShadow(action_runner, 'fab')
105010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
106010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  def AnimateShadow(self, action_runner, eid):
107010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    for i in range(1, 6):
108010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      action_runner.RunAction(JavascriptAction(
109010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        {
110010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)          'expression': '''
111010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)            document.getElementById("{0}").z = {1}
112010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)          '''.format(eid, i)
113010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        }))
114010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      action_runner.RunAction(WaitAction(
115010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        {
116010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)          'seconds': 1
117010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)        }))
118010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
119010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
1205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass PolymerPageSet(page_set_module.PageSet):
1215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
1225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  def __init__(self):
1235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    super(PolymerPageSet, self).__init__(
1245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      user_agent_type='mobile',
1255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      archive_data_file='data/polymer.json')
1265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
1275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    self.AddPage(PolymerCalculatorPage(self))
128010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    self.AddPage(PolymerShadowPage(self))
129