Add tests to validate scroll behavior on BT mouse

Certain BT mice (such as Microsoft Surface Precision mouse) had an issue
where scroll behavior was unpredictable on mouse wakeup. Add two tests
to validate the fix to this behavior:
- jerky_scroll ensures that slow, intermittent scrolling (which
initially triggered the bad behavior) would give the amount of scroll
- fast_scroll ensures that the fix doesn't have a negative impact when
the user is trying to scroll rapidly

TEST=Ensure all current and new touchtests pass (src/platform/touchpad-tests)

Cq-Depend: chromium:2195473, chromium:2197189
Change-Id: I736ebd912b812fdf6eecbdb8b66aa1580991bc15
Reviewed-by: Harry Cutts <>
Reviewed-by: Jora Jacobi <>
Reviewed-by: Sean O'Brien <>
Tested-by: Jora Jacobi <>
Commit-Queue: Jora Jacobi <>
8 files changed
tree: 7a0ac90ce1d88bf661f0dfc6ad457e10e87c6b96
  1. .gitignore
  2. Makefile
  5. framework/
  6. tests/
  7. touchtests
  8. touchtests.template

Touch tests


This repository contains automated tests for Chromium OS's Gestures library. Each test has a log of evdev events which are replayed, a properties file containing gesture properties to set while the Gestures library runs, and a Python function which verifies the output and returns a test score.

Setting up

Assuming that you've followed the developer guide, simply run the following inside your chroot:

$ cd ~/trunk/src/platform/touchpad-tests
$ sudo make setup-in-place

Running tests

To run all tests, simply run touchtests. To run one or more specific tests, you can pass a test name or a glob:

$ touchtests atlas-1.0/fat-thumb-fail
$ touchtests atlas-1.0/palm-while-typing*

Each test will return a status, with the following meanings:

  • success: the test succeeded, with the given score out of 1.
  • failure: the test failed.
  • error: an error occurred while running the test, so the behavior of the gestures library couldn't be evaluated.
  • incomplete: (baseline tests only) the evdev log for this platform hasn't been created.

Checking for regressions

The --out (or -o) switch creates a report file that future runs can be compared against with the --ref (or -r) switch:

$ touchtests --out baseline.json
# (cause some regressions)
$ touchtests --ref baseline.json

The output table will contain a delta column that indicates any regressions or improvements, and an error message will be shown if regressions exist.