From a2e1cbc7f678f651356359a13ac632952dbd8f0a Mon Sep 17 00:00:00 2001 From: chris48s Date: Fri, 3 Feb 2023 03:16:45 +0000 Subject: [PATCH] add visual regression testing (#132) * add basic visual regression testing * store test cases in json array this will make it easier to test URLs with ?query=params * Run the tests in CI * add a test case for FTB style with long text * purposely break the build * Revert "purposely break the build" This reverts commit 6b0d8d7e0af1025b1a474ffb565045f83b818733. --- .gitattributes | 3 +- .github/workflows/pr.yml | 43 ++++++++++++++++ .gitignore | 3 ++ visual_regression_testing/compare.sh | 33 +++++++++++++ visual_regression_testing/package-lock.json | 46 ++++++++++++++++++ visual_regression_testing/package.json | 6 +++ ...fffffffffffffffffffffffffffffff-orange.png | Bin 0 -> 1375 bytes .../build-passing-brightgreen.png | Bin 0 -> 1747 bytes .../emoji-\342\235\244\357\270\217-blue.png" | Bin 0 -> 1446 bytes ...\360\237\207\263\360\237\207\264-blue.png" | Bin 0 -> 1515 bytes .../emoji-\360\237\221\215-blue.png" | Bin 0 -> 1451 bytes .../emoji-\360\237\231\202-blue.png" | Bin 0 -> 1489 bytes ...273\343\203\274\343\202\270-lightgrey.png" | Bin 0 -> 2075 bytes visual_regression_testing/test_cases.json | 30 ++++++++++++ 14 files changed, 163 insertions(+), 1 deletion(-) create mode 100755 visual_regression_testing/compare.sh create mode 100644 visual_regression_testing/package-lock.json create mode 100644 visual_regression_testing/package.json create mode 100644 visual_regression_testing/reference_images/FTB-foo-barfffffffffffffffffffffffffffffffffffffjfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-orange.png create mode 100644 visual_regression_testing/reference_images/build-passing-brightgreen.png create mode 100644 "visual_regression_testing/reference_images/emoji-\342\235\244\357\270\217-blue.png" create mode 100644 "visual_regression_testing/reference_images/emoji-\360\237\207\263\360\237\207\264-blue.png" create mode 100644 "visual_regression_testing/reference_images/emoji-\360\237\221\215-blue.png" create mode 100644 "visual_regression_testing/reference_images/emoji-\360\237\231\202-blue.png" create mode 100644 "visual_regression_testing/reference_images/\343\203\251\343\203\231\343\203\253-\343\203\241\343\203\203\343\202\273\343\203\274\343\202\270-lightgrey.png" create mode 100644 visual_regression_testing/test_cases.json diff --git a/.gitattributes b/.gitattributes index 07764a7..d0c0c4c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ -* text eol=lf \ No newline at end of file +* text eol=lf +*.png binary diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 1e1201e..1165ccf 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -94,3 +94,46 @@ jobs: uses: actions-rs/cargo@v1 with: command: build + + visual-regression-tests: + name: visual-regression-tests + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Install Node JS 16 + uses: actions/setup-node@v3 + with: + node-version: 16 + + - name: Install jq + run: | + sudo apt-get -qq update + sudo apt-get install -y jq + + - name: Build Docker Image + run: docker build . -t squint-local + + - name: Start Squint Container + run: docker run -d -p 3001:3001 --name local-squint-container squint-local + + - name: Install testing packages + run: | + cd visual_regression_testing + npm ci + + - name: Run Visual Regression Tests + run: | + cd visual_regression_testing + ./compare.sh + + - name: Archive diffs + if: always() + uses: actions/upload-artifact@v3 + with: + name: diffs + path: visual_regression_testing/diffs + + - name: Stop Squint Container + run: docker stop local-squint-container diff --git a/.gitignore b/.gitignore index a9758f9..04a0b4a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ /target ra-*.log rls*.log +visual_regression_testing/diffs +visual_regression_testing/node_modules +visual_regression_testing/test_images diff --git a/visual_regression_testing/compare.sh b/visual_regression_testing/compare.sh new file mode 100755 index 0000000..03d1259 --- /dev/null +++ b/visual_regression_testing/compare.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -euo pipefail + +rm -rf test_images +mkdir -p test_images + +rm -rf diffs +mkdir -p diffs + +readarray -t test_cases < <(jq -c '.[]' test_cases.json) + +# from this point on, continue even if something fails +# we want to continue testing further reference_images, even if one fails +set +e + +exitcode=0 +for test_case in "${test_cases[@]}"; do + url=$(jq -r '.url' <<< "$test_case") + filename=$(jq -r '.filename' <<< "$test_case") + echo "Testing: $filename"; + curl "$url" --silent -o "test_images/$filename" + if ./node_modules/.bin/pixelmatch "test_images/$filename" "reference_images/$filename" "diffs/$filename"; then + # if the images were exactly the same, discard the diff + rm "diffs/$filename" + else + # one or more images has failed + exitcode=1 + fi + echo "" +done + +exit $exitcode diff --git a/visual_regression_testing/package-lock.json b/visual_regression_testing/package-lock.json new file mode 100644 index 0000000..19cbc71 --- /dev/null +++ b/visual_regression_testing/package-lock.json @@ -0,0 +1,46 @@ +{ + "name": "pixelmatch", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "pixelmatch": "^5.3.0" + } + }, + "node_modules/pixelmatch": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", + "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", + "dependencies": { + "pngjs": "^6.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "engines": { + "node": ">=12.13.0" + } + } + }, + "dependencies": { + "pixelmatch": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", + "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", + "requires": { + "pngjs": "^6.0.0" + } + }, + "pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" + } + } +} diff --git a/visual_regression_testing/package.json b/visual_regression_testing/package.json new file mode 100644 index 0000000..d40d4b3 --- /dev/null +++ b/visual_regression_testing/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "dependencies": { + "pixelmatch": "^5.3.0" + } +} diff --git a/visual_regression_testing/reference_images/FTB-foo-barfffffffffffffffffffffffffffffffffffffjfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-orange.png b/visual_regression_testing/reference_images/FTB-foo-barfffffffffffffffffffffffffffffffffffffjfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-orange.png new file mode 100644 index 0000000000000000000000000000000000000000..f10d9acb27c4859f6c2f3011399e1326b86d4630 GIT binary patch literal 1375 zcmb7^c~H`67{`BRxr#>zTDwNs;gM%k+Ngn8iU(q30y=ms9h!!2IGU#6v6H4{Q*5Ys z;C+l~N@iB%L5b_Kc;=CSh)Ct;1!^iLdF-!$`eXmwd1v0w^ZfHZ&v)MMeDC>SJ#-<4 z5C8yl(Vi$@08oztYnbLX@P6vog#e*(8RLNhw!WXzw(2YZ*rAU`oyEr&$|aO=LM)88 z*iZRv)54MmWL?v1KhnBMe6brplpkSQKB9gY+T>I2{5Z#johVGbdq`ujSTn26+uVK6 zh3s9T@XN0uFOP_#rcsfBBb#HtDK^E^?GNPGc}3sK*hUNW&B3B?8ym?bOYqf!+?aVM zL8PRaFw|4sZF7EQFSytQegsbe3E1w}H31P+R<<1gez&yC2Ailm>3cx1-uZx1-WnKs zfeqWmRSSea0&DuqmCVe{bW&VwZ1C%7leof?lKItd*4<<>d1iY09w{f}n64F#k?l#h zcI%i~#|fw&=NA4U51bSYc9w*S?OAkvt?2-!ss*ak8Fby(A&-sJKX)m*HkPZ^-w=hq zfBy#4pRS?~kJF3gy;G|pUpj2(Gd0Z$7tng=yByZ4Vcm@n55VJ8%hSSc27}Sud>S1g zU`ZN7F-b{DadFC8!jp$E$3da+XJ%GNc+kU5^DqS>W`X%Aci`>@|LiFN4c}E_Z*Uyl zNK*`SlAuowGe=2;8d=Eg!+hj&(`Fl;jTGi`KjCN7pv9MD^n}SYh$5#_+j-PTe!gFM zb(wl{O_qPtEe(qOYMfy2nN^!$C>>?rt$Bi5eOjI;Z$3dLFhD=FmWqay*Uc zA%DxJ3(1sc&hZ2jW^cNnCzB^C0Zn6biT&B~hAXQAc@o{jZPS;io~7vmNq+eRe7L64sJBnM!frIKBq&!|i z8{Q{u$-ASUkJ5M&DUQ#BzvjuH!+W z((4R{C^zMP&bdW*v~pf*A*5LRI{YR2RFNSu_La0X!JWux-fDakABLY8ORx}G@wc-? zixd*~mRA<2m60KhbdQ90{AVsqPcSm_m;Y%v9D~7pwA9{fH8nNmiOjxQRIii;HzKZX zh24s*POc?P6x2l;I34CA2sMt5bniuXIHzomLlzj>GfDo8s<+aLZEzc5#!VB43qK|X z9z-`D=qdCQ_cbh-JDSTtbD(8c*eg7ZBIguNY3aqU0_o)Bq(mZl#yY|GDM*NU(da_E zj_V6HoEtjx%6P5&Q!g$eHDLcTZ*``*mTKguSbszisFNM8rTAC0Zd>XJ?D`-=zeQOD zn5E>KQ?Y|=(yRv1gTl`Hj9bC<{0Rj4cpF?Fl7J`%?G_yDr0^+_5W`=#)rX_x*2)^P z+fh)8DOxGW7#3NeQ`Md)(+&ztZFwH`8!}gG^MNE<-U?NYgFbfx=){dWNG`@Vup;>8 zjoMf0fTyzuP1noD-rnBufu4>|rCoMf1y4gQ&)kaEirn$d;9%iQJph>gSuZVv#dXY6 zV0vnK*5$ibHf-NB0l@nZ2dViz9m0>Pf!PB2f044O?wV6P;x)2Y9ee^nyJ1l*my5Um E1qmpd(f|Me literal 0 HcmV?d00001 diff --git a/visual_regression_testing/reference_images/build-passing-brightgreen.png b/visual_regression_testing/reference_images/build-passing-brightgreen.png new file mode 100644 index 0000000000000000000000000000000000000000..7356a38a058637f2d99151ee9fbc8f0b649dfe45 GIT binary patch literal 1747 zcmV;^1}yoBP)W;X#!~)RMXUcV5kd1Oxmc%fQ)JDh?X(!OH);pE`y5 zoHSlyAduAYzkAO z0Jon#bH6G4PmmCn(4LI^d$$@01YVRy;ZDA@tH3CCGU5t}ijGXQkijVEFy)<=;n;XP_mR)4$D28y4{$cpNu~1OxVV_Mwl=!Dx=5u`)3V$&%`9PN zt^%*uOE4H@`}XbJxN(E>@^bd>-8*lA0gjy6&!y|{@}P4mfBaq-uMM^nZ2K}%<0FKC zrrIC!)$%5O-TPA>E8Kt@bI|yQClCV43#v#iO|i!Jq@`Vo39hC@lCB^B=MmoR`2kBk zH5?7T!kR!D-ojXR3y~=fRXcW^lvp!r_qE4*~Auvr7MNusM z<|+WT{ItKKgQjX!Xf-rf?Bc-d&$IQ&m-xlso=<0>lzeFR@XaG@c>C&`tkCLcTYm+V6)p0s&zumEOQE+>0D7!fz#`00WHMSx$$OEvs4ZPfjr;R>?S3|tHq1JYS+@w&G-+*Z zC6P$r^ZD4bXU}Bz9zTAZef#z?Ha5nUD_155nfXRD^-w6psZ*yoc<><6Xq4XG-mDin zwXYRksym4y6da0^=l;5#L9K_a%Uk%}hO?+bBXsK;x5sZGrNqZWw5~nDVC*`&;^4jO z=ja}KhsTRITG|!o6j90E@-olEB1G%S-R!JCfGG^l^>qUZwkLDzK*!yq1ylS-xV`~6wt zTHU6d+B8hv0WXDlK5mXia8=t-^8}-pC8Y&rM8?7-Z83xm+{;xGBPP)vNuVge*!U<3 zEsE=5mBejpI|3qaCh)D%KCZ9TCdZ%J79TblA55Q+p88w^o65ey-o9t71#W0)nDc+B zVHhZif)HYwJ#%_c6lJau3+iJf@Ec!=u<>;tW>TWqr|^(q#3hO*5HmwcFq0Bt6A0Tp z?DIrxZ3hxb(oC>4e+55!J>9kmStheSE&z%S zAh8N5?AC3$?DN5{zdS=lVHHUk=W74^Xv>nQQds(`Qpzw;vhZO(IamqYTX-SoB?!N&hp2GAPOb`G7002ovPDHLkV1fzZT#^6) literal 0 HcmV?d00001 diff --git "a/visual_regression_testing/reference_images/emoji-\342\235\244\357\270\217-blue.png" "b/visual_regression_testing/reference_images/emoji-\342\235\244\357\270\217-blue.png" new file mode 100644 index 0000000000000000000000000000000000000000..a69537f5452542098967aea4b560256498e8e3f1 GIT binary patch literal 1446 zcmV;X1zGxuP)IhFpAorV5r>fAj9IUvQ-7 z2!Y0Wobv*dtAZC~g10UnD>?Us4pLPWpU+1kk-)O7qVdYgN)$yQl}Z8N@p#B)vy6<4 z6k?oCCvLZ!{{H?kZa91PET>MLqPn`8bUMxQ<;$5fXAX*@jHxjZ$7eDzJQYr)X=0rF z5dcjUygG7~$})xArQfiUi97ucL1VJF((top%7cQZY7h+uw=;+cI?15BIJqRJNZJXNK+A)N$U%!su?`LReh)gEK;NT#Bzn^3>iOc08 z7z}dp;zi2J%Fr~83l}aB2m~lAD?>_2RaI4y08PFF1XH zEXyJqjdJkd!9rg)n?+UC|0X*eNGTCQAcR0w)iH(h`FvqaN{Oav0NA!YMu_POlm|K< zU&#l3-;NtMkdV^Yik+^5;Es#ln7@hd zdb+7IZX@m*%h@oPlN{4upF1fC}uJld_Et;!^7lqIcCqEO)M6}?RMjIIssU)U;*patz-ZG{Y5$N z#$>+cb#sUle|$o{aT|cV4TGlSb8i#xKf4iojC2!2ghHVS<+N?PaFvxd65I=Z{NId|^dxbr9bcZVlG!e>{%VrjaUOddM*m*{$O6>7A6;0D76ksYFlSARX+E+#sOob*0@s|S#ODS8YmSO4`y@yI!{B)c< z9S8_JOw-)`@B7RqX4pxkV#Wm$B8Dx)(o)~~2bsdvH=QMOn*aa+07*qoM6N<$f}Hof A4gdfE literal 0 HcmV?d00001 diff --git "a/visual_regression_testing/reference_images/emoji-\360\237\207\263\360\237\207\264-blue.png" "b/visual_regression_testing/reference_images/emoji-\360\237\207\263\360\237\207\264-blue.png" new file mode 100644 index 0000000000000000000000000000000000000000..547f0d375de4f3f82e1709e6ff2d266aa8d06bd4 GIT binary patch literal 1515 zcmVNYh9Jc1#zMBB555LN_cbs}h@Z7Nm<&MH4AP5gCwG+F?>cn6F6Ki|7ukQh?aacEkHBRxIa_xPOu`Q3BxyS6xW>Xa)IiF_i2xFDr$<~_7eJNp`( zQ6!{o$Cgr=kF`i7@`;qPUrO0v5u3NhYm+Sq`oqQ!G~2c>G&uV^+jdQ!l=7$A`?{>& zv~BF}i1t1&t##W@joS)HQ4};yqf{yZpzAt?LZQZQGa7^C9N%1-BUD~x=7W!z%aqum zJ4p&RmQdb|MtgdW6@3S3cc5!G3N@fr0NK1(`u$La?A7`xy;npzEf9YT|la; z5)Ox1T3W)gteSD3&xfKYWHK25g25ogVv&44U-fY~90URZ78e&c6gxRN$=KK!&CSi2 zrpeKxN7=P&7mA{6$Wc$@_fvl%fCaV>$B zI&$O)=gyrYkw~z6_ijc;Mu^Ab0K{T3CMG86=;$CA407+@J-WKO@caD)gF%LdhKR@G zoH%iUo}M0($t1yGkm2EBUc7k0@#DuibLI@0OooAh0fZ1dc<_LW7cbUKM7=^h z;MNg_0a79@d+mA!PTKbCyCRSd$JPKDhCy#{FPAP|qF5}_*4D<28#lOi?ON3*7K;&& z$2oZLAcKR0T)A?E+1Xi6pFYj8W5-CPQuOxr5{*X5<#HT8e3-tzJ_ZH`7#$sDdU~4v z{{9U@rIalI?}-OI#xFEE)Ayi8|#{Mi%CY=PgO`5}9{e!$md9#3Hv2_&6f#!Q9z zFU+k0>g?>q;c#&M`gMd5*tSh;YwHHVb8~YThCw!)C6~*wva*6<7^Kr_yk0LI9UVM* z@&u>TiLUEBe*BoWwlR0whR_^20}z$H!5nWT*WqZpF4KS{1zC z`w$t~LI*7^EipVi%*~rOSzcZy91b%(JIk$Gx84fqZTDm{$=$nm85$ZQnM@K01Q;9~ ztnu9{AZ30IEDLM>Dwke8wd_}$HS00u+9oX}ShacH36P>FOifL3_Uu^gN-wvD1`tgdFMlva6}GbvRnYtYx0wJj-0Nz&J}^~b!+<-#xw zY}>}?^KDob&CSi#*NUQG7)JHI)9I{k#BR5{dP3g0b0+}%_wVQA$&++;b}}+D^46H| z0%$Vw4VK*j9){Xk_5?_z9F#rH{8D~I`>s46WETk)Ggwma4^NmswtR~(o7y)8Nc8md zH2f&7sw%Cmt<2BQW11#zxBDyo8~=aMYty8Z381#G|BqHKmwEQ=8LFzH>w4Xp+_s-X zLM&)NOiJ0`=-li3&}NF?EuW71N8{x9Q?L?_+H RrXc_T002ovPDHLkV1l^2*3tj~ literal 0 HcmV?d00001 diff --git "a/visual_regression_testing/reference_images/emoji-\360\237\221\215-blue.png" "b/visual_regression_testing/reference_images/emoji-\360\237\221\215-blue.png" new file mode 100644 index 0000000000000000000000000000000000000000..11f3bd396cc1edcb35e98dbde2c93c03e2626eec GIT binary patch literal 1451 zcmV;c1yuTpP)X*>E^J0)K8MEYA1?3X-gDmhan3#Oik&-mmPMn{P9a3AQfe75p}wg*vPhmpN_k#< z=;7#bJsOR6Dy7<#Qj6q#@wIrdsTu@rmF7}(&+}Rr$?J2|Vkbo@bwGbv%lm0PhiZ)K zFLQ}cYQ7j(8GrHVnzLNXtfqVL04{P~pDz?#N{O!P(|rS*@;q$Kp?=`vu7zUFE80otn4mA2!xb0EJ-fN zW?pb9CDql{NGWHW4+evTLZRYwI2^|B_fJ`)>pE3cRmJR0j;mL%(%RaJQi^Og%hs)1 z86F-k5!~aQ>OK$xH*ayrjxNY<&Qjm9Wea=v?j@BNY}-02n=0;Q3jzf zZr#`ps}%$nwlB_1_uY(w{IWOXcU0n z-d-+WzD#9hB^NGSAdyH=U0qEol_DGtI4+#j$PrCRUaP4p3HBhH093o=16kd2z1-EL*m$crT^IG|l3(VHm{* z76=52C$hY$Y`1tUmm zRO8q2RVYdXpOg?{#sEsu5KcFulH>qa4SfudfeH(~76Ox%BLO&NWD68cAdt zktizkELHjl<=O;(kw+6QewpXm*qbx^7Gh8b;!3HuMdVtLCinS5s%Wk?F7U_+@yH3y zWwlP?@ zl!>hF!hoZq7o{MBSzK4xWWBIh7+%$RF}(=PUTk#ys2gNtd=3cHmwv>|p>uGCiV_;waDJ3?Wjq~Tv<8U}u zwbLmOYWaxZv)^NJ3lxWf>Qqo23W`&qp&`Y`n?57x`KF?eRlyZSp}xKzMN!JO+wFFo zPG{-6%jLpqwJzzSX&QBPb*0r?d`3q{>Fn%8N=YJ-V8@Of%+AiP3f|@YikF`J1yQR| z&_UD+lv)MFu8`LR!ls})1gBd^XjY?TeXN-3+qZA$@ZrNmA`zOJniw7)CL9g}5DJC3 zdi5$TEiJg+Zbn8%*s^5{PNx&M+s)wMAmMPBy?gg^=+Gge(I{@Wo1vj0?%uu2?%liT z=;$CGkJH=Rix7ejvXVL&Eog_Id$q3$B!Q`^$CSSgu`JrZ{AE_ zUmxAw-HeZq)85|Bu3fvBnwlaI2oMYgNu^S3+qR9at}c3ed%1l1GS{zPr>Cc93E1L_ zR07v2VAvA~O-JYguOVo9Vxf>}nxM{5XlT?BngC6()BO{tqstj9g15G|qU$;*Po6{w zfoYmFH#aW{G3<6bEiEnFym=Fg#e&sp<;IO0`2Bt? z77J2JoKEL5u+_k8M7C7N5YX4#_}8T9f)59pK!Q1M0^rsXWs74)@M5vZ*w`57&Ydg$ zmd$2SRrN1pO+!kF5CS0ts;Vv-q);f7+N6|NtyTa`(_8}hFyMJqWKn`Ckp;=Gkv!|y zTTt%L#vjuKYIH#@0!&C}%AX1q!NcJ&!C(-N$HV00Bmf&WY~aqFJIexkuxLD}Teofz z3)wr<_Z*w`4EOr|s$4+}mob>=fVj+{j1Bt%d=oU>=omIW{O8I4A{aNz=jgM&n)QCuz; zeSLjpCvC0Z0GFm-;E3%9&@60d(&<0$Bb}32bb$((8HqVxq!5eq>CB$8;G(0WqheXl zWHQ9#aSX#Ckw{Q17V&sI07N1Y8XFh(SFu=RdU_h4&j&1QiBu|u*Xw0|ex6(|M}2)g zkw^rW%Z08l6r)X>HgVv<0nVH`v&`p%`up426IzV#U;F@wH58l zy_RmYj`R6*pWt6N141Irg?*1{VoLbpZX4YbZzWnBbbOW#Ubya2&M{fNb4 zOiWCWNF=b?Y%AK98}~-q&(@jZhly#bHK_xuvU)0zr6{7;mNfg-00000NkvXXu0mjfANSjw literal 0 HcmV?d00001 diff --git "a/visual_regression_testing/reference_images/\343\203\251\343\203\231\343\203\253-\343\203\241\343\203\203\343\202\273\343\203\274\343\202\270-lightgrey.png" "b/visual_regression_testing/reference_images/\343\203\251\343\203\231\343\203\253-\343\203\241\343\203\203\343\202\273\343\203\274\343\202\270-lightgrey.png" new file mode 100644 index 0000000000000000000000000000000000000000..91648e534e1164e832bbcd0be0e944fdc32ad3e8 GIT binary patch literal 2075 zcmV+$2;}#PP)tFx+{{LI+pEaW@EiKjB?e@P^D%Br^kOch1*tKidkEZZXV^Wso zreHAmCu6tU|00A`5kh`6sa5eSaQx12s8p&dlgR`|mgPTwG@G^JHxvp0KnVFa^Rt(` z&+)qo1;EbyO2Pk1T)#I~70PHdg5$WDN%H&sU%fC*({Q<5n3$M=PN##z;lRYi#ENs) zDwJBS2FtPt1Oi{p4*=G!TZifC>2LP46lSwI!ly=~QSvc1HWqWvszPOEW}>L5C@M+8 zU=Y`@Utg6}c6K)6FGgxdwWzrMNx>0i;L=axm?({Zy#D)TQNR9j)H;$w6(RNva%9=eSJ#Mgb>Wn&w~(x zg@px(qPS{8VvU>4W+W#k&?&4Lli~OG!35T zVYOP3kdOes-ygBwmp~8%T)1!n<>lo_N=m|;H*e6@)rB29cHs8y+pt=#U>GK9-ikuy z<>g_^mMxGZDQZluR%38*5QBq*N}ttg#j#_@(9+U^BS(&)zP=ufjg45pem%~dIRl>O z69z6J}Q?_&G zPIx>X&@_$q_I4Ny2AE7HSS%Lw_xGcys0gE@qcMH2DAd^47$zqtAv8JTDO|mJ6~n{B7#tkL`Sa&dS67FTkr7xdmIwkmoerT;=$nO-Bni#U&2YQj*t2I3 zBuT=}n>WF-Y?QqyipuHRzI{7rng&Ht;5ZI`zaLty797VRH8m9;j|YMvprfM$-8usEX3H@7~Z{mr)+}a;$mntnq@i9&(A9*xTB*3<>lpYI-Th4?Tv`3va%Ahv$M;_ zxuQ^lAYgiWI;x-Nc{m&n3=9l_VHjw&TAVz265ZY17#SG>%d!vz0W~!>sHv&JxpU{> z@pvM9*ladTPftgXTKt`#pAVnUhu5!PN6d-Em7*v(olf|CK6t%eq@|@HD=P~xU%rg8 z9U2-!PEHOC1_K%!8xa>5hn$=o3=IuIqtSp6g12wq;>nXI(ChWE*=*o>9u!5v;cy@? zFAvwQT|+`bg2H9-RL0uODwQgNHz5S|_4P1g%yJLI`M@hS%#wU0ofjtE*wR z+arAE=jUU1csOd!+}vDLR8(MUYHC?tOB(=GR8$}o3Zb^P7I}Gj*t~gjl-1M!-o$Q8?9Cgr_+h}`1puKzk2lw4Gj&jTCGt&XJ%#~2trhwot=ds z2#T#nqd{tFDrlMpAp|;|4rOI!U>F9sZrxHgK&(c)-R}RylrRQdE*Gk+tI^xri_XqY z<)If02GQN!4U@?fVZSKW!omU$A3lt}zCO&&&B5hzVgLU9xN_x+QhEvt3z3qNg5u(0 z96x>>3kwTMq85>smKMdyVzFTN?%kN0n!=qscVM^M(b?IFl9CdLq8L#TG#U*I1_J;f zK0Y30Wo2k?ZU)0JQELHz-yT1H{D@#M2%4s$)9FCdbcBsYqgk=3)#@m}EX!ikrcEd+ zDpD?MNl8gDIV@sLFTA zjnHbfUraI_4nwckgAf8)mLbcs@(}*?>66kpj$3wTE&X~P4u>&2I}3xs0JGT~F(ye8 zD2j^mm7bmsv)PQ+)>c?7mZ+QI=MV$|!C(-HiHVS98FO=U5Cj2Mt98YB%Rv-HXfzr; zfBqasqY+lCHRg$n1yw~w#i~L{k_1VTR=nMO31nFYMNzBvEyYryBuN4xB<6d^atH(h z2#3S4+wDeyD2h@p4&MW@%37?x zrC2(?DD0Q;GMP-uvvjSoFRdWol843H-k17d2qBXI9ACZiKZxJ>qwIef08NCDsvpf{ zE%=RvYGOoD{F7lA5JLWipZsL~ZbGS4s!2jf6HU{n{|B8r`lU%%7cT$+002ovPDHLk FV1g;)%aZ^A literal 0 HcmV?d00001 diff --git a/visual_regression_testing/test_cases.json b/visual_regression_testing/test_cases.json new file mode 100644 index 0000000..eecd24c --- /dev/null +++ b/visual_regression_testing/test_cases.json @@ -0,0 +1,30 @@ +[ + { + "url": "http://localhost:3001/badge/build-passing-brightgreen.png", + "filename": "build-passing-brightgreen.png" + }, + { + "url": "http://localhost:3001/badge/emoji-%E2%9D%A4%EF%B8%8F-blue.png", + "filename": "emoji-❀️-blue.png" + }, + { + "url": "http://localhost:3001/badge/emoji-%F0%9F%87%B3%F0%9F%87%B4-blue.png", + "filename": "emoji-πŸ‡³πŸ‡΄-blue.png" + }, + { + "url": "http://localhost:3001/badge/emoji-%F0%9F%91%8D-blue.png", + "filename": "emoji-πŸ‘-blue.png" + }, + { + "url": "http://localhost:3001/badge/emoji-%F0%9F%99%82-blue.png", + "filename": "emoji-πŸ™‚-blue.png" + }, + { + "url": "http://localhost:3001/badge/%E3%83%A9%E3%83%99%E3%83%AB-%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8-lightgrey.png", + "filename": "ラベル-パッセージ-lightgrey.png" + }, + { + "url": "http://localhost:3001/badge/foo-barfffffffffffffffffffffffffffffffffffffjfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-orange.png?style=for-the-badge", + "filename": "FTB-foo-barfffffffffffffffffffffffffffffffffffffjfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-orange.png" + } +]