summaryrefslogtreecommitdiffstats
path: root/taskcluster/android_taskgraph/transforms/ui_tests.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--taskcluster/android_taskgraph/transforms/ui_tests.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/taskcluster/android_taskgraph/transforms/ui_tests.py b/taskcluster/android_taskgraph/transforms/ui_tests.py
new file mode 100644
index 0000000000..0e447b76d4
--- /dev/null
+++ b/taskcluster/android_taskgraph/transforms/ui_tests.py
@@ -0,0 +1,65 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from taskgraph.transforms.base import TransformSequence
+
+transforms = TransformSequence()
+
+
+_ANDROID_TASK_NAME_PREFIX = "android-"
+
+
+@transforms.add
+def set_component_attribute(config, tasks):
+ for task in tasks:
+ component_name = task.pop("component", None)
+ if not component_name:
+ task_name = task["name"]
+ if task_name.startswith(_ANDROID_TASK_NAME_PREFIX):
+ component_name = task_name[len(_ANDROID_TASK_NAME_PREFIX) :]
+ else:
+ raise NotImplementedError(
+ f"Cannot determine component name from task {task_name}"
+ )
+
+ attributes = task.setdefault("attributes", {})
+ attributes["component"] = component_name
+
+ yield task
+
+
+@transforms.add
+def define_ui_test_command_line(config, tasks):
+ for task in tasks:
+ run = task.setdefault("run", {})
+ post_gradlew = run.setdefault("post-gradlew", [])
+ post_gradlew.append(
+ [
+ "automation/taskcluster/androidTest/ui-test.sh",
+ task["attributes"]["component"],
+ "arm",
+ "1",
+ ]
+ )
+
+ yield task
+
+
+@transforms.add
+def define_treeherder_symbol(config, tasks):
+ for task in tasks:
+ treeherder = task.setdefault("treeherder")
+ treeherder.setdefault("symbol", f"{task['attributes']['component']}(unit)")
+
+ yield task
+
+
+@transforms.add
+def define_description(config, tasks):
+ for task in tasks:
+ task.setdefault(
+ "description",
+ f"Run unit/ui tests on device for {task['attributes']['component']}",
+ )
+ yield task