1import ./make-test-python.nix (
2 { lib, ... }:
3 {
4 name = "herbstluftwm";
5
6 meta = {
7 maintainers = with lib.maintainers; [ thibautmarty ];
8 };
9
10 nodes.machine =
11 { pkgs, lib, ... }:
12 {
13 imports = [
14 ./common/x11.nix
15 ./common/user-account.nix
16 ];
17 test-support.displayManager.auto.user = "alice";
18 services.displayManager.defaultSession = lib.mkForce "none+herbstluftwm";
19 services.xserver.windowManager.herbstluftwm.enable = true;
20 environment.systemPackages = [ pkgs.dzen2 ]; # needed for upstream provided panel
21 };
22
23 testScript = ''
24 with subtest("ensure x starts"):
25 machine.wait_for_x()
26 machine.wait_for_file("/home/alice/.Xauthority")
27 machine.succeed("xauth merge ~alice/.Xauthority")
28
29 with subtest("ensure client is available"):
30 machine.succeed("herbstclient --version")
31
32 with subtest("ensure keybindings are set"):
33 machine.wait_until_succeeds("herbstclient list_keybinds | grep xterm")
34
35 with subtest("ensure panel starts"):
36 machine.wait_for_window("dzen title")
37
38 with subtest("ensure we can open a new terminal"):
39 machine.send_key("alt-ret")
40 machine.wait_for_window(r"alice.*?machine")
41 machine.sleep(2)
42 machine.screenshot("terminal")
43 '';
44 }
45)