Skip to content

Commit

Permalink
nixos/tests/sunshine: fix test
Browse files Browse the repository at this point in the history
- change text in `wait_for_console_text` to prevent sending curl with
pairing response before moonlight can accept it
- remove "close moonlight" step as next window stays on top in
fullscreen, previous window with pairing result does not interfere
with test. Otherwise it needs OCR or some other way to only do
`send_key("kp_enter")` after "Pairing complete" window is visible.
- add different ways to increase chances of successfull OCR: hide icewm
panel, gxmessage window takes full screen without titlebar or buttons,
black background, white foreground, consolas font,"ABC" text
- add `wait_for_console_text` to only run OCR after window is visible
  • Loading branch information
ghpzin authored and devusb committed Dec 15, 2024
1 parent 10b9c9b commit b91e332
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions nixos/tests/sunshine.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import ./make-test-python.nix (
# test is flaky on aarch64
broken = pkgs.stdenv.hostPlatform.isAarch64;
maintainers = [ lib.maintainers.devusb ];
timeout = 600;
};

nodes.sunshine =
Expand Down Expand Up @@ -58,20 +59,23 @@ import ./make-test-python.nix (
# initiate pairing from moonlight
moonlight.execute("moonlight pair sunshine --pin 1234 >&2 & disown")
moonlight.wait_for_console_text("Executing request")
moonlight.wait_for_console_text("Executing request.*pair")
# respond to pairing request from sunshine
sunshine.succeed("curl --insecure -u sunshine:sunshine -d '{\"pin\": \"1234\"}' https://localhost:47990/api/pin")
sunshine.succeed("curl --fail --insecure -u sunshine:sunshine -d '{\"pin\": \"1234\"}' https://localhost:47990/api/pin")
# close moonlight once pairing complete
moonlight.send_key("kp_enter")
# wait until pairing is complete
moonlight.wait_for_console_text("Executing request.*phrase=pairchallenge")
# hide icewm panel
sunshine.send_key("ctrl-alt-h")
# put words on the sunshine screen for moonlight to see
sunshine.execute("gxmessage 'hello world' -center -font 'sans 75' >&2 & disown")
sunshine.execute("gxmessage ' ABC' -center -font 'consolas 100' -fg '#FFFFFF' -bg '#000000' -borderless -geometry '2000x2000' -buttons \"\" >&2 & disown")
# connect to sunshine from moonlight and look for the words
moonlight.execute("moonlight --video-decoder software stream sunshine 'Desktop' >&2 & disown")
moonlight.wait_for_text("hello world")
'';
moonlight.wait_for_console_text("Dropping window event during flush")
moonlight.wait_for_text("ABC")
'';
}
)

0 comments on commit b91e332

Please sign in to comment.