diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 6f941cc254ad..ba889d403472 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -562,6 +562,7 @@ in { lomiri-clock-app = runTest ./lomiri-clock-app.nix; lomiri-docviewer-app = runTest ./lomiri-docviewer-app.nix; lomiri-filemanager-app = runTest ./lomiri-filemanager-app.nix; + lomiri-mediaplayer-app = runTest ./lomiri-mediaplayer-app.nix; lomiri-gallery-app = runTest ./lomiri-gallery-app.nix; lomiri-system-settings = handleTest ./lomiri-system-settings.nix {}; lorri = handleTest ./lorri/default.nix {}; diff --git a/nixos/tests/lomiri-mediaplayer-app.nix b/nixos/tests/lomiri-mediaplayer-app.nix new file mode 100644 index 000000000000..b4ac5dd4ad2a --- /dev/null +++ b/nixos/tests/lomiri-mediaplayer-app.nix @@ -0,0 +1,77 @@ +{ lib, ... }: +let + ocrContent = "Video Test"; + videoFile = "test.webm"; +in +{ + name = "lomiri-mediaplayer-app-standalone"; + meta.maintainers = lib.teams.lomiri.members; + + nodes.machine = + { config, pkgs, ... }: + { + imports = [ ./common/x11.nix ]; + + services.xserver.enable = true; + + environment = { + # Setup video + etc."${videoFile}".source = + pkgs.runCommand videoFile + { + nativeBuildInputs = with pkgs; [ + ffmpeg # produce video for OCR + (imagemagick.override { ghostscriptSupport = true; }) # produce OCR-able image + ]; + } + '' + magick -size 400x400 canvas:white -pointsize 40 -fill black -annotate +100+100 '${ocrContent}' output.png + ffmpeg -re -loop 1 -i output.png -c:v libvpx -b:v 100K -t 120 $out -loglevel fatal + ''; + systemPackages = with pkgs.lomiri; [ + suru-icon-theme + lomiri-mediaplayer-app + ]; + variables = { + UITK_ICON_THEME = "suru"; + }; + }; + + i18n.supportedLocales = [ "all" ]; + + fonts = { + packages = with pkgs; [ + # Intended font & helps with OCR + ubuntu-classic + ]; + }; + }; + + enableOCR = true; + + testScript = '' + machine.wait_for_x() + + with subtest("lomiri mediaplayer launches"): + machine.succeed("lomiri-mediaplayer-app >&2 &") + machine.wait_for_text("Choose from") + machine.screenshot("lomiri-mediaplayer_open") + + machine.succeed("pkill -f lomiri-mediaplayer-app") + + with subtest("lomiri mediaplayer plays video"): + machine.succeed("lomiri-mediaplayer-app /etc/${videoFile} >&2 &") + machine.wait_for_text("${ocrContent}") + machine.screenshot("lomiri-mediaplayer_playback") + + machine.succeed("pkill -f lomiri-mediaplayer-app") + + with subtest("lomiri mediaplayer localisation works"): + # OCR struggles with finding identifying the translated window title, and lomiri-content-hub QML isn't translated + # Cause an error, and look for the error popup + machine.succeed("touch invalid.mp4") + machine.succeed("env LANG=de_DE.UTF-8 lomiri-mediaplayer-app invalid.mp4 >&2 &") + machine.wait_for_text("Fehler") + machine.screenshot("lomiri-mediaplayer_localised") + ''; +} diff --git a/pkgs/desktops/lomiri/applications/lomiri-mediaplayer-app/default.nix b/pkgs/desktops/lomiri/applications/lomiri-mediaplayer-app/default.nix index 15ad1337194d..cb63a2cb8ac3 100644 --- a/pkgs/desktops/lomiri/applications/lomiri-mediaplayer-app/default.nix +++ b/pkgs/desktops/lomiri/applications/lomiri-mediaplayer-app/default.nix @@ -4,6 +4,7 @@ fetchFromGitLab, fetchpatch, gitUpdater, + nixosTests, cmake, gettext, gst_all_1, @@ -146,6 +147,7 @@ stdenv.mkDerivation (finalAttrs: { ''; passthru = { + tests.vm = nixosTests.lomiri-mediaplayer-app; updateScript = gitUpdater { }; };