diff --git a/tests/kolide-launcher.nix b/tests/kolide-launcher.nix index 423eb35..b94983f 100644 --- a/tests/kolide-launcher.nix +++ b/tests/kolide-launcher.nix @@ -23,16 +23,36 @@ pkgs.nixosTest { uid = 1000; }; + # Add Gnome extensions + environment.systemPackages = [pkgs.gnomeExtensions]; + nixpkgs.config.allowBroken = true; + nixpkgs.config.allowAliases = false; + services.xserver.enable = true; services.xserver.displayManager = { - lightdm.enable = true; + gdm = { + enable = true; + debug = true; + wayland = true; + }; autoLogin = { enable = true; user = "alice"; }; }; - services.xserver.desktopManager.mate.enable = true; - services.xserver.desktopManager.mate.debug = true; + services.xserver.desktopManager.gnome.enable = true; + services.xserver.desktopManager.gnome.debug = true; + + systemd.user.services = { + "org.gnome.Shell@wayland" = { + serviceConfig = { + ExecStart = [ + "" + "${pkgs.gnome.gnome-shell}/bin/gnome-shell --unsafe-mode" + ]; + }; + }; + }; # This just quiets some log spam we don't care about hardware.pulseaudio.enable = true; @@ -49,24 +69,34 @@ pkgs.nixosTest { uid = toString user.uid; xauthority = "${user.home}/.Xauthority"; ci = builtins.getEnv "CI"; + bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus"; + + run = command: "su - ${user.name} -c '${bus} ${command}'"; + eval = command: run "gdbus call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval ${command}"; + startingUp = eval "Main.layoutManager._startingUp"; in '' if "${ci}": machine.start() - with subtest("log in to MATE"): - machine.wait_for_unit("display-manager.service", timeout=120) - machine.wait_for_file("${xauthority}") - machine.succeed("xauth merge ${xauthority}") - machine.wait_until_succeeds("pgrep marco") - machine.wait_for_window("marco") - machine.wait_until_succeeds("pgrep mate-panel") - machine.wait_for_window("Top Panel") - machine.wait_for_window("Bottom Panel") - machine.wait_until_succeeds("pgrep caja") - machine.wait_for_window("Caja") + with subtest("log in to GNOME"): + machine.wait_for_unit("display-manager.service", timeout=300) + machine.wait_for_file("/run/user/${uid}/wayland-0", timeout=120) + machine.wait_for_unit("default.target", "${user.name}", timeout=120) + assert "alice" in machine.succeed("getfacl -p /dev/snd/timer") machine.sleep(20) - machine.screenshot("test-screen1.png") + machine.screenshot("test-1.png") + + with subtest("wait for GNOME shell"): + machine.wait_until_succeeds( + "${startingUp} | grep -q 'true,..false'" + ) + machine.send_key("esc") + machine.screenshot("test-2.png") + + with subtest("enable appindicator extension"): + machine.succeed(${run "gnome-extensions enable appindicatorsupport@rgcjonas.gmail.com"}) + machine.screenshot("test-3.png") with subtest("set up secret file"): machine.copy_from_host("${./test-secret}", "/etc/kolide-k2/secret")