| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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()) |
| OLD | NEW |