From 9182aaa0481b32fb19944d46ab61fe48d238a026 Mon Sep 17 00:00:00 2001 From: Bobby Rong Date: Sun, 2 Nov 2025 12:11:33 +0800 Subject: [PATCH] nixosTests.xfce: Add tests for screensaver Same as what is done in nixosTests.cinnamon. --- nixos/tests/xfce.nix | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/nixos/tests/xfce.nix b/nixos/tests/xfce.nix index cdd1f3ffc676..ae203c5ca26d 100644 --- a/nixos/tests/xfce.nix +++ b/nixos/tests/xfce.nix @@ -21,6 +21,7 @@ environment.systemPackages = [ pkgs.xfce.xfce4-whiskermenu-plugin ]; programs.thunar.plugins = [ pkgs.xfce.thunar-archive-plugin ]; + programs.ydotool.enable = true; }; enableOCR = true; @@ -44,8 +45,9 @@ with subtest("Check if Xfce components actually start"): machine.wait_for_window("xfce4-panel") machine.wait_for_window("Desktop") - for i in ["xfwm4", "xfsettingsd", "xfdesktop", "xfce4-screensaver", "xfce4-notifyd", "xfconfd"]: - machine.wait_until_succeeds(f"pgrep -f {i}") + for i in ["xfwm4", "xfsettingsd", "xfdesktop", "xfce4-notifyd", "xfconfd"]: + machine.wait_until_succeeds(f"pgrep {i}") + machine.wait_until_succeeds("pgrep -xf xfce4-screensaver") with subtest("Open whiskermenu"): machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfconf-query -c xfce4-panel -p /plugins/plugin-1 -t string -s whiskermenu -n >&2 &'") @@ -63,6 +65,17 @@ machine.succeed("su - ${user.name} -c 'DISPLAY=:0 xfce4-terminal >&2 &'") machine.wait_for_window("Terminal") + with subtest("Lock the screen"): + machine.succeed("su - ${user.name} -c '${bus} xflock4 >&2 &'") + machine.wait_until_succeeds("su - ${user.name} -c '${bus} xfce4-screensaver-command -q' | grep 'The screensaver is active'") + machine.sleep(5) + machine.succeed("ydotool click 0xC0") + machine.wait_for_text("${user.description}|Unlock") + machine.screenshot("screensaver") + machine.send_chars("${user.password}\n", delay=0.2) + machine.wait_until_succeeds("su - ${user.name} -c '${bus} xfce4-screensaver-command -q' | grep 'The screensaver is inactive'") + machine.sleep(2) + with subtest("Open Thunar"): machine.succeed("su - ${user.name} -c 'DISPLAY=:0 thunar >&2 &'") machine.wait_for_window("Thunar")