From 6b5f727c8ab969ceb6fa3fbfc6d215079f80bcad Mon Sep 17 00:00:00 2001 From: nevimer <77420409+nevimer@users.noreply.github.com> Date: Fri, 2 Feb 2024 01:00:48 -0500 Subject: [PATCH] Test / Fix of Screenshots CI test (#1009) Test PR for runner --- .github/workflows/ci_suite.yml | 68 +++++++++--------- .../screenshot_antag_icons_bloodbrother.png | Bin 2399 -> 2390 bytes ...manoids__datum_species_abductor_lesser.png | Bin 0 -> 1044 bytes ...hot_humanoids__datum_species_hemophage.png | Bin 1081 -> 1081 bytes ...eenshot_humanoids__datum_species_jelly.png | Bin 2420 -> 2418 bytes ...manoids__datum_species_jelly_stargazer.png | Bin 2420 -> 2418 bytes ...oids__datum_species_lizard_silverscale.png | Bin 1238 -> 1267 bytes ...manoids__datum_species_mammal_shadekin.png | Bin 1457 -> 0 bytes ...reenshot_humanoids__datum_species_moth.png | Bin 1658 -> 1700 bytes ...shot_humanoids__datum_species_shadekin.png | Bin 1416 -> 1430 bytes ...enshot_humanoids__datum_species_skrell.png | Bin 1088 -> 1011 bytes ...nshot_humanoids__datum_species_tajaran.png | Bin 1111 -> 1116 bytes 12 files changed, 34 insertions(+), 34 deletions(-) create mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_abductor_lesser.png delete mode 100644 code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mammal_shadekin.png diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index aeaecd72df2..79ddf2c65f7 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -213,40 +213,40 @@ jobs: steps: - run: echo Alternate tests passed. - # compare_screenshots: - # if: "!contains(github.event.head_commit.message, '[ci skip]') && always()" - # needs: [run_all_tests, run_alternate_tests] - # name: Compare Screenshot Tests - # runs-on: ubuntu-20.04 - # steps: - # - uses: actions/checkout@v3 - # # If we ever add more artifacts, this is going to break, but it'll be obvious. - # - name: Download screenshot tests - # uses: actions/download-artifact@v3 - # with: - # path: artifacts - # - name: ls -R - # run: ls -R artifacts - # - name: Setup screenshot comparison - # run: npm i - # working-directory: tools/screenshot-test-comparison - # - name: Run screenshot comparison - # run: node tools/screenshot-test-comparison/index.js artifacts code/modules/unit_tests/screenshots artifacts/screenshot_comparisons - # # workflow_run does not give you the PR it ran on, - # # even through the thing literally named "matching pull requests". - # # However, in GraphQL, you can check if the check suite was ran - # # by a specific PR, so trusting the (user controlled) action here is okay, - # # as long as we check it later in show_screenshot_test_results - # - name: Save PR ID - # if: failure() && github.event.pull_request - # run: | - # echo ${{ github.event.pull_request.number }} > artifacts/screenshot_comparisons/pull_request_number.txt - # - name: Upload bad screenshots - # if: failure() - # uses: actions/upload-artifact@v3 - # with: - # name: bad-screenshots - # path: artifacts/screenshot_comparisons + compare_screenshots: + if: "!contains(github.event.head_commit.message, '[ci skip]') && always()" + needs: [run_all_tests, run_alternate_tests] + name: Compare Screenshot Tests + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + # If we ever add more artifacts, this is going to break, but it'll be obvious. + - name: Download screenshot tests + uses: actions/download-artifact@v3 + with: + path: artifacts + - name: ls -R + run: ls -R artifacts + - name: Setup screenshot comparison + run: npm i + working-directory: tools/screenshot-test-comparison + - name: Run screenshot comparison + run: node tools/screenshot-test-comparison/index.js artifacts code/modules/unit_tests/screenshots artifacts/screenshot_comparisons + # workflow_run does not give you the PR it ran on, + # even through the thing literally named "matching pull requests". + # However, in GraphQL, you can check if the check suite was ran + # by a specific PR, so trusting the (user controlled) action here is okay, + # as long as we check it later in show_screenshot_test_results + - name: Save PR ID + if: failure() && github.event.pull_request + run: | + echo ${{ github.event.pull_request.number }} > artifacts/screenshot_comparisons/pull_request_number.txt + - name: Upload bad screenshots + if: failure() + uses: actions/upload-artifact@v3 + with: + name: bad-screenshots + path: artifacts/screenshot_comparisons test_windows: if: ( !contains(github.event.head_commit.message, '[ci skip]') ) diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_bloodbrother.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_bloodbrother.png index e53e0a866977088437506090a127137da134d5f1..8e5cb6076eafb81b28bceb10755013da24ec914e 100644 GIT binary patch delta 2260 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 C7IN1B diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_abductor_lesser.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_abductor_lesser.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad767d2b642f5371f27efe3a516be034dcff4e3 GIT binary patch literal 1044 zcmV+v1nc{WP)eHp*WZbYqM@Xzo1UX2Bq}W}Gt14< z?(Xg#9weoywsdiVl9if-hm4+~rbBQFaR2}S0d!JMQvg8b*k%9#0A+eqSad{Xb7OL8 zaCB*JZU6vyoKseCa&`CgQ*iP1KApQrj>Pg(XW01TbiIsYpUECO84!{{ef}PH6{S+)4j*7&IhtIJ=)$imW|C ze6%5@{5QSpx>m%JuC(clR`vW9^i`d3p)c3wa;<9-^6J_cbA5GD1KjlMHUHI0P`CZ+ zdez_FRP;McLHD{b1tt5wmkNx?ImhWwdeGK?4=X?8w zhxKJbBp(7r3c*t>>ehSYdv7ax03aYApM?nM4g?JAO1g-FJc1HLPoV$^WSw;mFI&+Q zgb-1LO?kwmdxrwB6a^g>MjKB6zRCdj&pZRnLFBqfF^M<8^exlz>&*EmA=B}kYL!la zq;&SwN^{S%pVrX2dy_pc()2n-qC^xEHgpb-93E$w%cy7qccGN zU2S$dWbbwx^&``Hn+vWWa0No<55!5Qn$Ck4kwS5o{FTnXb;Ml?yW|&O(wl%JN}J>j zfa+6W5Bx`fg@8ps!kFLA(}&^laS;4AoTcxdp7z5i#(^)2`Z!GbFcx)j*zXUAqc|S; z;tc)647p$c7WJ-e0G4&MZ{1b9qv|vQ8iZ$kVc-$ux-3Ju1VKMn0ZQH&7=#93-5Xsw zjwZmJG^WwuaaI~58wLUdM3_3jH2FBOQ^dpCx&h>vaJU!q(YbMIH_pttMLUNkUmzeK zeLGN#!1*|qoh=a1cO6bMN(`w1IC&28nM>ie1uaF~q5&Wm6E}K<=M_wCpOz}1*(qcd z*a<*fKofuxXac-n1aAI(UeXePILhZvj+;Mxfnk7pDd)c^2EdIc_6YA)EDHlPDwMBf zz^lX@H3RZBoDds$WwqTt)GK({ZaHRC@v14pO*h*&<_EK#8>HWaX8S)mgnB*`n)wr< zmH!D~0FI=w1sHK4wE$D|ZxF`WBeVk892{%%@#G=uV{ZO+z{w;0Ier4}c}_g@j8x_T O0000q4<{2pf$Y~RIpq?NA}-QD}1-|zE$?|~4 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 Uf3S+^H~;_u07*qoM6N<$g7k&{^Z)<= diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mammal_shadekin.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_mammal_shadekin.png deleted file mode 100644 index f12eed7031f21ce2b7091954d48acfce7e66650a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1457 zcmV;i1y1^jP)ec7Z(>GARr+jAr=-El)ttB000>o8HtIBu&}Tc6ciN| z6$%Op1Ox;%I6;n(lNuT!R$61Tv$J$}fOmU?QBPYqHa3}YE6 z2mqS@7!En1VMG7`1YSu*K~z|Um6r`$qc{|W^Bo`>ODh4gS#{LWj#Ksj|GPaG*xd>N zJ9)HUZ|><$XzsZ%#<&ntvH4I!2tK^}jx(l}u|j^qQdpz(g`BZM8Dk~??>(2+7*(8c zwczTEV}`&C%L&ng1s8K}HaKQbnkBEwvaEOsUd%Wo&N#xq@^KlqLZ~e(Yt#a>LMrgm zLcuDzJaT-ks-un=mEM=?>4UN#Q z@TP0}C}NN2e0_F84|iUf`DrPPpw$n1*tBB7*&gR0#Srd({J6iv zd6@sy_Cjdd!G`uxiv?%3_U`fN`R9;<^F=-9Lc7Ojg?jM({OGipbIf>Ql)=O6>+1u1 z$#afsU_I8K;WTIy=`Z&?8@NCMR_QfP*E%8#y2f?^@kun_3nWHA5@RzyfO16fR{8G* z%4Iwh$|2r}3o@|tf=Y zRaPDcc0+;Fajr@wWX7NOUebYqyRQpS>x1JYebyVDcIwI)bG@n{uYrxi#2l?_$Hfhu zn6*Wqw;8%4?&@Vl@?M}Z*{OqFX<*pc<=BJb&Py@xFmzG4{R?xu1Lr)OAPon2xOMDh z?}}p4VK7we6f>T4K7eCFanCWBe}|gCUQ^j<(QONp&nO@szTJl{1&T-6Zkvn(e78k4 z3yDP51Soi%)GfLcvMsO_@f8~ap^b@*9@Cc@47MM>%OH%M!Xkra5D1jOrT|h1gTQATilN^a)?eYaQhLVqr2?8W7=WNid?pO?$G0=iE)}4u9_v86K_8+{@#)ehl%&&^ zzzGFuY7acc&G}&d8w#hfhuE4x&B4bS{+N1*^)Z_Ny1>*UoR5D1(i&@>f!800000 LNkvXXu0mjf_cxSl diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_moth.png index 0ffa32ed58b0ccaac703c092864711ef39628b16..986a5b8cbe8c139019966627f03ee3f9bf6bde01 100644 GIT binary patch delta 1330 zcmV-21TpK-=q zE0^~u@;S@Z%ByrD?GAmFA^_<2r|_l*R^;H)6<3&pi!!C!wtpu$X0 z_^nXHVIuJ74BUjXXQe{1SS*y*4fwh*umHk;X38&DN~L0{R4E%e2w}UfYYSmuux%F% zrHX6WdfcLXFc@$qTrjLxa26&U_n>?|&Z@*fA5qoffp9GR_;J%M}~-KywG~@ftRokF8eYni2vR1bCuc3j}Vq z1nd!BMHSpr-v@N2h-PEKAgma#MZdpN@Ja}XU6AfvS)Xw82n^WU7EpA!Mr-{Bw_ zjYdfV;Adw|N&^9%oA~`E!4UVylgasO>;R5WwgTY2-dT9|HpDwOe2Z4EH}1y?ybp$p ziQ{1d`f3P6B8ZcCPxc1m5O_EqpgqR5Ck9D(m|VQ$^uEMITpoX2UgC&l67R{uU_6ja z;yjS50{K(|ySkcAF5Y7fh=BX=FDBEgE4GC9s1bpXyy^&Z1;VLvDTttUkR}LRYeNd@R6VUfQ32hnI_R`vxj~k| zw(47|f>i{nf~~q`X9$%32SQf;6;>9i<5#5!bOu4`Kjh!hxRWFSci<3o20`gRr% znE)Uhg3f;+DE)`(eWfzL>GQwQ@V-JEH3ng>|9kt}-$`A5bhHFNAUd7z+vt`x2y^}K zM-2>;A1|4MMEJPgX`oxiAUx_niKoMt&A}1@S%*+#5FYhEr2i*U(wqz>+@Z!GJnFw9 zNST8a!Dtjd8iWL}(EkuGJnsKn1;cP*5Pn{d7y51=s+}@72S$S7FkBdf`02V_=>I@s z3LRw*wE2vYbx<9tf@Oc8^gqT3?hLsq?l8z$ZxEFJ-;g<2!Ei?&;>KhUU}fg!;K7vt oF!vBiZpF07*qoM6N<$g0S;;-T(jq delta 1305 zcmV+!1?Kvs4f+g_Bt8yMOjJd{z`#e5lwP>FFK%ZdO-UjkA=<-|<;|HaC?|=DiOjZ$ zi+x>D00M0R1F*2LSpfr+gkp9P3~>ktk!95c!ByVRlRg1~f2m1CK~z|Ut(Og3+DH_I zlT3&!P73)zG$^!&wxH2faNV+019euZv|6>F|NoEl+yOO^ne=&fJD3nSGjHxB6VA~v zerq$S{U6<;#(tse3Cywz32Y9~p20R5HPhAth+q}~?2@zMl;R=e^Pl(qp#WAbzN?+YV>E7YPsx`%hige1Lv;ic`oPA)Vk|>Ae5_~@2Yj5 z#)F{I4eo)kR>hv{bex06t92tF0=;;k)I;w1RDj1rrOvDxO%hYADVI{X&Ltn0aa~2g zGOJk@=iI`(;#RY;4ubFc9$&AAiZd{a)v(ZPEVUX_f0Ph<0Qk5FJ^)_61gsGjpbBQm z_go1qbcujVNaNjn33v_yT50rW2l?kAq#IBVJ?@2dTu3)pg3as=+cr)5!%=RzhI9-0 zCXcYuh0FmOTiY9KUIE+K-fH9k6}J*LTT!bS;wTSz-gvQ%OR&S}dEb7~c)kp%R4RP4 z1wd<)f8%%=5Vv2xdX1Z~vqMjO=he%0XHoBRzPp#~?(OgGCVRV_cjG0%LA(7YRe;-g zcy!oqcd&m{50B!w+wH~uUTns_e%$MJ<3&K!JU%!$!2JKhc6jpl$qBX$AZj+_IBsGF zCgvcIo6!>B`1sBIHg*R842IaACeZ-^BU*Dne{1$JJO1tI*%<+F|4jzKa5&5Ypr4*L zX&3;sZ{qXY3?c1}#^bX$SOE;Ldx}@%g`uelKw$E)Fj)u%#laC!*gU^@Sm@?+aOhcr3xV zf4rQG&)?%35P;e5&&QL?OJhM##AwtTrACVVNF<9owX3V?^uvd#LA&YIm9g9=6Y(+q zcx_x`FD8?mZWuS8KHW@jjoT?5D0Ptv=-4ZD6>?(W{WzoUcyp#Q#B6aWgtfo#%% zwY|(jZ>DCOg$ZJ&YQ1%4zZO=jwm!zJe+@Tk~< z;GrrYNdJfZn~HRj1uzo{K@||B|HJ;JH|YTokq}e?LHa*j?<BPFa0yKr4wT~!gQA1%NEIyR1L^-MM`m!V87tc@ zCYh=Og7p7u3I_#*TgnjEx`2QvGYbdzy7Bk343W(?%RQv|>jCqOkZnH!Pkp^Qcx3sd P00000NkvXXu0mjfg6)Iu diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_shadekin.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_shadekin.png index cc3adf85bc3292e25c096bdca397fde59997ecc6..2224c3bdab9bcb83940b026ff98f52f633f6b905 100644 GIT binary patch delta 1177 zcmV;K1ZMk)3ziFzBmsnxB_$PyhX5897L>oXtgHYT85xO*iNwSJky%az9(hVKk*k4! zPf0{UR9Ja%SV3i$yeiAG;w5-73R!C)$Z=qn7Tyn-7f7m_l z6#k@lIqo%;j;%iAxc5pwiTz&g_rhuAeTF-MqfBVU==UDN^sDhpXGRa_6<)wj*7^IdU+?D&yPWAs zmS4^TKVPz(eZ0Sae0;Lc4|?){IG2(RM`m(1VoDkuTWfD^St)UUx=vXaJrqV5(b*_=YyAY z!i~`k z%{|9p{vCS$dQWAeMYkOEF=z z#7Arhgf=EJdMsa7FxY;$RY4dhg+&F;AP}g4O#ze;27&n@koi+T4YvdWt?HJO9GQQ@ z2zy%qGjF09VGePBED3$Zqr#jo4WY0{k4}=7XNZBHyDKXDfeFzz9S(S=lL>gvt^>1eD|{ZsrdP zF>y(&%W_JFh$)Svc3RvgP*7`?NSeyWh74R+bI=KXr5NUoVgD6=R-#RCeXoG# z3FP|AxY4oFTRr r&~Wg%hCinnVm(IlUl*8WgzNYZ3NvW}iFK9000000NkvXXu0mjfxd1K9 delta 1163 zcmV;61a$kB3y2GlBmsVrB_$6Q78aDhwg3PC85tRgiHVV4P6QtYy>5}QfqzFyL_t(o zg_W0$cAGd5h4n8$iDE#2R<_fPn>xw+zu?{h+BzVxSLehg{xsJkVa**FV_XQS*m5W# z1Rt;NamKVVR>*Hy3Tu>pkTX^&W31$V{^!yfqlz1@R$Se1%n+DiIU#zn;9|+m4#x~i zv*cA-mK86-iv@?o4M+HQK7TF4RtU9aWsO>4R!9Y2S}0g0*PJoOpR9RS&seQ@Iqo&3 zj-@{3xc5rG2&JS_!fEAwhC6|+Q%1aGxYj}*>P8ABWK(M?v|ex}b=`1qPFyWGMpM@Z zR&&8?#_GCRr3endIrt&RX|y4D??Y&_l(8kFdu9fB2L+6_%W)Qm&|^{p?8A@|7(&~%U5CGRgC~F? zB8fJwXNkN~zK!;xWZ<19c|D*=2mtpICaYtB+k?2o|s--_ezOz}uz#aUsLPqRSs z$}CSyVFayy+{3mLD}T-!oP!iYNFl_8^RWD>H9~0G!It(>ixp?J_U?E(zyA35d^$Q` z)Jrb3JDwHl!TEf2S}ZwcyfMmPpbXeso^w+_rjZDJU*zmkayBw&@^;&iVgvY>lx zR}h~>b6+4a`jHr$@d1=0inq$&7bw^9P$A=9y1u3^<<2B-c*p!z(!$Wj@Gr~;)PDk)*{f`jNK7;^|~T?FVL7A)Rrw?3gHUH1g8C`faA;3;m&NAurNxK2I9-UMn6KDY4a+(T@S$^5qk d<{sg8{0HOyVUOWvX%7GZ002ovPDHLkV1l5eGcN!D diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_skrell.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_skrell.png index 4e90a6e43cacbb8a945ac29f0afb128f1e41c292..5126b1453700fe8fe86f9922ace59bc84d277089 100644 GIT binary patch delta 819 zcmV-31I+xu2=fP!Bu9HtOjJd{z`zh%dmW+N0000So79xQwi$`LiHV6Bi@q6%xv;RX z7k#P~a-18J$QqHxH8??zkdqo3Ay!&rv$L~wcYt?$gOO-34GAzp3`1KIVuq}yUtp1< zfPVtDNkl4I)ZvymyqTkU-39p3ZtR)1&HHc#+m zog+`qS@Kz3TZ?#WbwPIkIK<;U;{n}(0MjO?3-8FnDL}O3G5|-~Xk+lF3wnUyJd)5M z^@zGPNB~=r(UGCoeg^PW0>FQ!6<`e_)kW|@yaVE=M8~%?#Uq78$2n6n%zz+Oa(^CV z^T4Z*d#KGrdR}DHso;qMkq@d%0ZK~VLCyOp@hJfyX16~aAAcP7JDDCR**(eK;ehDF zVJDw52L`2vGjN=N$kd%#r;^Ubn@BGEl>Cv--?hhGGEd1*K-8;%AaW1MI{?{-%ro#0 z0Tvt<0Rc9>d`|EC=jUGVOaCeT^ndbl>IX6Oe38|MKI;9D)y4UAI-f7%a^{Oq=wHU< z!T_+StNH-I^FdlmKE$`>?kc;sPLS#rfbxVP+eN?%4z&!L1;9P8q1lx5O^mN@!u@qy z&tQAK7G+fI;Bi=MH-PK|ihDL5of}oVQZuI(Z48=xhJbkVZAUc%$D=G8oqr*q?;2Dy z3JfU$ICyfh$&|uv3tI5FMFl{{2X6FmPcw*ZpO!M9X;Mfs&=EkKKox)#C;~oi0ylrI zm$U>R_Oj_D$IU;Cm%%HB2?pNLOGrZ)%ZxL#s3E|03~Ut0R|ML8Xz|R x3SpRLgqi~n2bYq3nP-TyP0haym}i9F?G1_9O8{M4uoM6Q002ovPDHLkV1goZgY^Ia delta 897 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 Di}`~G