1{ config, pkgs, ... }:
2{
3 name = "Basic Omnom Test";
4 meta = {
5 inherit (pkgs.omnom.meta) maintainers;
6 };
7
8 nodes = {
9 server =
10 { pkgs, ... }:
11 {
12 imports = [
13 ../common/x11.nix
14 ./config.nix
15 ];
16
17 environment.systemPackages = [ pkgs.xdotool ];
18 };
19 };
20
21 testScript =
22 let
23 port = toString config.nodes.server.services.omnom.port;
24 in
25 # python
26 ''
27 import re
28
29 def open_omnom():
30 # Add-ons Manager
31 server.succeed("xdotool mousemove --sync 960 90 click 1")
32 server.sleep(10)
33 # omnom
34 server.succeed("xdotool mousemove --sync 700 190 click 1")
35 server.sleep(10)
36
37
38 service_url = "http://127.0.0.1:${toString port}"
39
40 server.start()
41 server.wait_for_unit("omnom.service")
42 server.wait_for_open_port(${toString port})
43 server.succeed(f"curl -sf '{service_url}'")
44
45 output = server.succeed("omnom create-user user user@example.com")
46 match = re.search(r"Visit (.+?) to sign in", output)
47 assert match is not None, "Login URL not found"
48 login_url = match[1].replace("0.0.0.0", "127.0.0.1")
49
50 output = server.succeed("omnom create-token user addon")
51 match = re.search(r"Token (.+?) created", output)
52 assert match is not None, "Addon token not found"
53 token = match[1]
54
55 server.wait_for_x()
56 server.succeed(f"librewolf --new-window '{login_url}' >&2 &")
57 server.wait_for_window("Omnom")
58
59 open_omnom()
60
61 # token
62 server.succeed("xdotool mousemove --sync 700 350 click 1")
63 server.succeed(f"xdotool type {token}")
64 server.sleep(10)
65
66 # url
67 server.succeed("xdotool mousemove --sync 700 470 click 1")
68 server.succeed(f"xdotool type '{service_url}'")
69 server.sleep(10)
70
71 # submit
72 server.succeed("xdotool mousemove --sync 900 520 click 1")
73 server.sleep(10)
74
75 open_omnom()
76
77 # save
78 server.succeed("xdotool mousemove --sync 900 520 click 1")
79 server.sleep(10)
80
81 # refresh
82 server.succeed("xdotool mousemove --sync 100 80 click 1")
83 server.sleep(10)
84
85 server.screenshot("home.png")
86
87 # view bookmarks
88 server.succeed("xdotool mousemove --sync 300 130 click 1")
89 server.sleep(10)
90
91 # view snapshot
92 server.succeed("xdotool mousemove --sync 970 230 click 1")
93 server.sleep(10)
94 server.succeed("xdotool mousemove --sync 160 340 click 1")
95 server.sleep(10)
96
97 server.screenshot("screenshot.png")
98
99 # view details
100 server.succeed("xdotool mousemove --sync 290 200 click 1")
101 server.sleep(10)
102
103 server.screenshot("snapshot_details.png")
104 '';
105}