summaryrefslogtreecommitdiffstats
path: root/nixos/tests/i3wm.nix
blob: eb897573deb5caae7d4f5c3da2bb0d81bb9a77b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{ pkgs, ... }:
{
  name = "i3wm";
  meta = with pkgs.lib.maintainers; {
    maintainers = [ aszlig ];
  };

  nodes.machine =
    { lib, ... }:
    {
      imports = [
        ./common/x11.nix
        ./common/user-account.nix
      ];
      test-support.displayManager.auto.user = "alice";
      services.displayManager.defaultSession = lib.mkForce "none+i3";
      services.xserver.windowManager.i3.enable = true;
    };

  testScript =
    { ... }:
    ''
      with subtest("ensure x starts"):
          machine.wait_for_x()
          machine.wait_for_file("/home/alice/.Xauthority")
          machine.succeed("xauth merge ~alice/.Xauthority")

      with subtest("ensure we get first configuration window"):
          machine.wait_for_window(r".*?first configuration.*?")
          machine.sleep(2)
          machine.screenshot("started")

      with subtest("ensure we generate and save a config"):
          # press return to indicate we want to gen a new config
          machine.send_key("\n")
          machine.sleep(2)
          machine.screenshot("preconfig")
          # press alt then return to indicate we want to use alt as our Mod key
          machine.send_key("alt")
          machine.send_key("\n")
          machine.sleep(2)
          # make sure the config file is created before we continue
          machine.wait_for_file("/home/alice/.config/i3/config")
          machine.screenshot("postconfig")
          machine.sleep(2)

      with subtest("ensure we can open a new terminal"):
          machine.send_key("alt-ret")
          machine.sleep(2)
          machine.wait_for_window(r"alice.*?machine")
          machine.sleep(2)
          machine.screenshot("terminal")
    '';
}