1{ lib, ... }:
2let
3 ocrContent = "Feed";
4 videoFile = "test.webm";
5in
6{
7 name = "lomiri-mediaplayer-app-standalone";
8 meta.maintainers = lib.teams.lomiri.members;
9
10 nodes.machine =
11 { config, pkgs, ... }:
12 {
13 imports = [ ./common/x11.nix ];
14
15 services.xserver.enable = true;
16
17 environment = {
18 # Setup video
19 etc."${videoFile}".source =
20 pkgs.runCommand videoFile
21 {
22 nativeBuildInputs = with pkgs; [
23 ffmpeg # produce video for OCR
24 (imagemagick.override { ghostscriptSupport = true; }) # produce OCR-able image
25 ];
26 }
27 ''
28 magick -size 600x600 canvas:white -pointsize 20 -fill black -annotate +100+100 '${ocrContent}' output.png
29 ffmpeg -re -loop 1 -i output.png -c:v libvpx -b:v 200K -t 120 $out -loglevel fatal
30 '';
31 systemPackages = with pkgs.lomiri; [
32 suru-icon-theme
33 lomiri-mediaplayer-app
34 ];
35 variables = {
36 UITK_ICON_THEME = "suru";
37 };
38 };
39
40 i18n.supportedLocales = [ "all" ];
41
42 fonts = {
43 packages = with pkgs; [
44 # Intended font & helps with OCR
45 ubuntu-classic
46 ];
47 };
48 };
49
50 enableOCR = true;
51
52 testScript = ''
53 machine.wait_for_x()
54
55 with subtest("lomiri mediaplayer launches"):
56 machine.succeed("lomiri-mediaplayer-app >&2 &")
57 machine.sleep(10)
58 machine.send_key("alt-f10")
59 machine.wait_for_text("Choose from")
60 machine.screenshot("lomiri-mediaplayer_open")
61
62 machine.succeed("pkill -f lomiri-mediaplayer-app")
63
64 with subtest("lomiri mediaplayer plays video"):
65 machine.succeed("lomiri-mediaplayer-app /etc/${videoFile} >&2 &")
66 machine.sleep(10)
67 machine.send_key("alt-f10")
68 machine.wait_for_text("${ocrContent}")
69 machine.screenshot("lomiri-mediaplayer_playback")
70
71 machine.succeed("pkill -f lomiri-mediaplayer-app")
72
73 with subtest("lomiri mediaplayer localisation works"):
74 # OCR struggles with finding identifying the translated window title, and lomiri-content-hub QML isn't translated
75 # Cause an error, and look for the error popup
76 machine.succeed("touch invalid.mp4")
77 machine.succeed("env LANG=de_DE.UTF-8 lomiri-mediaplayer-app invalid.mp4 >&2 &")
78 machine.sleep(10)
79 machine.send_key("alt-f10")
80 machine.wait_for_text("Fehler")
81 machine.screenshot("lomiri-mediaplayer_localised")
82 '';
83}