Release NixOS 23.11
[NixPkgs.git] / nixos / tests / plasma5.nix
blobfb8a5b73832ea3751dd5bc63cdb2929bd20c6e0c
1 import ./make-test-python.nix ({ pkgs, ...} :
4   name = "plasma5";
5   meta = with pkgs.lib.maintainers; {
6     maintainers = [ ttuegel ];
7   };
9   nodes.machine = { ... }:
11   {
12     imports = [ ./common/user-account.nix ];
13     services.xserver.enable = true;
14     services.xserver.displayManager.sddm.enable = true;
15     services.xserver.displayManager.defaultSession = "plasma";
16     services.xserver.desktopManager.plasma5.enable = true;
17     environment.plasma5.excludePackages = [ pkgs.plasma5Packages.elisa ];
18     services.xserver.displayManager.autoLogin = {
19       enable = true;
20       user = "alice";
21     };
22     hardware.pulseaudio.enable = true; # needed for the factl test, /dev/snd/* exists without them but udev doesn't care then
23   };
25   testScript = { nodes, ... }: let
26     user = nodes.machine.users.users.alice;
27     xdo = "${pkgs.xdotool}/bin/xdotool";
28   in ''
29     with subtest("Wait for login"):
30         start_all()
31         machine.wait_for_file("/tmp/xauth_*")
32         machine.succeed("xauth merge /tmp/xauth_*")
34     with subtest("Check plasmashell started"):
35         machine.wait_until_succeeds("pgrep plasmashell")
36         machine.wait_for_window("^Desktop ")
38     with subtest("Check that KDED is running"):
39         machine.succeed("pgrep kded5")
41     with subtest("Check that logging in has given the user ownership of devices"):
42         machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")
44     with subtest("Ensure Elisa is not installed"):
45         machine.fail("which elisa")
47     machine.succeed("su - ${user.name} -c 'xauth merge /tmp/xauth_*'")
49     with subtest("Run Dolphin"):
50         machine.execute("su - ${user.name} -c 'DISPLAY=:0.0 dolphin >&2 &'")
51         machine.wait_for_window(" Dolphin")
53     with subtest("Run Konsole"):
54         machine.execute("su - ${user.name} -c 'DISPLAY=:0.0 konsole >&2 &'")
55         machine.wait_for_window("Konsole")
57     with subtest("Run systemsettings"):
58         machine.execute("su - ${user.name} -c 'DISPLAY=:0.0 systemsettings5 >&2 &'")
59         machine.wait_for_window("Settings")
61     with subtest("Wait to get a screenshot"):
62         machine.execute(
63             "${xdo} key Alt+F1 sleep 10"
64         )
65         machine.screenshot("screen")
66   '';