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