1import ./make-test-python.nix (
2 { pkgs, lib, ... }:
3 {
4 name = "gnome-flashback";
5 meta.maintainers = lib.teams.gnome.members ++ [ lib.maintainers.chpatrick ];
6
7 nodes.machine =
8 { nodes, ... }:
9 let
10 user = nodes.machine.users.users.alice;
11 in
12
13 {
14 imports = [ ./common/user-account.nix ];
15
16 services.xserver.enable = true;
17
18 services.xserver.displayManager = {
19 gdm.enable = true;
20 gdm.debug = true;
21 };
22
23 services.displayManager.autoLogin = {
24 enable = true;
25 user = user.name;
26 };
27
28 services.xserver.desktopManager.gnome.enable = true;
29 services.xserver.desktopManager.gnome.debug = true;
30 services.xserver.desktopManager.gnome.flashback.enableMetacity = true;
31 services.displayManager.defaultSession = "gnome-flashback-metacity";
32 };
33
34 testScript =
35 { nodes, ... }:
36 let
37 user = nodes.machine.users.users.alice;
38 uid = toString user.uid;
39 xauthority = "/run/user/${uid}/gdm/Xauthority";
40 in
41 ''
42 with subtest("Login to GNOME Flashback with GDM"):
43 machine.wait_for_x()
44 machine.wait_until_succeeds('journalctl -t gnome-session-binary --grep "Entering running state"')
45 # Wait for alice to be logged in"
46 machine.wait_for_unit("default.target", "${user.name}")
47 machine.wait_for_file("${xauthority}")
48 machine.succeed("xauth merge ${xauthority}")
49 # Check that logging in has given the user ownership of devices
50 assert "alice" in machine.succeed("getfacl -p /dev/snd/timer")
51
52 with subtest("Wait for Metacity"):
53 machine.wait_until_succeeds("pgrep metacity")
54
55 with subtest("Regression test for #233920"):
56 machine.wait_until_succeeds("pgrep -fa gnome-flashback-media-keys")
57 machine.sleep(20)
58 machine.screenshot("screen")
59 '';
60 }
61)