lol

nixosTests.{lomiri-*,teleports}: Fix OCR (#406759)

authored by

Cosima Neidahl and committed by
GitHub
527595ee 20694b79

+107 -21
+17 -4
nixos/tests/lomiri-calendar-app.nix
··· 44 44 45 45 with subtest("lomiri calendar launches"): 46 46 machine.succeed("lomiri-calendar-app >&2 &") 47 - machine.wait_for_text(r"(January|February|March|April|May|June|July|August|September|October|November|December)") 47 + machine.sleep(10) 48 + machine.send_key("alt-f10") 49 + machine.sleep(2) 50 + # Default page is unbearably slow to OCR on, switch to another 51 + machine.succeed("xdotool mousemove 580 50 click 1") 52 + machine.sleep(2) 53 + machine.wait_for_text(r"(January|February|March|April|May|June|July|August|September|October|November|December|Mon|Tue|Wed|Thu|Fri|Sat|Sun)") 48 54 machine.screenshot("lomiri-calendar") 49 55 50 56 with subtest("lomiri calendar works"): 51 57 # Switch to Agenda tab, less busy 52 - machine.succeed("xdotool mousemove 300 50 click 1") 58 + machine.succeed("xdotool mousemove 380 50 click 1") 59 + machine.sleep(2) 53 60 54 61 # Still on main page 55 - machine.succeed("xdotool mousemove 500 650 click 1") 62 + machine.succeed("xdotool mousemove 500 720 click 1") 63 + machine.sleep(2) 56 64 machine.wait_for_text(r"(Date|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|All day|Name|Details|More)") 57 65 machine.screenshot("lomiri-calendar_newevent") 58 66 59 67 # On New Event page 60 68 machine.succeed("xdotool mousemove 500 230 click 1") 69 + machine.sleep(2) 61 70 machine.send_chars("foobar") 62 71 machine.sleep(2) # make sure they're actually in there 63 - machine.succeed("xdotool mousemove 780 40 click 1") 72 + machine.succeed("xdotool mousemove 1000 40 click 1") 73 + machine.sleep(2) 64 74 machine.wait_for_text("Agenda") 65 75 machine.screenshot("lomiri-calendar_eventadded") 66 76 ··· 73 83 74 84 with subtest("lomiri calendar localisation works"): 75 85 machine.succeed("env LANG=de_DE.UTF-8 lomiri-calendar-app >&2 &") 86 + machine.sleep(10) 87 + machine.send_key("alt-f10") 88 + machine.sleep(2) 76 89 machine.wait_for_text(r"(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag)") 77 90 machine.screenshot("lomiri-calendar_localised") 78 91 '';
+26 -6
nixos/tests/lomiri-camera-app.nix
··· 47 47 48 48 testScript = 49 49 let 50 - qrLabel = "Image"; 50 + qrLabel = "Feed"; 51 51 qrContent = "Test"; 52 52 in 53 53 '' ··· 55 55 56 56 with subtest("lomiri camera launches"): 57 57 machine.succeed("lomiri-camera-app >&2 &") 58 + machine.wait_for_console_text("updateViewfinderResolution: viewfinder resolutions is not known yet") 59 + machine.sleep(10) 60 + machine.send_key("alt-f10") 61 + machine.sleep(5) 58 62 machine.wait_for_text("Cannot access") 59 63 machine.screenshot("lomiri-camera_open") 60 64 ··· 64 68 machine.succeed("modprobe v4l2loopback video_nr=10 card_label=Video-Loopback exclusive_caps=1") 65 69 machine.succeed("qrtool encode '${qrContent}' -s 20 -m 10 > qr.png") 66 70 # Horizontal flip, add text, flip back. Camera displays image mirrored, so need reversed text for OCR 67 - machine.succeed("magick qr.png -flop -pointsize 70 -fill black -annotate +100+100 '${qrLabel}' -flop output.png") 71 + machine.succeed("magick qr.png -flop -pointsize 30 -fill black -annotate +100+100 '${qrLabel}' -flop output.png") 68 72 machine.succeed("ffmpeg -re -loop 1 -i output.png -vf format=yuv420p -f v4l2 /dev/video10 -loglevel fatal >&2 &") 69 73 70 74 with subtest("lomiri camera uses camera"): 71 75 machine.succeed("lomiri-camera-app >&2 &") 76 + machine.wait_for_console_text("updateViewfinderResolution: For target resolution") 77 + machine.sleep(10) 78 + machine.send_key("alt-f10") 79 + machine.sleep(5) 72 80 machine.wait_for_text("${qrLabel}") 73 81 machine.screenshot("lomiri-camera_feed") 74 82 75 - machine.succeed("xdotool mousemove 320 610 click 1") # take photo 76 - machine.wait_until_succeeds("find /root/Pictures/camera.ubports -name '*.jpg'") 83 + machine.succeed("xdotool mousemove 510 670 click 1") # take photo 84 + machine.wait_until_succeeds("ls /root/Pictures/camera.ubports | grep '\\.jpg$'") 77 85 78 86 # Check that the image is correct 79 87 machine.send_key("ctrl-alt-right") 80 88 machine.succeed("magick /root/Pictures/camera.ubports/IMG_00000001.jpg -flop photo_flip.png") 81 89 machine.succeed("feh photo_flip.png >&2 &") 90 + machine.sleep(10) 82 91 machine.wait_for_text("${qrLabel}") 83 92 machine.screenshot("lomiri-camera_photo") 84 93 ··· 88 97 89 98 with subtest("lomiri barcode scanner uses camera"): 90 99 machine.succeed("lomiri-camera-app --mode=barcode-reader >&2 &") 100 + machine.wait_for_console_text("updateViewfinderResolution: For target resolution") 101 + machine.sleep(10) 102 + machine.send_key("alt-f10") 103 + machine.sleep(5) 91 104 machine.wait_for_text("${qrLabel}") 92 - machine.succeed("xdotool mousemove 320 610 click 1") # open up QR decode result 105 + machine.succeed("xdotool mousemove 510 670 click 1") # open up QR decode result 93 106 94 107 # OCR is struggling to recognise the text. Click the clipboard button and paste the result somewhere else 95 108 machine.sleep(5) 96 109 machine.screenshot("lomiri-barcode_decode") 97 - machine.succeed("xdotool mousemove 350 530 click 1") 110 + machine.succeed("xdotool mousemove 540 590 click 1") 98 111 machine.sleep(5) 99 112 100 113 # Need to make a new window without closing camera app, otherwise clipboard content gets lost? 101 114 machine.send_key("ctrl-alt-right") 102 115 machine.succeed("gnome-text-editor >&2 &") 116 + machine.sleep(10) 117 + machine.send_key("alt-f10") 118 + machine.sleep(5) 103 119 machine.wait_for_text("New") 104 120 105 121 # Font size up to help with OCR ··· 129 145 130 146 with subtest("lomiri camera localisation works"): 131 147 machine.succeed("env LANG=de_DE.UTF-8 lomiri-camera-app >&2 &") 148 + machine.wait_for_console_text("updateViewfinderResolution: For target resolution") 149 + machine.sleep(10) 150 + machine.send_key("alt-f10") 151 + machine.sleep(5) 132 152 machine.wait_for_text("Kamera") 133 153 machine.screenshot("lomiri-camera_localised") 134 154 '';
+8 -2
nixos/tests/lomiri-clock-app.nix
··· 34 34 machine.wait_for_x() 35 35 36 36 with subtest("lomiri clock launches"): 37 - machine.execute("lomiri-clock-app >&2 &") 37 + machine.succeed("lomiri-clock-app >&2 &") 38 + machine.sleep(10) 39 + machine.send_key("alt-f10") 40 + machine.sleep(5) 38 41 machine.wait_for_text(r"(clock.ubports|City|Alarms)") 39 42 machine.screenshot("lomiri-clock_open") 40 43 41 44 machine.succeed("pkill -f lomiri-clock-app") 42 45 43 46 with subtest("lomiri clock localisation works"): 44 - machine.execute("env LANG=de_DE.UTF-8 lomiri-clock-app >&2 &") 47 + machine.succeed("env LANG=de_DE.UTF-8 lomiri-clock-app >&2 &") 48 + machine.sleep(10) 49 + machine.send_key("alt-f10") 50 + machine.sleep(5) 45 51 machine.wait_for_text(r"(Stadt|Weckzeiten)") 46 52 machine.screenshot("lomiri-clock_localised") 47 53 '';
+15
nixos/tests/lomiri-docviewer-app.nix
··· 46 46 47 47 with subtest("lomiri docviewer launches"): 48 48 machine.succeed("lomiri-docviewer-app >&2 &") 49 + machine.sleep(10) 50 + machine.send_key("alt-f10") 51 + machine.sleep(5) 49 52 machine.wait_for_text("No documents") 50 53 machine.screenshot("lomiri-docviewer_open") 51 54 ··· 57 60 58 61 with subtest("lomiri docviewer txt works"): 59 62 machine.succeed("lomiri-docviewer-app /etc/docviewer-sampletext.txt >&2 &") 63 + machine.sleep(10) 64 + machine.send_key("alt-f10") 65 + machine.sleep(5) 60 66 machine.wait_for_text("${exampleText}") 61 67 machine.screenshot("lomiri-docviewer_txt") 62 68 ··· 64 70 65 71 with subtest("lomiri docviewer odt works"): 66 72 machine.succeed("lomiri-docviewer-app /root/docviewer-sampletext.odt >&2 &") 73 + machine.sleep(10) 74 + machine.send_key("alt-f10") 75 + machine.sleep(5) 67 76 machine.wait_for_text("${exampleText}") 68 77 machine.screenshot("lomiri-docviewer_odt") 69 78 ··· 71 80 72 81 with subtest("lomiri docviewer pdf works"): 73 82 machine.succeed("lomiri-docviewer-app /root/docviewer-sampletext.pdf >&2 &") 83 + machine.sleep(10) 84 + machine.send_key("alt-f10") 85 + machine.sleep(5) 74 86 machine.wait_for_text("${exampleText}") 75 87 machine.screenshot("lomiri-docviewer_pdf") 76 88 ··· 78 90 79 91 with subtest("lomiri docviewer localisation works"): 80 92 machine.succeed("env LANG=de_DE.UTF-8 lomiri-docviewer-app >&2 &") 93 + machine.sleep(10) 94 + machine.send_key("alt-f10") 95 + machine.sleep(5) 81 96 machine.wait_for_text("Keine Dokumente") 82 97 machine.screenshot("lomiri-docviewer_localised") 83 98 '';
+9 -3
nixos/tests/lomiri-mediaplayer-app.nix
··· 1 1 { lib, ... }: 2 2 let 3 - ocrContent = "Video Test"; 3 + ocrContent = "Feed"; 4 4 videoFile = "test.webm"; 5 5 in 6 6 { ··· 25 25 ]; 26 26 } 27 27 '' 28 - magick -size 400x400 canvas:white -pointsize 40 -fill black -annotate +100+100 '${ocrContent}' output.png 29 - ffmpeg -re -loop 1 -i output.png -c:v libvpx -b:v 100K -t 120 $out -loglevel fatal 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 30 ''; 31 31 systemPackages = with pkgs.lomiri; [ 32 32 suru-icon-theme ··· 54 54 55 55 with subtest("lomiri mediaplayer launches"): 56 56 machine.succeed("lomiri-mediaplayer-app >&2 &") 57 + machine.sleep(10) 58 + machine.send_key("alt-f10") 57 59 machine.wait_for_text("Choose from") 58 60 machine.screenshot("lomiri-mediaplayer_open") 59 61 ··· 61 63 62 64 with subtest("lomiri mediaplayer plays video"): 63 65 machine.succeed("lomiri-mediaplayer-app /etc/${videoFile} >&2 &") 66 + machine.sleep(10) 67 + machine.send_key("alt-f10") 64 68 machine.wait_for_text("${ocrContent}") 65 69 machine.screenshot("lomiri-mediaplayer_playback") 66 70 ··· 71 75 # Cause an error, and look for the error popup 72 76 machine.succeed("touch invalid.mp4") 73 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") 74 80 machine.wait_for_text("Fehler") 75 81 machine.screenshot("lomiri-mediaplayer_localised") 76 82 '';
+6 -1
nixos/tests/lomiri-music-app.nix
··· 140 140 141 141 with subtest("lomiri music launches"): 142 142 machine.succeed("lomiri-music-app >&2 &") 143 - machine.wait_for_text("favorite music") 143 + machine.sleep(10) 144 144 machine.send_key("alt-f10") 145 + machine.sleep(2) 146 + machine.wait_for_text("favorite music") 145 147 machine.screenshot("lomiri-music") 146 148 147 149 with subtest("lomiri music plays music"): ··· 187 189 188 190 with subtest("lomiri music localisation works"): 189 191 machine.succeed("env LANG=de_DE.UTF-8 lomiri-music-app .mp4 >&2 &") 192 + machine.sleep(10) 193 + machine.send_key("alt-f10") 194 + machine.sleep(2) 190 195 machine.wait_for_text("Titel") 191 196 machine.screenshot("lomiri-music_localised") 192 197 '';
+10 -2
nixos/tests/lomiri-system-settings.nix
··· 109 109 machine.wait_for_x() 110 110 111 111 with subtest("lomiri system settings launches"): 112 - machine.execute("lomiri-system-settings >&2 &") 112 + machine.succeed("lomiri-system-settings >&2 &") 113 + machine.wait_for_console_text("qml: Plugin about does not exist") 114 + machine.sleep(10) 115 + machine.send_key("alt-f10") 116 + machine.sleep(5) 113 117 machine.wait_for_text("System Settings") 114 118 machine.screenshot("lss_open") 115 119 ··· 137 141 machine.execute("pkill -f lomiri-system-settings") 138 142 139 143 with subtest("lomiri system settings localisation works"): 140 - machine.execute("env LANG=de_DE.UTF-8 lomiri-system-settings >&2 &") 144 + machine.succeed("env LANG=de_DE.UTF-8 lomiri-system-settings >&2 &") 145 + machine.wait_for_console_text("qml: Plugin about does not exist") 146 + machine.sleep(10) 147 + machine.send_key("alt-f10") 148 + machine.sleep(5) 141 149 machine.wait_for_text("Systemeinstellungen") 142 150 machine.screenshot("lss_localised_open") 143 151
+8 -2
nixos/tests/teleports.nix
··· 34 34 machine.wait_for_x() 35 35 36 36 with subtest("teleports launches"): 37 - machine.execute("teleports >&2 &") 37 + machine.succeed("teleports >&2 &") 38 + machine.wait_for_console_text("authorizationStateWaitPhoneNumber") 39 + machine.send_key("alt-f10") 40 + machine.sleep(2) 38 41 machine.wait_for_text(r"(TELEports|Phone Number)") 39 42 machine.screenshot("teleports_open") 40 43 41 44 machine.succeed("pkill -f teleports") 42 45 43 46 with subtest("teleports localisation works"): 44 - machine.execute("env LANG=de_DE.UTF-8 teleports >&2 &") 47 + machine.succeed("env LANG=de_DE.UTF-8 teleports >&2 &") 48 + machine.wait_for_console_text("authorizationStateWaitPhoneNumber") 49 + machine.send_key("alt-f10") 50 + machine.sleep(2) 45 51 machine.wait_for_text("Telefonnummer") 46 52 machine.screenshot("teleports_localised") 47 53 '';