Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: experimental/telemetry_mini/android_go_stories.py

Issue 2996133002: [experimental] Add Flipkart/Instagram story (Closed)
Patch Set: complete work Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | experimental/telemetry_mini/telemetry_mini.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2017 The Chromium Authors. All rights reserved. 2 # Copyright 2017 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import argparse 6 import argparse
7 import logging 7 import logging
8 import os 8 import os
9 import sys 9 import sys
10 import time 10 import time
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 available_browsers.remove(browser.PACKAGE_NAME) 104 available_browsers.remove(browser.PACKAGE_NAME)
105 assert not available_browsers, ( 105 assert not available_browsers, (
106 'Other browsers may intefere with the test: %s' % available_browsers) 106 'Other browsers may intefere with the test: %s' % available_browsers)
107 return browser 107 return browser
108 108
109 109
110 class TwitterApp(telemetry_mini.AndroidApp): 110 class TwitterApp(telemetry_mini.AndroidApp):
111 PACKAGE_NAME = 'com.twitter.android' 111 PACKAGE_NAME = 'com.twitter.android'
112 112
113 113
114 class InstagramApp(telemetry_mini.AndroidApp):
115 PACKAGE_NAME = 'com.instagram.android'
116
117
114 class TwitterFlipkartStory(telemetry_mini.UserStory): 118 class TwitterFlipkartStory(telemetry_mini.UserStory):
115 FLIPKART_TWITTER_LINK = [ 119 FLIPKART_TWITTER_LINK = [
116 ('package', 'com.twitter.android'), 120 ('package', 'com.twitter.android'),
117 ('class', 'android.widget.TextView'), 121 ('class', 'android.widget.TextView'),
118 ('text', 'flipkart.com') 122 ('text', 'flipkart.com')
119 ] 123 ]
120 124
121 def __init__(self, *args, **kwargs): 125 def __init__(self, *args, **kwargs):
122 super(TwitterFlipkartStory, self).__init__(*args, **kwargs) 126 super(TwitterFlipkartStory, self).__init__(*args, **kwargs)
123 self.watcher = ProcessWatcher(self.device) 127 self.watcher = ProcessWatcher(self.device)
124 self.twitter = TwitterApp(self.device) 128 self.twitter = TwitterApp(self.device)
125 129
126 def GetExtraStoryApps(self): 130 def RunPrepareSteps(self):
127 return (self.twitter,) 131 self.twitter.ForceStop()
128 132
129 def RunStorySteps(self): 133 def RunStorySteps(self):
130 # Activity will launch Twitter app on Flipkart profile. 134 # Activity will launch Twitter app on Flipkart profile.
131 self.actions.StartActivity('https://twitter.com/flipkart') 135 self.actions.StartActivity('https://twitter.com/flipkart')
132 self.watcher.StartWatching(self.twitter) 136 self.watcher.StartWatching(self.twitter)
133 137
134 # Tapping on Flikpart link on Twitter app will launch Chrome. 138 # Tapping on Flikpart link on Twitter app will launch Chrome.
135 self.actions.TapUiElement(self.FLIPKART_TWITTER_LINK) 139 self.actions.TapUiElement(self.FLIPKART_TWITTER_LINK)
136 self.watcher.StartWatching(self.browser) 140 self.watcher.StartWatching(self.browser)
137 time.sleep(10) # TODO: Replace with wait until page loaded. 141 time.sleep(10) # TODO: Replace with wait until page loaded.
138 self.actions.SwipeUp(repeat=3) 142 self.actions.SwipeUp(repeat=3)
139 143
140 # Return to Twitter app. 144 # Return to Twitter app.
141 self.actions.GoBack() 145 self.actions.GoBack()
142 self.watcher.AssertAllAlive() 146 self.watcher.AssertAllAlive()
143 147
148 def RunCleanupSteps(self):
149 self.twitter.ForceStop()
150
151
152 class FlipkartInstagramStory(telemetry_mini.UserStory):
153 def __init__(self, *args, **kwargs):
154 super(FlipkartInstagramStory, self).__init__(*args, **kwargs)
155 self.watcher = ProcessWatcher(self.device)
156 self.instagram = InstagramApp(self.device)
157
158 def RunPrepareSteps(self):
159 self.instagram.ForceStop()
160 self.actions.ClearRecentApps()
161
162 def RunStorySteps(self):
163 # Tap on home screen shortcut to open Flipkart PWA.
164 self.actions.TapHomeScreenShortcut('Flipkart Lite')
165 self.watcher.StartWatching(self.browser)
166 time.sleep(5) # TODO: Replace with wait until page loaded.
167 self.actions.SwipeUp(repeat=2)
168
169 # Go back home, then launch Instagram app.
170 self.actions.GoHome()
171 self.actions.TapHomeScreenShortcut('Instagram')
172 self.watcher.StartWatching(self.instagram)
173 self.actions.SwipeUp(repeat=5)
174
175 # Go to app switcher and return to Flipkart PWA.
176 self.actions.GoAppSwitcher()
177 self.actions.TapAppSwitcherTitle('Flipkart Lite')
178 self.actions.SwipeDown()
179
180 # Go back home, then open Cricbuzz shortcut.
181 self.actions.GoHome()
182 self.actions.TapHomeScreenShortcut('Cricbuzz')
183 time.sleep(5) # TODO: Replace with wait until page loaded.
184 self.actions.SwipeUp()
185 self.watcher.AssertAllAlive()
186
187 def RunCleanupSteps(self):
188 self.instagram.ForceStop()
189
144 190
145 def main(): 191 def main():
146 browser_names = sorted(BROWSERS) 192 browser_names = sorted(BROWSERS)
147 default_browser = 'android-chrome' 193 default_browser = 'android-chrome'
148 parser = argparse.ArgumentParser() 194 parser = argparse.ArgumentParser()
149 parser.add_argument('--serial', 195 parser.add_argument('--serial',
150 help='device serial on which to run user stories' 196 help='device serial on which to run user stories'
151 ' (defaults to first device found)') 197 ' (defaults to first device found)')
152 parser.add_argument('--adb-bin', default='adb', metavar='PATH', 198 parser.add_argument('--adb-bin', default='adb', metavar='PATH',
153 help='path to adb binary to use (default: %(default)s)') 199 help='path to adb binary to use (default: %(default)s)')
(...skipping 29 matching lines...) Expand all
183 else: 229 else:
184 device = telemetry_mini.AdbMini(args.serial) 230 device = telemetry_mini.AdbMini(args.serial)
185 231
186 # Some operations may require a rooted device. 232 # Some operations may require a rooted device.
187 device.RunCommand('root') 233 device.RunCommand('root')
188 device.RunCommand('wait-for-device') 234 device.RunCommand('wait-for-device')
189 235
190 browser = EnsureSingleBrowser(device, args.browser, args.force_install) 236 browser = EnsureSingleBrowser(device, args.browser, args.force_install)
191 browser.SetDevToolsLocalPort(args.port) 237 browser.SetDevToolsLocalPort(args.port)
192 238
193 story = TwitterFlipkartStory(browser) 239 story = FlipkartInstagramStory(browser)
194 story.Run(BROWSER_FLAGS, TRACE_CONFIG, 'trace.json') 240 story.Run(BROWSER_FLAGS, TRACE_CONFIG, 'trace.json')
195 241
196 242
197 if __name__ == '__main__': 243 if __name__ == '__main__':
198 sys.exit(main()) 244 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | experimental/telemetry_mini/telemetry_mini.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698