I recently created a test for digicam photo import for Shotwell (using autopilot and umockdev), and made that run as an autopkgtest. It occurred to me that this might be interesting for other desktop applications as well.
The community QA team has written some autopkgtests for desktop applications such as evince, nautilus, or Firefox. We run them regularly in Jenkins on real hardware in a full desktop environment, so that they can use the full desktop integration (3D, indicators, D-BUS services, etc). But of course for those the application already needs to be in Ubuntu.
If you only want to test functionality from the application itself and don’t need 3D, a proper window manager, etc., you can also call your autopilot tests from autopkgtest with a wrapper script like this:
#!/bin/sh set -e # start X (Xvfb :5 >/dev/null 2>&1 &) XVFB_PID=$! export DISPLAY=:5 # start local session D-BUS eval `dbus-launch` trap "kill $DBUS_SESSION_BUS_PID $XVFB_PID" 0 TERM QUIT INT export DBUS_SESSION_BUS_ADDRESS export XAUTHORITY=/dev/null # change to the directory where your autopilot tests live, and run them cd `dirname $0` autopilot run autopilot_tests
This will set up the bare minimum: Xvfb and a session D-BUS, and then run your autopilot tests. Your
debian/tests/control should have
Depends: yourapp, xvfb, dbus-x11, autopilot-desktop, libautopilot-gtk for this to work. (Note: I didn’t manage to get this running with
xvfb-run; any hints to how to simplify this appreciated, but please test that it actually works.)
Please note that this does not replace the “run in full desktop session” tests I mentioned earlier, but it’s a nice addition to check that your package has correct dependencies and to automatically block new libraries/dependencies which break your package from entering Ubuntu.