Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / tools / perf / page_sets / gmail_compose_discard.py
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
5 import re
6
7 from telemetry.page import page as page_module
8 from telemetry.page import page_set as page_set_module
9
10
11 def _CreateXpathFunction(xpath):
12   return ('document.evaluate("%s",'
13                              'document,'
14                              'null,'
15                              'XPathResult.FIRST_ORDERED_NODE_TYPE,'
16                              'null)'
17           '.singleNodeValue' % re.escape(xpath))
18
19
20 class GmailComposeDiscardPage(page_module.Page):
21
22   """ Why: Compose and discard a new email """
23
24   def __init__(self, page_set):
25     super(GmailComposeDiscardPage, self).__init__(
26       url='https://mail.google.com/mail/',
27       page_set=page_set)
28     self.credentials_path = 'data/credentials.json'
29     self.credentials = 'google'
30     self.user_agent_type = 'desktop'
31
32   def RunNavigateSteps(self, action_runner):
33     action_runner.NavigateToPage(self)
34     action_runner.WaitForJavaScriptCondition(
35         'window.gmonkey !== undefined &&'
36         'document.getElementById("gb") !== null')
37
38   def ComposeClick(self, action_runner):
39     action_runner.ExecuteJavaScript('''
40       var button=document.evaluate('//div[text()="COMPOSE"]',
41           document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null)
42           .singleNodeValue;
43       var mousedownevent=new MouseEvent('mousedown',true,true,window,0,0,0,0,0,
44         false,false,false,false,0,null);
45       var mouseupevent=new MouseEvent('mouseup',true,true,window,0,0,0,0,0,
46         false,false,false,false,0,null);
47       button.dispatchEvent(mousedownevent);
48       button.dispatchEvent(mouseupevent);''')
49
50   def RunEndure(self, action_runner):
51     action_runner.WaitForElement(
52         element_function=_CreateXpathFunction('//div[text()="COMPOSE"]'))
53     self.ComposeClick(action_runner)
54     action_runner.Wait(1)
55     action_runner.WaitForElement(
56         'div[class~="oh"][data-tooltip="Discard draft"]')
57     action_runner.ClickElement('div[class~="oh"][data-tooltip="Discard draft"]')
58     action_runner.Wait(1)
59
60
61 class GmailComposeDiscardPageSet(page_set_module.PageSet):
62
63   """
64   Description: Gmail endure test: compose and discard an email.
65   """
66
67   def __init__(self):
68     super(GmailComposeDiscardPageSet, self).__init__(
69       credentials_path='data/credentials.json',
70       user_agent_type='desktop')
71
72     self.AddPage(GmailComposeDiscardPage(self))