From 5f2e8276bdb187b5113b53571c192ebe030a608f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9lestin=20Matte?= Date: Tue, 14 Apr 2026 12:27:16 +0200 Subject: [PATCH] Add an end-to-end test for ruffle --- test/end_to_end.sh | 21 +++++++++++++++++++++ test/test_ruffle_nv14.ltm | Bin 0 -> 2009 bytes 2 files changed, 21 insertions(+) create mode 100755 test/end_to_end.sh create mode 100644 test/test_ruffle_nv14.ltm diff --git a/test/end_to_end.sh b/test/end_to_end.sh new file mode 100755 index 000000000..15612e549 --- /dev/null +++ b/test/end_to_end.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +cd $SCRIPT_DIR + +docker build -f ../Dockerfile --tag libtas_test . --build-arg=RUFFLE_VERSION=nightly-$(date +%Y-%m-%d) +docker run --rm -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/root/.Xauthority:rw -v "$SCRIPT_DIR"/test_ruffle_nv14.ltm:/home/test_ruffle_nv14.ltm --net=host libtas_test bash -c 'apt-get -y install wget && \ + cd /home/ && \ + # Download game to test + wget https://github.com/Perdu/nv14_TAS/raw/refs/heads/main/external/n_v14.swf && \ + # Fix for the sync issue (we need to launch ruffle once to load libopenh264.so) + timeout 2 xvfb-run -a ruffle n_v14.swf ; \ + # We need to launch libTAS once so it creates a config file + libTAS -n -r /home/test_ruffle_nv14.ltm /usr/local/bin/ruffle -g gl --no-gui --width 792 /home/n_v14.swf && \ + # Disable "prevent writing to disk" so we can check savefile size later + sed -i "s/prevent_savefiles=true/prevent_savefiles=false/" ~/.config/libTAS/ruffle/.ini && \ + # Actual game execution test + libTAS -n -r /home/test_ruffle_nv14.ltm /usr/local/bin/ruffle -g gl --no-gui --width 792 /home/n_v14.swf && \ + # Test that save file has the expected size, indicating the level was finished + test $(stat -c%s "/root/.local/share/ruffle/SharedObjects/localhost/n_v14b_userdata.sol") -eq 44787 && \ + echo -e "\nRuffle test passed successfully!"' diff --git a/test/test_ruffle_nv14.ltm b/test/test_ruffle_nv14.ltm new file mode 100644 index 0000000000000000000000000000000000000000..076585ea9d15bcd45b29658681d19dd720978dcf GIT binary patch literal 2009 zcmV;~2PXI*iwFP!000001MOXHkDE9U?q_~QJ~kh&!i1Miq)1oYhw9W;y1wXir)?Fn z#O!iOAO}uwx5|${8+H>yNJt1UhRhRbpNwtBcnltoF&occu2}S{R;V1Nt_miWvBLtI z!M_uO7^bCL)`0MIOEbxOs*(|FW#{wW8m>PYDj8{}IeI&KBQR2V zMk$40%NY|=FbSzJ4ja4nJfeyl+6y{yf|bw4WJnS@v>BaDsXtE3{%SGS zRpnlk_xYc3xN_aOC>PCGuvGZf#yopISpWtMxxgwKnGV=~d6`NE4 zo;@T5EI!wa@scVMb!G0|F*}+p?0B8Bzt};c~g36Gv{HGY$=PWF?JnC zbIhqeB${m-+TD$#yXK8OAht>EJ4;swpuO&ZcG-gsN&yoL;5TX=5wx#w;`k< zb%JpEVqZg5BKwE1KeuPr@;~g*v+w558N%exU8LMDY|m#8A+@KmIap{rv+v3~%D#He z?6+9MFJwnHb&>LEMZ>2*Xy^vv!uA~+XVFk(IrG4oZN5zIDT@ug>7Fs+rrpis_0Po- zvFyy8mwMB3Qt$H-fjhOIg#52KkLC6}ob7o;)48bNXr|B}30Wu=41Ise4m$N%5WwDq@WvsLPbWh3dZaxr$ibXYc-jDf%V))Lx$} zh_yva+o6h4PTM2deCcx?vBHnSZS?-?IRWmc=_7rDpGpy zR*bua9#L*CGVH9+6~t<1%J3phPkpW+*7T%A-cLFn#(pxKanCC*`PhkazpC=@j6SmQ z=dW*j5qHM4_nPR#esU1u2l;_N4ekFDx66->Gt^f57~AJw+-7_>6TM-N^^9-@>wmE? z$c+E0W#al@6NqoDh}2q#=-^Dh@2>yy&d#j=4vePbzbnNW*ME_pSE@!=yo?BKeC*sS zV@Xzp6aTN(T1TP(H*);{0R4XxSZBN``v0qB`0=nwmcim(X6XKvktOl>StR~{P-`8> z{lBJL#M<}&O|So7Db^Wp8vB1s9qF2t@z$F}c>llk`7+$uonjs)(wc;>bE>fg7O2t4 zDB$&YoKK$2rHyr}fGi~!_D`9DPAZXo>kN+$b4?qHUYTjG8=80 z9J+uRdh|f}9k!8qCftJkozbc=%bzm0*Ov;P<0|7`^8jKdfE ze@%Tb(uOy?yLGpTnf<@SxY^$ToFq2=29OLxy{vrZbgtT|YZc3(ow%H=sCLs`PY`*c4LZ=cat1k)hz!Isc)vV`wo7C7Pu~pCMhBYuKu@!! zMH2rRwbpSw{?l|T`~Saq{HNplpN(LR?|&la&+lXdE z_*54;p9}k^OkbnWwx><-E$p-a%{kr;-~X(G!F#$PKG<%lE_=xt;v$vz%v#0pF-j)_ zqfRseuQ|DeD`jZ!)<(v6JqsBAZmv?0ZcF}I#qnLwJq1PWYE8h7jEvkK1{zk&W%giHw7+KW9BZqu#+@qgLbdyA&g>`n=GSUjKy$;ixP5U^ z*97E78PXvmUl(^HR7~Q(n_BBAivLVv?mz#-|Nqkn))@a)z|i511Va5!9b{hXmwHcO zUVpVL)~VmJ<%RQ%Sb^aivUyd)u|{zz zbtaaIfB!=zBhAeGtj9JH{`Wufqd(~Jz3rSoK0=Ssb#R^qlp}d