1{ pkgs, lib, ... }:
2{
3 name = "lomiri-calendar-app-standalone";
4 meta = {
5 maintainers = lib.teams.lomiri.members;
6 # This needs a Linux VM
7 platforms = lib.platforms.linux;
8 };
9
10 nodes.machine =
11 { config, pkgs, ... }:
12 {
13 imports = [ ./common/x11.nix ];
14
15 services.xserver.enable = true;
16
17 environment = {
18 systemPackages =
19 with pkgs;
20 [
21 xdotool # mouse movement
22 ]
23 ++ (with pkgs.lomiri; [
24 suru-icon-theme
25 lomiri-calendar-app
26 ]);
27 variables = {
28 UITK_ICON_THEME = "suru";
29 };
30 };
31
32 i18n.supportedLocales = [ "all" ];
33
34 fonts.packages = with pkgs; [
35 # Intended font & helps with OCR
36 ubuntu-classic
37 ];
38 };
39
40 enableOCR = true;
41
42 testScript = ''
43 machine.wait_for_x()
44
45 with subtest("lomiri calendar launches"):
46 machine.succeed("lomiri-calendar-app >&2 &")
47 machine.sleep(10)
48 machine.send_key("alt-f10")
49 machine.sleep(2)
50 # Default page is unbearably slow to OCR on, switch to another
51 machine.succeed("xdotool mousemove 580 50 click 1")
52 machine.sleep(2)
53 machine.wait_for_text(r"(January|February|March|April|May|June|July|August|September|October|November|December|Mon|Tue|Wed|Thu|Fri|Sat|Sun)")
54 machine.screenshot("lomiri-calendar")
55
56 with subtest("lomiri calendar works"):
57 # Switch to Agenda tab, less busy
58 machine.succeed("xdotool mousemove 380 50 click 1")
59 machine.sleep(2)
60
61 # Still on main page
62 machine.succeed("xdotool mousemove 500 720 click 1")
63 machine.sleep(2)
64 machine.wait_for_text(r"(Date|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|All day|Name|Details|More)")
65 machine.screenshot("lomiri-calendar_newevent")
66
67 # On New Event page
68 machine.succeed("xdotool mousemove 500 230 click 1")
69 machine.sleep(2)
70 machine.send_chars("foobar")
71 machine.sleep(2) # make sure they're actually in there
72 machine.succeed("xdotool mousemove 1000 40 click 1")
73 machine.sleep(2)
74 machine.wait_for_text("Agenda")
75 machine.screenshot("lomiri-calendar_eventadded")
76
77 # Back on main page
78 # Event was created, does it have the correct name?
79 machine.wait_for_text("foobar")
80 machine.screenshot("lomiri-calendar_works")
81
82 machine.succeed("pkill -f lomiri-calendar-app")
83
84 with subtest("lomiri calendar localisation works"):
85 machine.succeed("env LANG=de_DE.UTF-8 lomiri-calendar-app >&2 &")
86 machine.sleep(10)
87 machine.send_key("alt-f10")
88 machine.sleep(2)
89 machine.wait_for_text(r"(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag)")
90 machine.screenshot("lomiri-calendar_localised")
91 '';
92}