ahoy: init at 2.2.0 (#366784)
[NixPkgs.git] / nixos / tests / lomiri-system-settings.nix
blob407e58eb784707ff65c6571e8f3684d6db8fd42a
1 import ./make-test-python.nix (
2   { pkgs, lib, ... }:
3   {
4     name = "lomiri-system-settings-standalone";
5     meta.maintainers = lib.teams.lomiri.members;
7     nodes.machine =
8       { config, pkgs, ... }:
9       {
10         imports = [
11           ./common/x11.nix
12         ];
14         services.xserver.enable = true;
16         environment = {
17           systemPackages = with pkgs.lomiri; [
18             suru-icon-theme
19             lomiri-system-settings
20           ];
21           variables = {
22             UITK_ICON_THEME = "suru";
23           };
24         };
26         i18n.supportedLocales = [ "all" ];
28         fonts.packages = with pkgs; [
29           # Intended font & helps with OCR
30           ubuntu-classic
31         ];
33         services.upower.enable = true;
34       };
36     enableOCR = true;
38     testScript =
39       let
40         settingsPages = [
41           # Base pages
42           {
43             name = "wifi";
44             type = "internal";
45             element = "networks";
46           }
47           {
48             name = "bluetooth";
49             type = "internal";
50             element = "discoverable|None detected";
51           }
52           # only text we can really look for with VPN is on a button, OCR on CI struggles with it
53           {
54             name = "vpn";
55             type = "internal";
56             element = "Add|Manual|Configuration";
57             skipOCR = true;
58           }
59           {
60             name = "appearance";
61             type = "internal";
62             element = "Background image|blur effects";
63           }
64           {
65             name = "desktop";
66             type = "internal";
67             element = "workspaces|Icon size";
68           }
69           {
70             name = "sound";
71             type = "internal";
72             element = "Silent Mode|Message sound";
73           }
74           {
75             name = "language";
76             type = "internal";
77             element = "Display language|External keyboard";
78           }
79           {
80             name = "notification";
81             type = "internal";
82             element = "Apps that notify";
83           }
84           {
85             name = "gestures";
86             type = "internal";
87             element = "Edge drag";
88           }
89           {
90             name = "mouse";
91             type = "internal";
92             element = "Cursor speed|Wheel scrolling speed";
93           }
94           {
95             name = "timedate";
96             type = "internal";
97             element = "Time zone|Set the time and date";
98           }
100           # External plugins
101           {
102             name = "security-privacy";
103             type = "external";
104             element = "Locking|unlocking|permissions";
105             elementLocalised = "Sperren|Entsperren|Berechtigungen";
106           }
107         ];
108       in
109       ''
110         machine.wait_for_x()
112         with subtest("lomiri system settings launches"):
113             machine.execute("lomiri-system-settings >&2 &")
114             machine.wait_for_text("System Settings")
115             machine.screenshot("lss_open")
117         # Move focus to start of plugins list for following list of tests
118         machine.send_key("tab")
119         machine.send_key("tab")
120         machine.screenshot("lss_focus")
122         # tab through & open all sub-menus, to make sure none of them fail
123       ''
124       + (lib.strings.concatMapStringsSep "\n" (
125         page:
126         ''
127           machine.send_key("tab")
128           machine.send_key("kp_enter")
129         ''
130         + lib.optionalString (!(page.skipOCR or false)) ''
131           with subtest("lomiri system settings ${page.name} works"):
132               machine.wait_for_text(r"(${page.element})")
133               machine.screenshot("lss_page_${page.name}")
134         ''
135       ) settingsPages)
136       + ''
138         machine.execute("pkill -f lomiri-system-settings")
140         with subtest("lomiri system settings localisation works"):
141             machine.execute("env LANG=de_DE.UTF-8 lomiri-system-settings >&2 &")
142             machine.wait_for_text("Systemeinstellungen")
143             machine.screenshot("lss_localised_open")
145         # Move focus to start of plugins list for following list of tests
146         machine.send_key("tab")
147         machine.send_key("tab")
148         machine.screenshot("lss_focus_localised")
150       ''
151       + (lib.strings.concatMapStringsSep "\n" (
152         page:
153         ''
154           machine.send_key("tab")
155           machine.send_key("kp_enter")
156         ''
157         + lib.optionalString (page.type == "external") ''
158           with subtest("lomiri system settings ${page.name} localisation works"):
159               machine.wait_for_text(r"(${page.elementLocalised})")
160               machine.screenshot("lss_localised_page_${page.name}")
161         ''
162       ) settingsPages)
163       + '''';
164   }