import ./make-test-python.nix ({ lib, pkgs, ...} : { name = "qownnotes"; meta.maintainers = [ lib.maintainers.pbek ]; nodes.machine = { ... }: { imports = [ ./common/user-account.nix ./common/x11.nix ]; test-support.displayManager.auto.user = "alice"; environment.systemPackages = [ pkgs.qownnotes pkgs.xdotool ]; }; enableOCR = true; # https://nixos.org/manual/nixos/stable/#ssec-machine-objects testScript = { nodes, ... }: let aliceDo = cmd: ''machine.succeed("su - alice -c '${cmd}' >&2 &");''; in '' with subtest("Ensure X starts"): start_all() machine.wait_for_x() with subtest("Check QOwnNotes version on CLI"): ${aliceDo "qownnotes --version"} machine.wait_for_console_text("QOwnNotes ${pkgs.qownnotes.version}") with subtest("Ensure QOwnNotes starts"): # start QOwnNotes window ${aliceDo "qownnotes"} machine.wait_for_text("Welcome to QOwnNotes") machine.screenshot("QOwnNotes-Welcome") with subtest("Finish first-run wizard"): # The wizard should show up now machine.wait_for_text("Note folder") machine.send_key("ret") machine.wait_for_console_text("Note path '/home/alice/Notes' was now created.") machine.wait_for_text("Panel layout") machine.send_key("ret") machine.wait_for_text("Nextcloud") machine.send_key("ret") machine.wait_for_text("App metric") machine.send_key("ret") # Doesn't work for non-root #machine.wait_for_window("QOwnNotes - ${pkgs.qownnotes.version}") # OCR doesn't seem to be able any more to handle the main window #machine.wait_for_text("QOwnNotes - ${pkgs.qownnotes.version}") # The main window should now show up machine.wait_for_open_port(22222) machine.wait_for_console_text("QOwnNotes server listening on port 22222") machine.screenshot("QOwnNotes-DemoNote") with subtest("Create a new note"): machine.send_key("ctrl-n") machine.sleep(1) machine.send_chars("This is a NixOS test!\n") machine.wait_until_succeeds("find /home/alice/Notes -type f | grep -qi 'Note 2'") # OCR doesn't seem to be able any more to handle the main window #machine.wait_for_text("This is a NixOS test!") # Doesn't work for non-root #machine.wait_for_window("- QOwnNotes - ${pkgs.qownnotes.version}") machine.screenshot("QOwnNotes-NewNote") ''; })