Bug 1452694 - Use TestRunnerActivity for geckoview mochitest/reftest; r=bc

This makes the changes necessary to use TestRunnerActivity when geckoview
is installed and requested, but we do not yet attempt to run any such
test tasks in automation.
This commit is contained in:
Geoff Brown 2018-04-10 13:26:11 -06:00
parent e947c0c1e9
commit 3680684f70
4 changed files with 23 additions and 15 deletions

View File

@ -247,7 +247,9 @@ class RemoteAutomation(Automation):
else:
args = args[:-1]
if 'geckoview' in app:
self.device.launch_geckoview_example(app, moz_env=env, extra_args=args, url=url)
activity = "TestRunnerActivity"
self.device.launch_activity(app, activity, e10s=True, moz_env=env,
extra_args=args, url=url)
else:
self.device.launch_fennec(app, moz_env=env, extra_args=args, url=url)

View File

@ -102,8 +102,9 @@ class GeckoviewTestRunner:
env["R_LOG_VERBOSE"] = "1"
env["R_LOG_LEVEL"] = "6"
env["R_LOG_DESTINATION"] = "stderr"
self.device.launch_geckoview_example("org.mozilla.geckoview_example",
extra_args=args, moz_env=env)
self.device.launch_activity("org.mozilla.geckoview_example",
"GeckoViewActivity",
extra_args=args, moz_env=env)
except Exception:
return (False, "Exception during %s startup" % self.appname)
return (True, "%s started" % self.appname)

View File

@ -449,17 +449,20 @@ class ADBAndroid(ADBDevice):
wait=wait, fail_if_running=fail_if_running,
timeout=timeout)
def launch_geckoview_example(self, app_name, intent="android.intent.action.Main",
moz_env=None, extra_args=None, url=None, e10s=False,
wait=True, fail_if_running=True, timeout=None):
"""Convenience method to launch geckoview_example on Android with various
debugging arguments
def launch_activity(self, app_name, activity_name=None,
intent="android.intent.action.Main",
moz_env=None, extra_args=None, url=None, e10s=False,
wait=True, fail_if_running=True, timeout=None):
"""Convenience method to launch an application on Android with various
debugging arguments; convenient for geckoview apps.
:param str app_name: Name of application (e.g.
`org.mozilla.geckoview_example`)
`org.mozilla.geckoview_example` or `org.mozilla.geckoview.test`)
:param str activity_name: Activity name, like `GeckoViewActivity`, or
`TestRunnerActivity`.
:param str intent: Intent to launch application.
:type moz_env: str or None
:param extra_args: Extra arguments to be parsed by fennec.
:param extra_args: Extra arguments to be parsed by the app.
:type extra_args: str or None
:param url: URL to open
:type url: str or None
@ -486,13 +489,13 @@ class ADBAndroid(ADBDevice):
for (env_count, (env_key, env_val)) in enumerate(moz_env.iteritems()):
extras["env" + str(env_count)] = env_key + "=" + env_val
# Additional command line arguments that geckoview_example will read and use (e.g.
# Additional command line arguments that the app will read and use (e.g.
# with a custom profile)
if extra_args:
extras['args'] = " ".join(extra_args)
extras['use_multiprocess'] = e10s
self.launch_application(app_name,
"%s.GeckoViewActivity" % app_name,
"%s.%s" % (app_name, activity_name),
intent, url=url, extras=extras,
wait=wait, fail_if_running=fail_if_running,
timeout=timeout)

View File

@ -379,9 +379,11 @@ class AndroidEmulatorTest(TestingMixin, EmulatorMixin, BaseScript, MozbaseMixin)
def _query_package_name(self):
if self.app_name is None:
# For convenience, assume geckoview_example when install target
# looks like geckoview.
if 'geckoview' in self.installer_path:
# For convenience, assume geckoview.test/geckoview_example when install
# target looks like geckoview.
if 'androidTest' in self.installer_path:
self.app_name = 'org.mozilla.geckoview.test'
elif 'geckoview' in self.installer_path:
self.app_name = 'org.mozilla.geckoview_example'
if self.app_name is None:
# Find appname from package-name.txt - assumes download-and-extract