1import ./make-test.nix ({ pkgs, ...} :
2
3{
4 name = "sddm";
5 meta = with pkgs.stdenv.lib.maintainers; {
6 maintainers = [ ttuegel ];
7 };
8
9 machine = { lib, ... }: {
10 imports = [ ./common/user-account.nix ];
11 virtualisation.memorySize = 1024;
12 services.xserver.enable = true;
13 services.xserver.displayManager.sddm = {
14 enable = true;
15 autoLogin = {
16 enable = true;
17 user = "alice";
18 };
19 };
20 services.xserver.desktopManager.kde5.enable = true;
21 };
22
23 enableOCR = true;
24
25 testScript = { nodes, ... }:
26 let xdo = "${pkgs.xdotool}/bin/xdotool"; in
27 ''
28 sub krunner {
29 my ($win,) = @_;
30 $machine->execute("${xdo} key Alt+F2 sleep 1 type $win");
31 $machine->execute("${xdo} search --sync --onlyvisible --class krunner sleep 5 key Return");
32 }
33
34 $machine->waitUntilSucceeds("pgrep plasmashell");
35 $machine->succeed("xauth merge ~alice/.Xauthority");
36 $machine->waitForWindow(qr/Desktop.*/);
37
38 # Check that logging in has given the user ownership of devices.
39 $machine->succeed("getfacl /dev/snd/timer | grep -q alice");
40
41 krunner("dolphin");
42 $machine->waitForWindow(qr/.*Dolphin/);
43
44 krunner("konsole");
45 $machine->waitForWindow(qr/.*Konsole/);
46
47 krunner("systemsettings5");
48 $machine->waitForWindow(qr/.*Settings/);
49 $machine->sleep(20);
50
51 $machine->execute("${xdo} key Alt+F1 sleep 10");
52 $machine->screenshot("screen");
53 '';
54})