Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add some support for WPT tests in an Android emulator through WebDriver #21213

Merged
merged 15 commits into from Jul 21, 2018
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Add ./mach test-wpt-android

  • Loading branch information
SimonSapin committed Jul 20, 2018
commit 45b710b7f0ceef09e26f968fed87bc5af1845063
@@ -367,6 +367,21 @@ def test_wpt(self, **kwargs):
else:
return ret

@Command('test-wpt-android',
description='Run the web platform test suite in an Android emulator',
category='testing',
parser=create_parser_wpt)
def test_wpt_android(self, release=False, dev=False, binary_args=None, **kwargs):
kwargs.update(
release=release,
dev=dev,
product="servodriver",
processes=1,
binary_args=self.in_android_emulator(release, dev) + (binary_args or []),
binary=sys.executable,
)
return self._test_wpt(**kwargs)

def _test_wpt(self, **kwargs):
hosts_file_path = path.join(self.context.topdir, 'tests', 'wpt', 'hosts')
os.environ["hosts_file_path"] = hosts_file_path
@@ -559,28 +574,15 @@ def filter_intermittents(self, summary, log_filteredsummary, log_intermittents,
@CommandArgument('--dev', '-d', action='store_true',
help='Run the dev build')
def test_android_startup(self, release, dev):
if (release and dev) or not (release or dev):
print("Please specify one of --dev or --release.")
return 1

avd = "servo-x86"
target = "i686-linux-android"
print("Assuming --target " + target)

env = self.build_env(target=target)
assert self.handle_android_target(target)
binary_path = self.get_binary_path(release, dev, android=True)
apk = binary_path + ".apk"

html = """
<script>
console.log("JavaScript is running!")
</script>
"""
url = "data:text/html;base64," + html.encode("base64").replace("\n", "")
py = path.join(self.context.topdir, "etc", "run_in_headless_android_emulator.py")
args = [sys.executable, py, avd, apk, url]
process = subprocess.Popen(args, stdout=subprocess.PIPE, env=env)
args = self.in_android_emulator(release, dev)
args = [sys.executable] + args + [url]
process = subprocess.Popen(args, stdout=subprocess.PIPE)
try:
while 1:
line = process.stdout.readline()
@@ -593,6 +595,24 @@ def test_android_startup(self, release, dev):
finally:
process.terminate()

def in_android_emulator(self, release, dev):
if (release and dev) or not (release or dev):
print("Please specify one of --dev or --release.")
sys.exit(1)

avd = "servo-x86"
target = "i686-linux-android"
print("Assuming --target " + target)

env = self.build_env(target=target)
os.environ["PATH"] = env["PATH"]
assert self.handle_android_target(target)
binary_path = self.get_binary_path(release, dev, android=True)
apk = binary_path + ".apk"

py = path.join(self.context.topdir, "etc", "run_in_headless_android_emulator.py")
return [py, avd, apk]

@Command('test-jquery',
description='Run the jQuery test suite',
category='testing')
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.