python312Packages.dissect-extfs: 3.11 -> 3.12
[NixPkgs.git] / nixos / tests / musescore.nix
blob559c91ed8e5501bd93769c6d374133803cb784b2
1 import ./make-test-python.nix ({ pkgs, ...} :
3 let
4   # Make sure we don't have to go through the startup tutorial
5   customMuseScoreConfig = pkgs.writeText "MuseScore4.ini" ''
6     [application]
7     hasCompletedFirstLaunchSetup=true
9     [project]
10     preferredScoreCreationMode=1
11     '';
14   name = "musescore";
15   meta = with pkgs.lib.maintainers; {
16     maintainers = [ turion ];
17   };
19   nodes.machine = { ... }:
21   {
22     imports = [
23       ./common/x11.nix
24     ];
26     services.xserver.enable = true;
27     environment.systemPackages = with pkgs; [
28       musescore
29       pdfgrep
30     ];
31   };
33   enableOCR = true;
35   testScript = { ... }: ''
36     start_all()
37     machine.wait_for_x()
39     # Inject custom settings
40     machine.succeed("mkdir -p /root/.config/MuseScore/")
41     machine.succeed(
42         "cp ${customMuseScoreConfig} /root/.config/MuseScore/MuseScore4.ini"
43     )
45     # Start MuseScore window
46     machine.execute("env XDG_RUNTIME_DIR=$PWD DISPLAY=:0.0 mscore >&2 &")
48     # Wait until MuseScore has launched
49     machine.wait_for_window("MuseScore Studio")
51     machine.screenshot("MuseScore0")
53     # Create a new score
54     machine.send_key("ctrl-n")
56     # Wait until the creation wizard appears
57     machine.wait_for_window("New score")
59     machine.screenshot("MuseScore1")
61     machine.send_key("tab")
62     machine.send_key("tab")
63     machine.send_key("ret")
65     machine.sleep(2)
67     machine.send_key("tab")
68     # Type the beginning of https://de.wikipedia.org/wiki/Alle_meine_Entchen
69     machine.send_chars("cdef6gg5aaaa7g")
70     machine.sleep(1)
72     machine.screenshot("MuseScore2")
74     # Go to the export dialogue and create a PDF
75     machine.send_key("ctrl-p")
77     # Wait until the Print dialogue appears.
78     machine.wait_for_window("Print")
80     machine.screenshot("MuseScore4")
81     machine.send_key("alt-p")
82     machine.sleep(1)
84     machine.screenshot("MuseScore5")
86     # Wait until PDF is exported
87     machine.wait_for_file('"/root/Untitled score.pdf"')
89     ## Check that it contains the title of the score
90     machine.succeed('pdfgrep "Untitled score" "/root/Untitled score.pdf"')
91     machine.copy_from_vm("/root/Untitled score.pdf")
92   '';