monado/tests/android
2024-08-23 15:05:07 +00:00
..
.gitignore scripts: pytest-based Android device testing 2024-08-23 15:05:07 +00:00
conftest.py scripts: pytest-based Android device testing 2024-08-23 15:05:07 +00:00
README.md scripts: pytest-based Android device testing 2024-08-23 15:05:07 +00:00
test_app_switch.py scripts: pytest-based Android device testing 2024-08-23 15:05:07 +00:00
test_single_app_reliability.py scripts: pytest-based Android device testing 2024-08-23 15:05:07 +00:00

Android device tests

This directory contains some tests to run on an Android device over ADB, primarily to verify some lifecycle handling right now.

It uses pytest as the test runner, which is more readable, maintainable, and usable than the earlier bash scripts, and gives the option for e.g. junit-style output for CI usage.

The actual tests are in the test_*.py files, while conftest.py configures the pytest framework, as well as provides constants and fixtures for use in the tests themselves.

Preconditions

  • Have adb in the path, and only the device under test connected. (or, have environment variables set appropriately so that adb shell getprop ro.product.vendor.device shows you the expected device.)
  • Have Python and pytest installed, either system-wide or in a venv. The version of pytest in Debian Bookworm is suitable.
  • Have built and installed the "outOfProcessDebug" build of Monado. (./gradlew installOOPD in root dir)
  • Have set the out-of-process runtime as active in the OpenXR Runtime Broker (if applicable).
  • Have installed both Vulkan and OpenGL ES versions of the hello_xr sample app from Khronos. (Binaries from a release are fine.)
  • If you want the tests to pass, turn on "Draw over other apps" -- but this is actually a bug to require this.

Instructions

Change your current working directory to this one. (Otherwise the extra argument you need to enable the ADB tests will not be recognized by pytest.)

cd tests/android/

Run the following command, or one based on it:

pytest -v --adb

Or, if you want junit-style output, add a variation on these two args: --junit-xml=android-tests.xml -o junit_family=xunit1 for an overall command like:

pytest -v --adb --junit-xml=android-tests.xml -o junit_family=xunit1

Another useful options is -k which can be followed by a pattern used to selecet a subset of tests to run. Handy if you only want to run one or two tests.