nixosTests.{lomiri-*,teleports}: Fix OCR (#406759)
This commit is contained in:
@@ -44,23 +44,33 @@
|
||||
|
||||
with subtest("lomiri calendar launches"):
|
||||
machine.succeed("lomiri-calendar-app >&2 &")
|
||||
machine.wait_for_text(r"(January|February|March|April|May|June|July|August|September|October|November|December)")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(2)
|
||||
# Default page is unbearably slow to OCR on, switch to another
|
||||
machine.succeed("xdotool mousemove 580 50 click 1")
|
||||
machine.sleep(2)
|
||||
machine.wait_for_text(r"(January|February|March|April|May|June|July|August|September|October|November|December|Mon|Tue|Wed|Thu|Fri|Sat|Sun)")
|
||||
machine.screenshot("lomiri-calendar")
|
||||
|
||||
with subtest("lomiri calendar works"):
|
||||
# Switch to Agenda tab, less busy
|
||||
machine.succeed("xdotool mousemove 300 50 click 1")
|
||||
machine.succeed("xdotool mousemove 380 50 click 1")
|
||||
machine.sleep(2)
|
||||
|
||||
# Still on main page
|
||||
machine.succeed("xdotool mousemove 500 650 click 1")
|
||||
machine.succeed("xdotool mousemove 500 720 click 1")
|
||||
machine.sleep(2)
|
||||
machine.wait_for_text(r"(Date|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|All day|Name|Details|More)")
|
||||
machine.screenshot("lomiri-calendar_newevent")
|
||||
|
||||
# On New Event page
|
||||
machine.succeed("xdotool mousemove 500 230 click 1")
|
||||
machine.sleep(2)
|
||||
machine.send_chars("foobar")
|
||||
machine.sleep(2) # make sure they're actually in there
|
||||
machine.succeed("xdotool mousemove 780 40 click 1")
|
||||
machine.succeed("xdotool mousemove 1000 40 click 1")
|
||||
machine.sleep(2)
|
||||
machine.wait_for_text("Agenda")
|
||||
machine.screenshot("lomiri-calendar_eventadded")
|
||||
|
||||
@@ -73,6 +83,9 @@
|
||||
|
||||
with subtest("lomiri calendar localisation works"):
|
||||
machine.succeed("env LANG=de_DE.UTF-8 lomiri-calendar-app >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(2)
|
||||
machine.wait_for_text(r"(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag)")
|
||||
machine.screenshot("lomiri-calendar_localised")
|
||||
'';
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
testScript =
|
||||
let
|
||||
qrLabel = "Image";
|
||||
qrLabel = "Feed";
|
||||
qrContent = "Test";
|
||||
in
|
||||
''
|
||||
@@ -55,6 +55,10 @@
|
||||
|
||||
with subtest("lomiri camera launches"):
|
||||
machine.succeed("lomiri-camera-app >&2 &")
|
||||
machine.wait_for_console_text("updateViewfinderResolution: viewfinder resolutions is not known yet")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("Cannot access")
|
||||
machine.screenshot("lomiri-camera_open")
|
||||
|
||||
@@ -64,21 +68,26 @@
|
||||
machine.succeed("modprobe v4l2loopback video_nr=10 card_label=Video-Loopback exclusive_caps=1")
|
||||
machine.succeed("qrtool encode '${qrContent}' -s 20 -m 10 > qr.png")
|
||||
# Horizontal flip, add text, flip back. Camera displays image mirrored, so need reversed text for OCR
|
||||
machine.succeed("magick qr.png -flop -pointsize 70 -fill black -annotate +100+100 '${qrLabel}' -flop output.png")
|
||||
machine.succeed("magick qr.png -flop -pointsize 30 -fill black -annotate +100+100 '${qrLabel}' -flop output.png")
|
||||
machine.succeed("ffmpeg -re -loop 1 -i output.png -vf format=yuv420p -f v4l2 /dev/video10 -loglevel fatal >&2 &")
|
||||
|
||||
with subtest("lomiri camera uses camera"):
|
||||
machine.succeed("lomiri-camera-app >&2 &")
|
||||
machine.wait_for_console_text("updateViewfinderResolution: For target resolution")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("${qrLabel}")
|
||||
machine.screenshot("lomiri-camera_feed")
|
||||
|
||||
machine.succeed("xdotool mousemove 320 610 click 1") # take photo
|
||||
machine.wait_until_succeeds("find /root/Pictures/camera.ubports -name '*.jpg'")
|
||||
machine.succeed("xdotool mousemove 510 670 click 1") # take photo
|
||||
machine.wait_until_succeeds("ls /root/Pictures/camera.ubports | grep '\\.jpg$'")
|
||||
|
||||
# Check that the image is correct
|
||||
machine.send_key("ctrl-alt-right")
|
||||
machine.succeed("magick /root/Pictures/camera.ubports/IMG_00000001.jpg -flop photo_flip.png")
|
||||
machine.succeed("feh photo_flip.png >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.wait_for_text("${qrLabel}")
|
||||
machine.screenshot("lomiri-camera_photo")
|
||||
|
||||
@@ -88,18 +97,25 @@
|
||||
|
||||
with subtest("lomiri barcode scanner uses camera"):
|
||||
machine.succeed("lomiri-camera-app --mode=barcode-reader >&2 &")
|
||||
machine.wait_for_console_text("updateViewfinderResolution: For target resolution")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("${qrLabel}")
|
||||
machine.succeed("xdotool mousemove 320 610 click 1") # open up QR decode result
|
||||
machine.succeed("xdotool mousemove 510 670 click 1") # open up QR decode result
|
||||
|
||||
# OCR is struggling to recognise the text. Click the clipboard button and paste the result somewhere else
|
||||
machine.sleep(5)
|
||||
machine.screenshot("lomiri-barcode_decode")
|
||||
machine.succeed("xdotool mousemove 350 530 click 1")
|
||||
machine.succeed("xdotool mousemove 540 590 click 1")
|
||||
machine.sleep(5)
|
||||
|
||||
# Need to make a new window without closing camera app, otherwise clipboard content gets lost?
|
||||
machine.send_key("ctrl-alt-right")
|
||||
machine.succeed("gnome-text-editor >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("New")
|
||||
|
||||
# Font size up to help with OCR
|
||||
@@ -129,6 +145,10 @@
|
||||
|
||||
with subtest("lomiri camera localisation works"):
|
||||
machine.succeed("env LANG=de_DE.UTF-8 lomiri-camera-app >&2 &")
|
||||
machine.wait_for_console_text("updateViewfinderResolution: For target resolution")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("Kamera")
|
||||
machine.screenshot("lomiri-camera_localised")
|
||||
'';
|
||||
|
||||
@@ -34,14 +34,20 @@
|
||||
machine.wait_for_x()
|
||||
|
||||
with subtest("lomiri clock launches"):
|
||||
machine.execute("lomiri-clock-app >&2 &")
|
||||
machine.succeed("lomiri-clock-app >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text(r"(clock.ubports|City|Alarms)")
|
||||
machine.screenshot("lomiri-clock_open")
|
||||
|
||||
machine.succeed("pkill -f lomiri-clock-app")
|
||||
|
||||
with subtest("lomiri clock localisation works"):
|
||||
machine.execute("env LANG=de_DE.UTF-8 lomiri-clock-app >&2 &")
|
||||
machine.succeed("env LANG=de_DE.UTF-8 lomiri-clock-app >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text(r"(Stadt|Weckzeiten)")
|
||||
machine.screenshot("lomiri-clock_localised")
|
||||
'';
|
||||
|
||||
@@ -46,6 +46,9 @@ in
|
||||
|
||||
with subtest("lomiri docviewer launches"):
|
||||
machine.succeed("lomiri-docviewer-app >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("No documents")
|
||||
machine.screenshot("lomiri-docviewer_open")
|
||||
|
||||
@@ -57,6 +60,9 @@ in
|
||||
|
||||
with subtest("lomiri docviewer txt works"):
|
||||
machine.succeed("lomiri-docviewer-app /etc/docviewer-sampletext.txt >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("${exampleText}")
|
||||
machine.screenshot("lomiri-docviewer_txt")
|
||||
|
||||
@@ -64,6 +70,9 @@ in
|
||||
|
||||
with subtest("lomiri docviewer odt works"):
|
||||
machine.succeed("lomiri-docviewer-app /root/docviewer-sampletext.odt >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("${exampleText}")
|
||||
machine.screenshot("lomiri-docviewer_odt")
|
||||
|
||||
@@ -71,6 +80,9 @@ in
|
||||
|
||||
with subtest("lomiri docviewer pdf works"):
|
||||
machine.succeed("lomiri-docviewer-app /root/docviewer-sampletext.pdf >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("${exampleText}")
|
||||
machine.screenshot("lomiri-docviewer_pdf")
|
||||
|
||||
@@ -78,6 +90,9 @@ in
|
||||
|
||||
with subtest("lomiri docviewer localisation works"):
|
||||
machine.succeed("env LANG=de_DE.UTF-8 lomiri-docviewer-app >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("Keine Dokumente")
|
||||
machine.screenshot("lomiri-docviewer_localised")
|
||||
'';
|
||||
|
||||
@@ -59,8 +59,15 @@
|
||||
machine.succeed("mkdir /root/Pictures /root/Videos")
|
||||
# Setup example data, OCR-friendly:
|
||||
# - White square, black text
|
||||
# - Small text for display OCR
|
||||
# - Big text for gallery preview OCR
|
||||
# - uppercase extension
|
||||
machine.succeed("magick -size 500x500 -background white -fill black canvas:white -pointsize 70 -annotate +100+300 '${imageLabel}' /root/Pictures/output.PNG")
|
||||
machine.succeed(
|
||||
"magick -size 500x500 -background white -fill black canvas:white "
|
||||
+ "-pointsize 20 -annotate +100+100 '${imageLabel}' "
|
||||
+ "-pointsize 50 -annotate +100+300 '${imageLabel}' "
|
||||
+ "/root/Pictures/output.PNG"
|
||||
)
|
||||
|
||||
# Different image formats
|
||||
machine.succeed("magick /root/Pictures/output.PNG /root/Pictures/output.JPG")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
ocrContent = "Video Test";
|
||||
ocrContent = "Feed";
|
||||
videoFile = "test.webm";
|
||||
in
|
||||
{
|
||||
@@ -25,8 +25,8 @@ in
|
||||
];
|
||||
}
|
||||
''
|
||||
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
|
||||
magick -size 600x600 canvas:white -pointsize 20 -fill black -annotate +100+100 '${ocrContent}' output.png
|
||||
ffmpeg -re -loop 1 -i output.png -c:v libvpx -b:v 200K -t 120 $out -loglevel fatal
|
||||
'';
|
||||
systemPackages = with pkgs.lomiri; [
|
||||
suru-icon-theme
|
||||
@@ -54,6 +54,8 @@ in
|
||||
|
||||
with subtest("lomiri mediaplayer launches"):
|
||||
machine.succeed("lomiri-mediaplayer-app >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.wait_for_text("Choose from")
|
||||
machine.screenshot("lomiri-mediaplayer_open")
|
||||
|
||||
@@ -61,6 +63,8 @@ in
|
||||
|
||||
with subtest("lomiri mediaplayer plays video"):
|
||||
machine.succeed("lomiri-mediaplayer-app /etc/${videoFile} >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.wait_for_text("${ocrContent}")
|
||||
machine.screenshot("lomiri-mediaplayer_playback")
|
||||
|
||||
@@ -71,6 +75,8 @@ in
|
||||
# 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.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.wait_for_text("Fehler")
|
||||
machine.screenshot("lomiri-mediaplayer_localised")
|
||||
'';
|
||||
|
||||
@@ -140,8 +140,10 @@ in
|
||||
|
||||
with subtest("lomiri music launches"):
|
||||
machine.succeed("lomiri-music-app >&2 &")
|
||||
machine.wait_for_text("favorite music")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(2)
|
||||
machine.wait_for_text("favorite music")
|
||||
machine.screenshot("lomiri-music")
|
||||
|
||||
with subtest("lomiri music plays music"):
|
||||
@@ -187,6 +189,9 @@ in
|
||||
|
||||
with subtest("lomiri music localisation works"):
|
||||
machine.succeed("env LANG=de_DE.UTF-8 lomiri-music-app .mp4 >&2 &")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(2)
|
||||
machine.wait_for_text("Titel")
|
||||
machine.screenshot("lomiri-music_localised")
|
||||
'';
|
||||
|
||||
@@ -109,7 +109,11 @@
|
||||
machine.wait_for_x()
|
||||
|
||||
with subtest("lomiri system settings launches"):
|
||||
machine.execute("lomiri-system-settings >&2 &")
|
||||
machine.succeed("lomiri-system-settings >&2 &")
|
||||
machine.wait_for_console_text("qml: Plugin about does not exist")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("System Settings")
|
||||
machine.screenshot("lss_open")
|
||||
|
||||
@@ -137,7 +141,11 @@
|
||||
machine.execute("pkill -f lomiri-system-settings")
|
||||
|
||||
with subtest("lomiri system settings localisation works"):
|
||||
machine.execute("env LANG=de_DE.UTF-8 lomiri-system-settings >&2 &")
|
||||
machine.succeed("env LANG=de_DE.UTF-8 lomiri-system-settings >&2 &")
|
||||
machine.wait_for_console_text("qml: Plugin about does not exist")
|
||||
machine.sleep(10)
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(5)
|
||||
machine.wait_for_text("Systemeinstellungen")
|
||||
machine.screenshot("lss_localised_open")
|
||||
|
||||
|
||||
@@ -34,14 +34,20 @@
|
||||
machine.wait_for_x()
|
||||
|
||||
with subtest("teleports launches"):
|
||||
machine.execute("teleports >&2 &")
|
||||
machine.succeed("teleports >&2 &")
|
||||
machine.wait_for_console_text("authorizationStateWaitPhoneNumber")
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(2)
|
||||
machine.wait_for_text(r"(TELEports|Phone Number)")
|
||||
machine.screenshot("teleports_open")
|
||||
|
||||
machine.succeed("pkill -f teleports")
|
||||
|
||||
with subtest("teleports localisation works"):
|
||||
machine.execute("env LANG=de_DE.UTF-8 teleports >&2 &")
|
||||
machine.succeed("env LANG=de_DE.UTF-8 teleports >&2 &")
|
||||
machine.wait_for_console_text("authorizationStateWaitPhoneNumber")
|
||||
machine.send_key("alt-f10")
|
||||
machine.sleep(2)
|
||||
machine.wait_for_text("Telefonnummer")
|
||||
machine.screenshot("teleports_localised")
|
||||
'';
|
||||
|
||||
Reference in New Issue
Block a user