From 63041666a7071e4da20206b2c691c0ad24079ce6 Mon Sep 17 00:00:00 2001 From: gali Date: Sun, 15 Mar 2026 23:15:02 +0800 Subject: [PATCH 1/2] feat: Add functionality to skip empty YAML test files during loading, improving test suite efficiency --- .../Services/YamlTestSuiteLoader.cs | 25 ++++++++++++++ .../YamlTestSuiteLoaderTests.cs | 31 ++++++++++++++++++ .../net8.0/ApiTestRunner.Core.Tests.dll | Bin 29184 -> 30208 bytes .../net8.0/ApiTestRunner.Core.Tests.pdb | Bin 25308 -> 25508 bytes .../bin/Release/net8.0/ApiTestRunner.Core.dll | Bin 70144 -> 71168 bytes .../bin/Release/net8.0/ApiTestRunner.Core.pdb | Bin 37576 -> 37700 bytes .../ApiTestRunner.Core.Tests.AssemblyInfo.cs | 2 +- ...Runner.Core.Tests.AssemblyInfoInputs.cache | 2 +- ....Core.Tests.csproj.AssemblyReference.cache | Bin 10666 -> 10666 bytes .../net8.0/ApiTestRunner.Core.Tests.dll | Bin 29184 -> 30208 bytes .../net8.0/ApiTestRunner.Core.Tests.pdb | Bin 25308 -> 25508 bytes .../ApiTestRunner.Core.Tests.sourcelink.json | 2 +- .../net8.0/ref/ApiTestRunner.Core.Tests.dll | Bin 14336 -> 14848 bytes .../refint/ApiTestRunner.Core.Tests.dll | Bin 14336 -> 14848 bytes 14 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/ApiTestRunner.Core/Services/YamlTestSuiteLoader.cs b/src/ApiTestRunner.Core/Services/YamlTestSuiteLoader.cs index 07c6406..e0d41c8 100644 --- a/src/ApiTestRunner.Core/Services/YamlTestSuiteLoader.cs +++ b/src/ApiTestRunner.Core/Services/YamlTestSuiteLoader.cs @@ -52,6 +52,12 @@ public async Task LoadAsync(IEnumerable filePath var yaml = await File.ReadAllTextAsync(filePath, cancellationToken); var document = _deserializer.Deserialize(yaml) ?? new ApiTestDocumentDefinition(); + if (ShouldSkipEmptyDocument(yaml, document)) + { + _logger.LogWarning("Skipping empty YAML test file: {FilePath}", filePath); + continue; + } + ValidateDocumentShape(document, filePath); foreach (var environment in document.Environments) @@ -98,6 +104,25 @@ private static void ValidateDocumentShape(ApiTestDocumentDefinition document, st } } + private static bool ShouldSkipEmptyDocument(string yaml, ApiTestDocumentDefinition document) + { + if (document.Environments.Count > 0 || document.Endpoints.Count > 0) + { + return false; + } + + if (string.IsNullOrWhiteSpace(yaml)) + { + return true; + } + + var lines = yaml + .Split(['\r', '\n'], StringSplitOptions.RemoveEmptyEntries) + .Select(line => line.Trim()); + + return lines.All(line => line.Length == 0 || line == "---" || line == "..." || line.StartsWith('#')); + } + private static void ValidateEnvironment(EnvironmentDefinition environment, string filePath) { if (string.IsNullOrWhiteSpace(environment.Name)) diff --git a/tests/ApiTestRunner.Core.Tests/YamlTestSuiteLoaderTests.cs b/tests/ApiTestRunner.Core.Tests/YamlTestSuiteLoaderTests.cs index 65cbf0c..38059ff 100644 --- a/tests/ApiTestRunner.Core.Tests/YamlTestSuiteLoaderTests.cs +++ b/tests/ApiTestRunner.Core.Tests/YamlTestSuiteLoaderTests.cs @@ -81,6 +81,37 @@ public async Task LoadAsync_AttachesEndpointOnlyFileToSingleEnvironmentWhenTarge Assert.True(endpoint.Tests[0].Assertions[0].EqualsValue is bool boolean && boolean); } + [Fact] + public async Task LoadAsync_SkipsEmptyEndpointFileAndLoadsOtherConfiguredFiles() + { + var environmentFile = WriteYaml("environment.yaml", """ + environments: + - name: Local + baseUrl: https://localhost:7001 + """); + + var emptyEndpointFile = WriteYaml("empty-endpoint.yaml", ""); + + var endpointFile = WriteYaml("accounts.yaml", """ + targetEnvironments: + - Local + + endpoints: + - name: Get Accounts + method: GET + path: /api/accounts + tests: + - name: Accounts should exist + expectedStatus: 200 + """); + + var suite = await _loader.LoadAsync([environmentFile, emptyEndpointFile, endpointFile]); + + var environment = Assert.Single(suite.Environments); + var endpoint = Assert.Single(environment.Endpoints); + Assert.Equal("Get Accounts", endpoint.Name); + } + [Fact] public async Task LoadAsync_ThrowsForConflictingEnvironmentBaseUrls() { diff --git a/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.Tests.dll b/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.Tests.dll index 18ecb7a9f429514870f93e18ce5f85f1a892819b..35c3c074e529d501453d0a046480df67584dcea1 100644 GIT binary patch delta 7969 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 delta 7111 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 diff --git a/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.Tests.pdb b/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.Tests.pdb index 30080e0c0ea5ae77d0278c1a89e5d47edec04a72..25db50e373672d5cbc8ae85390f284db222f97e9 100644 GIT binary patch delta 1906 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 diff --git a/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.pdb b/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.pdb index a297b3709b484ac9110c6888c3a447bc4b107566..cbca277c010eca47c4a8398f05de229a94a3c912 100644 GIT binary patch delta 5468 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 diff --git a/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/ApiTestRunner.Core.Tests.dll b/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/ApiTestRunner.Core.Tests.dll index 18ecb7a9f429514870f93e18ce5f85f1a892819b..35c3c074e529d501453d0a046480df67584dcea1 100644 GIT binary patch delta 7969 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 delta 7111 zcmZ`;33wGnwmwzexBD)+d+wSb*&vq?LRONn1Oow#A_iF$K_Mgr0#TNr^Dw{-1aKU| zA+J&4ff{5H5EUkT7#N={3M1;12Z*~!MqHvZpw5gBKaqKV)x97*=k@pXf6sr;sdG+O zS5;T{ZT<^uKF3!7Hto=^uBRz}oTW6fv0S1$D6BE1e|hVU@s7jGh;9>#HlhlxHPxGN zkSGDXqlIX!k;=1;2`tl^JPoQ8oOQsuk(K$1>y^0TDY*_nBWgs&iQEbL3^&lJ3zQ%M5Gt%`Q%-mk7A7!k+;j&CgvJkmF z6q$)i7xf}iJ;WFFmcNSela}smfFX;La=r9N6GY=bEj`&_u1zh(``2*Y2$BT zY0PbJwKi~OHZCWODjFcvPeI+I89kszkf!%y8>Ak60zDUlsh72Z!lzC82us9jEU|lw z1_|v(sYTDI5tw=}wqM_}O!#b)KEe`7Fpk+XSe|j-9s-&j>A-A9U*IH17Ar6wa+EQ< zanun3UXU1cZetb3A?HM9GrGBkvIL{rmEv(CZh}6K+i1?bARyv2GCk$SJ1#$S7~i=1 zJK@mVYjT@r??>{8%P4doM96=*uQvVIj;0p@vgsYnZA3l&nbX+sDYJXf_?M<8?{ZzG zOSo?iqt)xJYKGK^+o~m)c~ehZ)uJH4tj}w4BIF{g2np+=P)z%z(7ptSX~RN$S*sKs z^SY?bYgGAyBQl`oZquSn@w>1G&|~6}L=M)Mtw|)UbXjq&=_U@v{K>7-P)pT@w>1W(4+B)4^@AH zAw|4N7`z%^D1I;dQm+&qG1mE$vSrkKbcEjIfZZ~?5ONASg&N;Mt{(H2y3lKS&s=om?Kg~7vYH7u@d0WXub7-N25fWz_pgu7~h|wxklew zwk2rvleOBZQLV((sQf9Dcue9e7GZ8d2rE6R?{{dF5@-khSq9x{5kWI8LUS6jgZ^lp z8qlc3zRT;ON8BAQjdGQChljq^h3w-(|E81|$+j09b5TTvTSTY`M8(gOu6Bo?ei!(Y zS0kM_nEdoKWIz3z)TGH|hs`4K0xqyO{57hSvcE7h=(1(Ezm!FzF zn>>Dc%qimRMw}aHuYMkFFR^yV4b;td-g5)>@fAf;<7oE*xQ>$zcA^0al10pr>65vv z)GSI&M*@wKbRi##^iX=R!_|+T)pJnp(u5;n5BZ=GLvgPv zkjX*nqN5nIrIInssP+Cq{!)rEjBr6)BxQKE2{uzQE*_&8)CUlzlvFW=V0)flVG7t& zm}2A5DwhNs3^td{m`O^ii)P@_RZ13|!X{=%Ddy5($!3DCB4?D!uW?PJq0)Fxx(4yM z6%CV-eibFr&5}KV8M%s5Xk;vmv}MpJ$qpmoDvD4Qrs)jN(^@K3CT|87yPpN7C6@A3 zdeOa8W0a-u2i~Gbh54)SD_TGLgL+u=(*d|&xa(`c9bC*Um0KY@$g zTxawp(}79KW&}FVY`Tcx)BWV95OBQ2Cx9Al^`---nm42E9TKm`iN?*0>`ErWoo89l zTs2>{{{Q;IYy8U~zYyM!G+Vu*xbtj;UX_B*q*n4e$3b(uWGjM=81kGZr9_2s1vQ0F zfU3_Nt_*l%}-y(*{dkjPhZCvyKHI& z`%bcGCwm7=OMouMjlB||0Mqc86+JWD^&|z!7iY_DPf(bWW6biAy#3%C0h~2J*?K#Xi|)t$AstV=~NqM)58yd-5Y1Y zq&+Ny?vJxxNiNEu#ge^7t)_)~4_X#e_z@B;R2jA9te@;zEz(FlJ=(Q5<6Tw|JFWQMi>{}%Cr zOwX`EWYh)uO6lJPev$j)MS{^NnI?v!6{FA5AB;}H6WBfWBQa*U9*v!8B~c4CdKkHZ z8ijyX>_i(qF3OWwDzRK*rNq$^CrGRYGO7n+_XhOQ5{a$AFs+mN6B30!g;M1RO_g`J zoQYOHM%i$ztQI~NE2@Q?^kU#Kte_VDI2O(jACCny#J6Cf4DrN-VxTWs;4mzRA>IuO zVTdoq0vO`;SolJ`0P9_dAICZu;;sP0oA_{#Sl2}SWEzikEJMl}B;w#1F-&X4j|h}O zOR+v>(BoK_GUzzgqioqAo3>#6$)sVLl2(Zw8k`}Og zEI-qBd41biitc3FS+y+y3|WLcBP3+M-N^=0V-%e*5D7A&TAbLIZDfu1L9CijN*=>1 zke~)~lf53+d(fC=f5A)LG=!a}1E!V$hC*b-wsCN0g@rU^XmNYJ$viWv?BHY2o z$_>tLF2Ze>*Ii4Bc@*!Iau<~b#_{j)Vm6U?(Ry4|CuFkuGQoV=Lm%*{^DExT>-C@c zK7PihC|$5xmC-0YpwvRHVG|&yC=2B!RYUHp)B`nI1}nqjBIHiC*z9DTY(H)Ro>5+J zU$#=3yQH~Gn!DJ8xN}|X%>;p7+?p=dH(B5T-*}~qIgLDIRgH*PT0ftQM>P$+Dp03d0fp?R^vY9DIM-TYylhZIIS*V zb8R21>sZ9~1@IVN1lGwJ{0`DwR8O#nO#f6rmgSz4<(`v;)}zqTrcRdXpK9uo_r43G zq0zKP&MCK2?ptiyK;xsBk=xm5+W?H`X4{LnD`J>*vKQxR~NhZ#dvtS?n94OJsmG!1FO=Y4l6PW1B1`>Ulz(ijjL!9V6 z+Gu6FI!&8^yEscbMwZ}wt%1a~Hqfy^D;kLBQ7SdkZfg(VZFu-kq-nMs?A$Km+3O`{ z&cR+K1(;5~fW7gamV+nXa^L{^ci>QZ8hDG;j{y#)8X9bwLQQlkYMw$ZAT=}#32J15 zCG-e1ZBoBcCf+2io1}HK)Et!7L(=nAi5LNha8~L&rRFn<=cJyP$fB@WG}fjtaT%!+ zqv`S|131=J&I}r88_GobVNySZHBp6Sifmjhtu@j*O)NGPIo2Ac|s8k)2_^LF#CJjfV<};}|Cp8KeWulFK40xA~DZ*1#gq$kna)}!yc0yliD_5h!sah4}kSgR(DXS*g%p^4B5-X&pTFOfx zSK3Guw=6{yW!)%oio|A#ZPGeLpM?m`65Avmlt|_#ddYgD`MD?>Pq91)Y?F9aVv1F0 z_S1W`l)b|K$t>KO&OYwN4y!&H;ep))D}FYeLg?IyTD%z$|PAb%ZDe=HMk?r(8@c9f1Y`3-QXYV}n=@EWt$6 zsXq+^4x|ylGO7gLNVfoo(5=7sv$AOHbJAk8T0;6@z&kN-b-IhD0VmOP;62#=B+ydI1TMqQ$w_MdXCPNcF*}>+VcJ4}r|#@7ta>IZ1%1_24Oplec;ujNqbIG@yYSZ(WDKv3pri<;~>66 zies5J%p!iTZ`@(z_3=jYe`Q&veJFR_*Lpv$70Hi7*Xo)ytNe(0eWr4`v%S`DmA30w z@m6WwWYuQ*6+qO6qe*-HUnH4ieBP(;-Qu&U_^A4oI-C9r-)k1KR-Ci((RnsGa0dB% zw3ZjMZ#Zm<6;gY>cre z=c1`-axM)tI)~)7KiBtW#rS4Ormd`Y^5h~KS9#z3y!M#|%N*^!ha3#H7f-Zv*X3~A zdTV6x%`4t}(O32C2OqYNz551kESx+&c$4mPH$TZd)6lU}^5RoEbKlhd)8stGm{>Co ze`f5iDP=dce^YY{k4)`XRFF5VptfJ_)ck1$`9--krTvQPN^<+v<(Aac7St7#6xB{G ztee_?Pu*Om-iK|uF>3lCQJzVbXY8GEB)_C`!574Ct>WmT-{VYJhO%+4{*VNxA!mY`d$vsrxf&>Biamr8!rWU&WOo_WTdBzML}P{Jedo+Hd{=DPq1-kVv$hB`JP*^UfNH^NX)0#5VEM4*VzQM= ppE}I!Tu61m5@>7TQHQexUZPDQ*wl7?4pVussNFsP0&C6H{}-H~HCq4x diff --git a/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/ApiTestRunner.Core.Tests.pdb b/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/ApiTestRunner.Core.Tests.pdb index 30080e0c0ea5ae77d0278c1a89e5d47edec04a72..25db50e373672d5cbc8ae85390f284db222f97e9 100644 GIT binary patch delta 1906 zcmaKt3s4hR6o$`kmL!Dm2pSOwW2jIcXcgE%Vyh6UgMtwuMH3#DL;_`~qGDBKG+?Vp zt(JIItZ1zdM0`vsC|X~g7OVJR6s71WD7ChZG8M;Z$NHf5+%?g3?DWojch7&$xp(*8 zy?eIfM`q_~rh?DViU9^M1qhJZI{_U5Pp< z9d+D?1yYzMbKbX4@6&0v<1bfUPsCU}3v=_cC zdX;0aMsP52i&U}S+h1&e4=$K45nuq~hsveq)I7_{Tu;zvDR zX*zbnOU(-JJH~^o;oh)M1Q`V22Gd55LjpdYOVgc8bkk|Lfi6vtQ4nea#)F*WXS!(` z4@I4X@nC0sl$-90@%sRFNXCRA&V*;^bZMG!6fxqOhB@P6oWP~&4NfDpB_a&0#h!&N z)bW}}1l9lPx4)hWK#vat?_SJ%m=UY3Xj@`NLyK-P}=~6GQ_^tH~ zgFUN7_B8_^U1$keGLl<-<>AW1y}B*i*Q!R4!tx~(eS7ZOa`mN|{js*~Cx(1B+;2tC zvgeiuZ7Cf;9htU2rOs=EN;aW->^fCWH0g|ua%4BwKRH_Ss?ZBq*-J$M0ciG>dS6yYx5^8z< za_`%wV%9dVJLp$=;QGI|?Gy2AV?utj^uV9;g!_3JmnsiE?E0YKM8hZMXNec?s0>F_ zi)}KK=F8ems!Ng# z*&1Gx9jP51k;ohMTMK#3EVZAa7=sGhU=FtAmLnt1Uxh68tF) zFIi^PdXwXp@qH8h@U*^cw0^|<5T(^P-JqraBrLUJ&VRb60>;Wg;pNX^2{H|!)pa`X z9EN!oyAdql4=oTFwg_u0{YSwXq!vjUL2p2(!Rp2NFCdGoVWQ+=3bMX2Zj<2S`kg6s3ak-BL=LLfg0jAf)>Gt ztpWw1V0F+&3xZWjaiNZm(`xP5ir89etBg_{JH>WdOV3RK^MfC~GvB%A`_4Ic?mh3m z_ZqKIz1>uK%!=zAfUs=zR70kU2$h>=Z=kDNrNg z5h;j;h-HXX2pgh6kJYY0fdhF7q5^T)O|KvGNg@jl7+7!^al}A44aW>LI7fUQc7te{ zWM<0%QI35Exf{nmgTjrIc#In-ai!aO zq;aa3T<+?w`lSHDn4odvp2%mraUL^?EinmDjdN2;RRUskoAKx;y2a1qvl!*1cIy~t zxt?h}@?;P|Aa;=qUtp@(q4reV-l(KTS?k7)*q~890b@bP7hpVSWC^nyC-Dg6X&4U~ ziT{n-C>NuD93}ET~P|U zGbpHAN?tkgTH_O8-sOh)C1S1?Jh8Vz?3Wj|B!TJXMnwkmd5~ua=JUZ}NbumnBeZ-N zG8Ch~(Ab5x)Cd9|Tr@JFyl_U(JJrJF7f`|5mtI~}F}$iHQ}kiSp1acxkps^SGk+Rr z@Kz>GC|$1I)l%otMBDQ^LoXM_KIqG=j&nxZ64g|rQnY$ipCr2BmS{<*^b<$sMBL;_ zMz?__^VvPPeK_msH;a2S+N0XE7X|@;*Ei>MNAHy$}alRAUi`8AlHHy^AUw__v z;0}u}r%MlNC+{p(2J2t-Y4!iIP|OaRKUDt#&l>ThRn|3OpO9@FShu9_{dVvBww&*c z7o%S^JNjsy=piP8R`=j&~^djAoJ|2EjZtGVsEDlgPo zpnLmfbcT!4`n5`N12^<*ITuLXV%CH6IRwI20YzzWAWsoL`j+KlEr7R z|4>SEjk9Odp+9%zcV8(`U0zTYA<0r*>qraq!HX5K-op#zY`!N@Y?}{$pyats>YjX!QCA6_Hz%6O}^YNhsTUVi((e_8y{TQZYod zK#LUyJ!cah_cjydTZKxjB6s z2Y2-LZ61IhMT&^*curcqlIkJ*rQE!F@d7+s!CO@8*IKC=1eGI{eU;%xB&xz4#cjjw z!;Q#nQ}L8zkWcw3q)c?%k$7r!POI~16wxKd)e?+uE!;G+v*y3*8iz&`^?H{^TQ!NL zTD^%!Gn0=QKTxINFao*gi2Z?6qg%dv!22BfswzXbsZw(rvX5?R4}BWF=9uUW&_4GA zwCxu6oB_IKm-0E1`tvOB=e9vt3kI>$EhCH|vZ>J*u6xcr8kbY;)#zoawdK)t$a$o( z<|*#X$&LR;vipBB2DB2$8{KuDJetRzuak`PAD@i#nO(|jT~gkT_!@m^|2yP2-4d6& zBwjF}H)*FK$v5a&qdzd_3MpS<*$Y{IfahfVZ)SqpKu@}f*1%X!k}U<>306(ELO)eu5Yn@jZSwz~ga5UT z*&?tQ=`=gT(*wJVQo){nn#=4u8pbF{^O)_DY!;29My5WDEk^m&#B4dU0$RvyJ-Uxk zF*Rd22QAY%Ve$pHCN$ckx`01&dxf9_6aX$4dB9^dUP#Xy&aq~$w*o#7?RmhvjOkVy zNvohHQN^tySuvB=WAwQC`RO>OyA@=su^O1`l|wv6YeZWEJ`7%|#|B$!2uklhGmFwPmv2EL)p5ZTm_LsM$U2 zNDX^L{M&R-$HYv$;fV7|ervK!7;a;DhF zdJVZ#>{K9wi9g!R6=|cG>DExVM#G5Td7sW;C5{#3P1*kCZ$;@#dLGf&A!m~8ZJ!_` z#olrEqCh5x=EDmHQ*4fNubDw_uOPpYZ}EZu5=}_4LwKi&qfAc3-J&4L90B8? zC`_>_#?cIR#W*2~QnvRDKbFfx4>xI*?Ua~gCXERCs+c^=-gnfhuZt;3M*EC6Q!J4O zNn17>5qmJZleQ6&uTDv^gl9=ce;SpLnS5W_FlkIQOfzYlI@&N{OEYPkmSsybX)DdL zrJ1yqQJcw`o(L+}R}^2b#Fv1Xm!QjrT7Q-Qj$q1WcbsWV zbaN8Tl6u)7yPJf6B6M07bODP(_8_)$_mg>fIm&TD*c}K;p^-^gw(@c!*mnFBDO~80 znIy~Jc%Td4S;`eaKb9Jajf{&Kmou(m>|pE#3fd0T=tW>I9c26&@Ck~u{xe3YFQ92W zeWrk3dE(+0Do$M7N2Q62w~)7S zF=AT*Y(YVZi%(EU;-UcsBre>B^gNG(5f>jJsXP?)^dhrm{Cqlu{49ptUWtbcR7@jC z{9=-Uis=(1dNF;D1TUuZNbC?d2+=Jha)=rnSAcFq$})5z?V%2&l*AI+MD?n5#=odN zs5a3Saw{8YFI@v3g4{u;DX4Cu0rCQ6gDB9ezR2=Emd~jy@Wg2z!KFI1pz5*92`u?LneV22nId+CgAh+FJs>pr$xe=+jSGWAt< zx-OmU*V*Y^c6yKXcUbBD=9eE>jCxGl?~gEH|;dKsiknYMeDUSsnov zsEsxmp~D8*RBtdDkwk5@v%xOqILkK}M;L`F^`yyySPSD>)=K zFb*+ZXC$Z8>qr6znI24kxwpQWa~1ob>Gt0O2mHSW=GtxmFX>V!yPB!ijFj0u`(lZcYphIGpn`lH4|x_)p-TE5IJTEL5g^2 z7b=d2p2OSb&O8*jMKkb8T(0<4Uc9&)NtUrMqpu>=ZbQE%sj$6COOxzU0 zKZz}Q>bgc>%cB<`rjp8QbeUb`fsVKIFuY4W@+|eOwhvHEWev@|R$Gt8%=D`05hWOx zkFHvkxy_<_cu(%9qITt$-u{7wTl)uhFYJr$Z;Qz_P)ft{qL= z`nr2J@7&Q9m8OBY(G44_sNQlERj5*~9)5o8eP`w42O{f@yt?62gjVt9mXAn9Klqc1u2YQEv9)leqHeGhP?*uyW!CZANUXJ PvxHrFCc-ECSh@ax&0C;_ delta 3825 zcmZ`+3vg6d8UD`QyZ7$hSMDxk2?eIvBtQruY)CdN(9)zl0u<#Hp0-LJEQ6&L0a3;d z3xZ5r#=`ct0#Zx1Eer#}F{UC#9i^q{ICP56*s(JX5@mF%b{w^(mdfaN&hFi8K=01^ z_W%CZx%ZxP{&Vi`?Yp-eda~-@kGH*p!gU>02#5qwOGPlRyqwOSUKQS+29`+0ZeXsF zjgJWS<~`QXFxH7{_0C$c#D8T1U0T^{o$rasqQSW)CW@8;L%SvHiC@@rzTS*2Iam1| zZ{N3`oj(xK|0d!%#RT$Nz^1{Aj#fZt8bQuxFn7XPYShmDN*Ji#1>E3&Yn1Ye?OQiJ zzHuA|pGj<9 zHukUn0|gm4=94RA6o|M6#mKkafU=! zBcDf?@+iN|*}(h;p4J};8F(xpG2oY28=*df4{b^Q z!;THSuCQE4`Bf!{D9e|-NTE=#-^O_#a6e`KgpHe_zK~=d#jX{YSFtw>%&$gn1+z%c zGBO+EIc}Le^^kUONY~Oh6_N$WzC@OUCvM{(g}{`u$??9Q<2pmJ`D9s`m|5Z(#C^)v zs61_Y%bY)DU=|}VTd^II)t~~ciiX)m7Gv?CVq-Y>vZ%ydv|zsT4Qt%^4FN+KNO}Fl z=0HdYJc%fAnTQb&VziK+Z(E}>&j%anb5@TLUs5;}Wk6a5=7^+7nxeOQV$3&6cVe90KDcX?WWF2Cw zBBg8#r%lmTl7;=>+2Mp>Nr!mJQ_8NE*#0OI-r-5N7H@P=^arMJj^!U|(E3GL6YGo1 zD)i|t%V5wNW6yFa2E|VQ1FRXY>r|_qv&Ch*ti`a3?4UUvfg-DjmN4;k&+;Lg_$!xp z(Df9vLaU1`GbnDD%MmIXx7v$Y)(RbpMdrh-g)U2l1tLYZGq4F!ms!v72}cy!E#KY} zwvM)uMceNp(}!3_toCGwsQ3}@wA^(SzR=+kw!r^w#EQ1j=3y=e_szV;4o4T+GV3hv zahW)8zRIQIK192H7UPO66W}x5TcC0#>=czQ^F3=nCE`VP(tf6dHAkKkRYlvph|R4p z-^C?FJV!*eYh%t6Vtj#J_TALahzTx(o{4<7Nb?iXH4bNk;uG6|Ya0~ra*K0W-g9C} zhX!1hj~ik#Zisziv!vG+0`p0SnCx)UFxwE5wz^?9xg81|;ua>Lh2%mWx&#^`a&xXC z<}aaSVn!K8m@@2clmXf>{oN^gEg74~d^e*QC!OHM3cNy&-BEG0Q{iX|i`8d*AW;zgE>oba;aoakVQ$cfvm3^{Rt6(J|OSqXAt z8COdXSGn>>LgpWf1=e03iKJYE^ z0|;n2rFmI-zO3X|l+}4IQWfskA*7Q>Y(u~9T#8gp=-1~7nQy(=iwU0f%G@cA;iTRz z9J=<FDiLZ$#Grk+azX0ry_fF>2%#IUkQ)7?5t8@tHSjPcN@~W z-W;Iyy247Il-DclRcLZX`#7pr{y1CqeI7Ob?0Jp&&$1sAf2Ca{e%_RtA4Xmi+%j*6 zrPFckGVv`X@23ISt~96ZE0h;Teo4Hg|C*a(gj=D;&B7~JGxsx%Ro!B@F`|Z1+^ICy z@(?l3;}#1ABQ#XgSL3`XC)UwRU@}q5Ai>2YxTr?cFb!iUHxV_Se#S9*B@bmLQ#2B5 zXfatRlf+s~C)RNpnw)O4hz&eynauV8aT*t(}Ka8{dGg$=|t*hpN5 zO~i-sD2HG>>qQVd_?%^Uf^r#lQMR$0vW>4%j$mJuB!c}UQJ(515ubLf@_W1cSao^S zEnXKm!6f1NwRl~?qsm2oD9H~NdA))0@>}JO*ghVDWvwf{qRxTxsh0ehk)J+Wou8Gr zi{wCA>>c6MR!pYYQSldR;EAe{#@!!ly|st5+OC#lQ{#rFo|c}jX&aiRB@^8Ce$>YjX!QCA6_Hz%6O}^YNhsTUVi((e_8y{TQZYod zK#LUyJ!cah_cjydTZKxjB6s z2Y2-LZ61IhMT&^*curcqlIkJ*rQE!F@d7+s!CO@8*IKC=1eGI{eU;%xB&xz4#cjjw z!;Q#nQ}L8zkWcw3q)c?%k$7r!POI~16wxKd)e?+uE!;G+v*y3*8iz&`^?H{^TQ!NL zTD^%!Gn0=QKTxINFao*gi2Z?6qg%dv!22BfswzXbsZw(rvX5?R4}BWF=9uUW&_4GA zwCxu6oB_IKm-0E1`tvOB=e9vt3kI>$EhCH|vZ>J*u6xcr8kbY;)#zoawdK)t$a$o( z<|*#X$&LR;vipBB2DB2$8{KuDJetRzuak`PAD@i#nO(|jT~gkT_!@m^|2yP2-4d6& zBwjF}H)*FK$v5a&qdzd_3MpS<*$Y{IfahfVZ)SqpKu@}f*1%X!k}U<>306(ELO)eu5Yn@jZSwz~ga5UT z*&?tQ=`=gT(*wJVQo){nn#=4u8pbF{^O)_DY!;29My5WDEk^m&#B4dU0$RvyJ-Uxk zF*Rd22QAY%Ve$pHCN$ckx`01&dxf9_6aX$4dB9^dUP#Xy&aq~$w*o#7?RmhvjOkVy zNvohHQN^tySuvB=WAwQC`RO>OyA@=su^O1`l|wv6YeZWEJ`7%|#|B$!2uklhGmFwPmv2EL)p5ZTm_LsM$U2 zNDX^L{M&R-$HYv$;fV7|ervK!7;a;DhF zdJVZ#>{K9wi9g!R6=|cG>DExVM#G5Td7sW;C5{#3P1*kCZ$;@#dLGf&A!m~8ZJ!_` z#olrEqCh5x=EDmHQ*4fNubDw_uOPpYZ}EZu5=}_4LwKi&qfAc3-J&4L90B8? zC`_>_#?cIR#W*2~QnvRDKbFfx4>xI*?Ua~gCXERCs+c^=-gnfhuZt;3M*EC6Q!J4O zNn17>5qmJZleQ6&uTDv^gl9=ce;SpLnS5W_FlkIQOfzYlI@&N{OEYPkmSsybX)DdL zrJ1yqQJcw`o(L+}R}^2b#Fv1Xm!QjrT7Q-Qj$q1WcbsWV zbaN8Tl6u)7yPJf6B6M07bODP(_8_)$_mg>fIm&TD*c}K;p^-^gw(@c!*mnFBDO~80 znIy~Jc%Td4S;`eaKb9Jajf{&Kmou(m>|pE#3fd0T=tW>I9c26&@Ck~u{xe3YFQ92W zeWrk3dE(+0Do$M7N2Q62w~)7S zF=AT*Y(YVZi%(EU;-UcsBre>B^gNG(5f>jJsXP?)^dhrm{Cqlu{49ptUWtbcR7@jC z{9=-Uis=(1dNF;D1TUuZNbC?d2+=Jha)=rnSAcFq$})5z?V%2&l*AI+MD?n5#=odN zs5a3Saw{8YFI@v3g4{u;DX4Cu0rCQ6gDB9ezR2=Emd~jy@Wg2z!KFI1pz5*92`u?LneV22nId+CgAh+FJs>pr$xe=+jSGWAt< zx-OmU*V*Y^c6yKXcUbBD=9eE>jCxGl?~gEH|;dKsiknYMeDUSsnov zsEsxmp~D8*RBtdDkwk5@v%xOqILkK}M;L`F^`yyySPSD>)=K zFb*+ZXC$Z8>qr6znI24kxwpQWa~1ob>Gt0O2mHSW=GtxmFX>V!yPB!ijFj0u`(lZcYphIGpn`lH4|x_)p-TE5IJTEL5g^2 z7b=d2p2OSb&O8*jMKkb8T(0<4Uc9&)NtUrMqpu>=ZbQE%sj$6COOxzU0 zKZz}Q>bgc>%cB<`rjp8QbeUb`fsVKIFuY4W@+|eOwhvHEWev@|R$Gt8%=D`05hWOx zkFHvkxy_<_cu(%9qITt$-u{7wTl)uhFYJr$Z;Qz_P)ft{qL= z`nr2J@7&Q9m8OBY(G44_sNQlERj5*~9)5o8eP`w42O{f@yt?62gjVt9mXAn9Klqc1u2YQEv9)leqHeGhP?*uyW!CZANUXJ PvxHrFCc-ECSh@ax&0C;_ delta 3825 zcmZ`+3vg6d8UD`QyZ7$hSMDxk2?eIvBtQruY)CdN(9)zl0u<#Hp0-LJEQ6&L0a3;d z3xZ5r#=`ct0#Zx1Eer#}F{UC#9i^q{ICP56*s(JX5@mF%b{w^(mdfaN&hFi8K=01^ z_W%CZx%ZxP{&Vi`?Yp-eda~-@kGH*p!gU>02#5qwOGPlRyqwOSUKQS+29`+0ZeXsF zjgJWS<~`QXFxH7{_0C$c#D8T1U0T^{o$rasqQSW)CW@8;L%SvHiC@@rzTS*2Iam1| zZ{N3`oj(xK|0d!%#RT$Nz^1{Aj#fZt8bQuxFn7XPYShmDN*Ji#1>E3&Yn1Ye?OQiJ zzHuA|pGj<9 zHukUn0|gm4=94RA6o|M6#mKkafU=! zBcDf?@+iN|*}(h;p4J};8F(xpG2oY28=*df4{b^Q z!;THSuCQE4`Bf!{D9e|-NTE=#-^O_#a6e`KgpHe_zK~=d#jX{YSFtw>%&$gn1+z%c zGBO+EIc}Le^^kUONY~Oh6_N$WzC@OUCvM{(g}{`u$??9Q<2pmJ`D9s`m|5Z(#C^)v zs61_Y%bY)DU=|}VTd^II)t~~ciiX)m7Gv?CVq-Y>vZ%ydv|zsT4Qt%^4FN+KNO}Fl z=0HdYJc%fAnTQb&VziK+Z(E}>&j%anb5@TLUs5;}Wk6a5=7^+7nxeOQV$3&6cVe90KDcX?WWF2Cw zBBg8#r%lmTl7;=>+2Mp>Nr!mJQ_8NE*#0OI-r-5N7H@P=^arMJj^!U|(E3GL6YGo1 zD)i|t%V5wNW6yFa2E|VQ1FRXY>r|_qv&Ch*ti`a3?4UUvfg-DjmN4;k&+;Lg_$!xp z(Df9vLaU1`GbnDD%MmIXx7v$Y)(RbpMdrh-g)U2l1tLYZGq4F!ms!v72}cy!E#KY} zwvM)uMceNp(}!3_toCGwsQ3}@wA^(SzR=+kw!r^w#EQ1j=3y=e_szV;4o4T+GV3hv zahW)8zRIQIK192H7UPO66W}x5TcC0#>=czQ^F3=nCE`VP(tf6dHAkKkRYlvph|R4p z-^C?FJV!*eYh%t6Vtj#J_TALahzTx(o{4<7Nb?iXH4bNk;uG6|Ya0~ra*K0W-g9C} zhX!1hj~ik#Zisziv!vG+0`p0SnCx)UFxwE5wz^?9xg81|;ua>Lh2%mWx&#^`a&xXC z<}aaSVn!K8m@@2clmXf>{oN^gEg74~d^e*QC!OHM3cNy&-BEG0Q{iX|i`8d*AW;zgE>oba;aoakVQ$cfvm3^{Rt6(J|OSqXAt z8COdXSGn>>LgpWf1=e03iKJYE^ z0|;n2rFmI-zO3X|l+}4IQWfskA*7Q>Y(u~9T#8gp=-1~7nQy(=iwU0f%G@cA;iTRz z9J=<FDiLZ$#Grk+azX0ry_fF>2%#IUkQ)7?5t8@tHSjPcN@~W z-W;Iyy247Il-DclRcLZX`#7pr{y1CqeI7Ob?0Jp&&$1sAf2Ca{e%_RtA4Xmi+%j*6 zrPFckGVv`X@23ISt~96ZE0h;Teo4Hg|C*a(gj=D;&B7~JGxsx%Ro!B@F`|Z1+^ICy z@(?l3;}#1ABQ#XgSL3`XC)UwRU@}q5Ai>2YxTr?cFb!iUHxV_Se#S9*B@bmLQ#2B5 zXfatRlf+s~C)RNpnw)O4hz&eynauV8aT*t(}Ka8{dGg$=|t*hpN5 zO~i-sD2HG>>qQVd_?%^Uf^r#lQMR$0vW>4%j$mJuB!c}UQJ(515ubLf@_W1cSao^S zEnXKm!6f1NwRl~?qsm2oD9H~NdA))0@>}JO*ghVDWvwf{qRxTxsh0ehk)J+Wou8Gr zi{wCA>>c6MR!pYYQSldR;EAe{#@!!ly|st5+OC#lQ{#rFo|c}jX&aiRB@^8Ce$ Date: Sun, 15 Mar 2026 23:29:17 +0800 Subject: [PATCH 2/2] feat: Implement response preview functionality with JSON formatting and wrapping options, enhancing user interaction and readability --- src/ApiTestRunner.App/wwwroot/app.js | 45 ++++++++++++- .../wwwroot/curl-import.html | 6 +- src/ApiTestRunner.App/wwwroot/curl-import.js | 34 ++++++++++ src/ApiTestRunner.App/wwwroot/index.html | 8 ++- src/ApiTestRunner.App/wwwroot/styles.css | 61 ++++++++++++++++-- .../net8.0/ApiTestRunner.Core.Tests.dll | Bin 30208 -> 30208 bytes .../net8.0/ApiTestRunner.Core.Tests.pdb | Bin 25508 -> 25508 bytes .../bin/Release/net8.0/ApiTestRunner.Core.dll | Bin 71168 -> 71168 bytes .../bin/Release/net8.0/ApiTestRunner.Core.pdb | Bin 37700 -> 37700 bytes .../ApiTestRunner.Core.Tests.AssemblyInfo.cs | 2 +- ...Runner.Core.Tests.AssemblyInfoInputs.cache | 2 +- ....Core.Tests.csproj.AssemblyReference.cache | Bin 10666 -> 10666 bytes .../net8.0/ApiTestRunner.Core.Tests.dll | Bin 30208 -> 30208 bytes .../net8.0/ApiTestRunner.Core.Tests.pdb | Bin 25508 -> 25508 bytes .../ApiTestRunner.Core.Tests.sourcelink.json | 2 +- .../net8.0/ref/ApiTestRunner.Core.Tests.dll | Bin 14848 -> 14848 bytes .../refint/ApiTestRunner.Core.Tests.dll | Bin 14848 -> 14848 bytes 17 files changed, 148 insertions(+), 12 deletions(-) diff --git a/src/ApiTestRunner.App/wwwroot/app.js b/src/ApiTestRunner.App/wwwroot/app.js index 5d800d8..b7cedb6 100644 --- a/src/ApiTestRunner.App/wwwroot/app.js +++ b/src/ApiTestRunner.App/wwwroot/app.js @@ -424,8 +424,10 @@ function renderState(state) { endpointBadge.textContent = endpointIsPassing ? "Pass" : "Fail"; endpointBadge.className = `endpoint-badge ${endpointIsPassing ? "passing" : "failing"}`; - endpointNode.querySelector(".response-body").textContent = - endpoint.responseBody || endpoint.errorMessage || "(empty response)"; + initializeResponsePreview( + endpointNode, + endpoint.responseBody || endpoint.errorMessage || "(empty response)" + ); const testList = endpointNode.querySelector(".test-list"); @@ -469,6 +471,33 @@ function renderState(state) { } } +function initializeResponsePreview(endpointNode, responseText) { + const responseBody = endpointNode.querySelector(".response-body"); + const formatButton = endpointNode.querySelector(".format-response-button"); + const toggleWrapButton = endpointNode.querySelector(".toggle-response-wrap-button"); + + responseBody.value = formatJsonText(responseText); + responseBody.dataset.rawValue = responseText; + responseBody.wrap = "soft"; + responseBody.classList.add("is-wrapped"); + responseBody.classList.remove("is-unwrapped"); + + toggleWrapButton.innerHTML = "Disable Wrap"; + toggleWrapButton.addEventListener("click", () => { + const isWrapped = responseBody.classList.contains("is-wrapped"); + responseBody.wrap = isWrapped ? "off" : "soft"; + responseBody.classList.toggle("is-wrapped", !isWrapped); + responseBody.classList.toggle("is-unwrapped", isWrapped); + toggleWrapButton.innerHTML = isWrapped + ? "Enable Wrap" + : "Disable Wrap"; + }); + + formatButton.addEventListener("click", () => { + responseBody.value = formatJsonText(responseBody.dataset.rawValue || responseBody.value); + }); +} + function filterRunEnvironments(run, searchTerm) { if (!searchTerm) { return run.environments.map((environment) => ({ @@ -615,6 +644,18 @@ function formatDate(value) { return new Date(value).toLocaleString(); } +function formatJsonText(value) { + if (typeof value !== "string") { + return String(value ?? ""); + } + + try { + return JSON.stringify(JSON.parse(value), null, 2); + } catch { + return value; + } +} + async function buildErrorMessage(response, fallbackMessage) { try { const payload = await response.json(); diff --git a/src/ApiTestRunner.App/wwwroot/curl-import.html b/src/ApiTestRunner.App/wwwroot/curl-import.html index 2e1a2dc..b41374e 100644 --- a/src/ApiTestRunner.App/wwwroot/curl-import.html +++ b/src/ApiTestRunner.App/wwwroot/curl-import.html @@ -100,7 +100,11 @@

Paste r
- +
+ + +
+

No response body parsed yet.

diff --git a/src/ApiTestRunner.App/wwwroot/curl-import.js b/src/ApiTestRunner.App/wwwroot/curl-import.js index a3ea18d..34abe24 100644 --- a/src/ApiTestRunner.App/wwwroot/curl-import.js +++ b/src/ApiTestRunner.App/wwwroot/curl-import.js @@ -4,6 +4,8 @@ const responseStatus = document.getElementById("responseStatus"); const addAssertionButton = document.getElementById("addAssertionButton"); const curlInput = document.getElementById("curlInput"); const responseBodyInput = document.getElementById("responseBodyInput"); +const formatResponseButton = document.getElementById("formatResponseButton"); +const toggleResponseWrapButton = document.getElementById("toggleResponseWrapButton"); const assertionFieldSelect = document.getElementById("assertionFieldSelect"); const assertionRuleSelect = document.getElementById("assertionRuleSelect"); const assertionValueContainer = document.getElementById("assertionValueContainer"); @@ -38,6 +40,7 @@ let parsedResponseFields = []; let parsedResponseObject = null; let assertionDrafts = []; let lastParsedResponseBody = ""; +let isResponseWrapped = true; async function analyzeCurlCommand() { const command = curlInput.value.trim(); @@ -120,6 +123,33 @@ function parseResponseBody() { } } +function formatResponseBody() { + const responseBody = responseBodyInput.value.trim(); + if (!responseBody) { + renderResponseStatus("Paste a response body first.", true); + return; + } + + try { + const parsed = JSON.parse(responseBody); + responseBodyInput.value = JSON.stringify(parsed, null, 2); + parseResponseBody(); + renderResponseStatus("Response body formatted.", false); + } catch (error) { + renderResponseStatus(error.message || "Response body is not valid JSON.", true); + } +} + +function toggleResponseWrap() { + isResponseWrapped = !isResponseWrapped; + responseBodyInput.wrap = isResponseWrapped ? "soft" : "off"; + responseBodyInput.classList.toggle("is-wrapped", isResponseWrapped); + responseBodyInput.classList.toggle("is-unwrapped", !isResponseWrapped); + toggleResponseWrapButton.innerHTML = isResponseWrapped + ? "Disable Wrap" + : "Enable Wrap"; +} + function collectResponseFields(value, path = "") { const fields = []; const type = getJsonValueType(value); @@ -617,6 +647,8 @@ function renderResponseStatus(message, isError) { function setBusy(isBusy) { analyzeButton.disabled = isBusy; addAssertionButton.disabled = isBusy || parsedResponseFields.length === 0; + formatResponseButton.disabled = isBusy; + toggleResponseWrapButton.disabled = isBusy; analyzeButton.innerHTML = isBusy ? "Analyzing..." : "Analyze and Generate"; @@ -653,6 +685,8 @@ assertionFieldSelect.addEventListener("change", () => { assertionRuleSelect.addEventListener("change", renderValueInput); addAssertionButton.addEventListener("click", addAssertionDraft); analyzeButton.addEventListener("click", analyzeCurlCommand); +formatResponseButton.addEventListener("click", formatResponseBody); +toggleResponseWrapButton.addEventListener("click", toggleResponseWrap); responseBodyInput.addEventListener("blur", parseResponseBody); renderAssertionBuilder(); diff --git a/src/ApiTestRunner.App/wwwroot/index.html b/src/ApiTestRunner.App/wwwroot/index.html index 88414ed..cf5baa9 100644 --- a/src/ApiTestRunner.App/wwwroot/index.html +++ b/src/ApiTestRunner.App/wwwroot/index.html @@ -242,7 +242,13 @@

Response preview -

+                    
+
+ + +
+ +
diff --git a/src/ApiTestRunner.App/wwwroot/styles.css b/src/ApiTestRunner.App/wwwroot/styles.css index 594b6f1..0f40bff 100644 --- a/src/ApiTestRunner.App/wwwroot/styles.css +++ b/src/ApiTestRunner.App/wwwroot/styles.css @@ -484,6 +484,11 @@ body.app-shell { padding: 0 0.9rem 0.9rem; } +.selection-group-body { + background: linear-gradient(180deg, rgba(226, 232, 240, 0.72), rgba(241, 245, 249, 0.88)); + border-top: 1px solid rgba(15, 23, 42, 0.08); +} + .selection-test-list, .endpoint-list, .test-list { @@ -501,8 +506,9 @@ body.app-shell { .selection-test { padding: 0.75rem 0.85rem; border-radius: 0.9rem; - background: rgba(255, 255, 255, 0.76); - border: 1px solid rgba(15, 23, 42, 0.08); + background: rgba(255, 255, 255, 0.99); + border: 1px solid rgba(15, 23, 42, 0.16); + box-shadow: 0 8px 18px rgba(15, 23, 42, 0.06); } .selection-test input, @@ -553,6 +559,15 @@ body.app-shell { background: rgba(255, 255, 255, 0.55); } +.selection-summary-row { + background: linear-gradient(180deg, rgba(226, 232, 240, 0.98), rgba(203, 213, 225, 0.92)); + border-bottom: 1px solid rgba(15, 23, 42, 0.12); +} + +.selection-subgroup > .selection-summary-row { + background: linear-gradient(180deg, rgba(241, 245, 249, 0.98), rgba(226, 232, 240, 0.94)); +} + .environment-card[open] > .environment-summary-row, .endpoint-card[open] > .endpoint-summary-row, .test-card[open] > .test-summary-row { @@ -634,19 +649,36 @@ body.app-shell { background: rgba(248, 250, 252, 0.88); } +.response-panel-body { + padding: 0.85rem 0.95rem 0.95rem; + border-top: 1px solid rgba(15, 23, 42, 0.08); +} + .response-body, .code-block { margin: 0; - padding: 0.85rem 0.95rem; overflow: auto; - border-top: 1px solid rgba(15, 23, 42, 0.08); background: #0f172a; color: #e2e8f0; - border-radius: 0 0 0.9rem 0.9rem; font-size: 0.81rem; line-height: 1.45; } +.response-body { + min-height: 16rem; + width: 100%; + padding: 0.85rem 0.95rem; + border: 0; + border-radius: 0.9rem; + resize: vertical; + font-family: Consolas, "SFMono-Regular", Menlo, monospace; +} + +.code-block { + padding: 0.85rem 0.95rem; + border-radius: 0 0 0.9rem 0.9rem; +} + .assertion-list { margin: 0; padding-left: 1.1rem; @@ -690,6 +722,25 @@ body.app-shell { line-height: 1.5; } +.response-preview-actions { + margin-bottom: 0.8rem; +} + +.response-preview-input { + min-height: 20rem; + font-size: 0.9rem; +} + +.response-preview-input.is-wrapped { + white-space: pre-wrap; + word-break: break-word; +} + +.response-preview-input.is-unwrapped { + white-space: pre; + overflow-x: auto; +} + .tool-input-inline, .tool-select { min-height: 2.9rem; diff --git a/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.Tests.dll b/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.Tests.dll index 35c3c074e529d501453d0a046480df67584dcea1..0b287e196c984e56933415fbff2264af0e5745e0 100644 GIT binary patch delta 238 zcmZp8!`SeKaY6^n(VH2IHumg@5r~}6=q@7o-)+h7M=qD03#vAU#6IHCFf%qVF*GwX zOEfnyH%v82Ni;GrGB8UrN;b1JOg2bNF)}eQw@gko+Z>lB$IMcpyW+*HI@-fYhyvYwTn-rje&%QzhL8^CMnPz$Ai1>TwDg}|vO<88F{$>ou3;*qr0WBj;+__wz#qL8_OsY|P`lUwGx={QF6po3hMU{Y@AW8B7>b z8Ipj|gu#%(lEDm!jTurHOo4n;AZ^TG!C=5(1Z0^2p(TSkLmCjK0@bDg<;{Wm(|{_H OfNFs1H?tS~WCZ{X!ck}d diff --git a/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.Tests.pdb b/tests/ApiTestRunner.Core.Tests/bin/Release/net8.0/ApiTestRunner.Core.Tests.pdb index 25db50e373672d5cbc8ae85390f284db222f97e9..a95add84d459d3ce656b2bf075e94c6184ebd7b0 100644 GIT binary patch delta 504 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 delta 2417 zcma*nc~DbV6bA5k7s|N{ zhkLE%d_LB^Fcwx=0HujI^X$ z2#T_#rH}Ht2mB!r!XO%SkOr$E6S5%}@?kF&Lm5k~LNSy<1sLNw zH#&#OMQDbfp#$!~19%EO@$3@{Num+b0F7aknZij(wkZ5GeG3aQ4~3 z28tZh#v;rQK`DF4!9~6yKuFCfuA3VE#Jn5c0H+m_6b6DFjD#`Z3hwX;%miOp z03lk_QKL{KX#0+uhq(a`z!CTgD*276LaISgXWDoL^EPOQ+i)MAz)N@sBAt*dzzXa^ z0nRW9)G!Tvz#jr345C2?X*zZ?y^vO;(CY-WL&r|XE)m%$h)4nBKnYX98+;S`))!(P z1~H~OkstYHQ;2A}X>Bd`=}q&z#J>J3{D`?>oSDL&@as!r3o@Ev8vT-F)rT2L}US$eC;0j5yk;9kgsi`tS}A+YrdAo*kZJUA$%>18;Wrl z4CiZwW+X-jP_UY#hXxPFF=MjLoym-p5@)~{-{n5*(VN2sNAFYe{^BUFmtINXrR%cK)L1zWPumn>hEHB!i2puhn)^ov>Agb)+>#Te5$%l$DJt>$7>meI z|1zn6g`%NTT6pQ?szP^7^~JT?5ha7ZT^!*vr{rY9!taheJK$AYWIlK2-z`>SpADFP zI74;P*jeNf6TZHDW!Ac#wodBbD=O@-w}y5XUk(WM_)UDR`(c`{Nq!*t@}pqeeJver zJ0tdV%~o!S)T@lU+U=IlZOaRuy&^23XP-rD&U=TFGp*eLEe>%Rfv3D0;z#CHe{(Z^ z^J}|X+H9#dymeUA?$?g!3A0+9hyLMTRX(`t zeer{3d!F>nSX}#jche6g)f?@O?bC()bTc-vAhuDR;qXhkgTOG}ZQD3itV$afr<&~f zv8TI6tx{{;rz)ptR4PvoolZMhr}l`|O^s8k)TQli0doa{I$9)QF`C6h7M?8pSVXY+ zoJ9_c{Vd8@)Uaq~(S-<>8b@U{3MTdAVf=IYx{Y=lTtzPZ=;2>mV@%D??9VGA73^4j zr!?5)R8Rfz8~R$<(IVSeGyB6LpBn{VoaNj<+|6$fmZB&6M;5n?Pq(%R96r!!{57{n d;Pin_{4awzo?+RvBml07BOXhX4Qo delta 16 YcmZ1#yefD?DeKi2ZM+jURvBml07FR!X#fBK diff --git a/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/ApiTestRunner.Core.Tests.dll b/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/ApiTestRunner.Core.Tests.dll index 35c3c074e529d501453d0a046480df67584dcea1..0b287e196c984e56933415fbff2264af0e5745e0 100644 GIT binary patch delta 238 zcmZp8!`SeKaY6^n(VH2IHumg@5r~}6=q@7o-)+h7M=qD03#vAU#6IHCFf%qVF*GwX zOEfnyH%v82Ni;GrGB8UrN;b1JOg2bNF)}eQw@gko+Z>lB$IMcpyW+*HI@-fYhyvYwTn-rje&%QzhL8^CMnPz$Ai1>TwDg}|vO<88F{$>ou3;*qr0WBj;+__wz#qL8_OsY|P`lUwGx={QF6po3hMU{Y@AW8B7>b z8Ipj|gu#%(lEDm!jTurHOo4n;AZ^TG!C=5(1Z0^2p(TSkLmCjK0@bDg<;{Wm(|{_H OfNFs1H?tS~WCZ{X!ck}d diff --git a/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/ApiTestRunner.Core.Tests.pdb b/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/ApiTestRunner.Core.Tests.pdb index 25db50e373672d5cbc8ae85390f284db222f97e9..a95add84d459d3ce656b2bf075e94c6184ebd7b0 100644 GIT binary patch delta 504 zcmVtv5>S3e^nEQ-C!9H$m=qI zrwyxsM=$7vO3YS_U!9Zi(d&9NA%R^O1ONc7lTB;GFbsz8gZ>B6)5d6$W+kO-8FYb; z9R{N<+hOdW*h*?}>|!e``S-)!2rc`dhuSB}ubx*3D~<e*lUW5ZGEB1!*VGH)tyIz!o@EmP!-U*n+^u6DT9Bb0ioF+Te$> z4$w&0DXpO((AG1kvZL{azPyzON1gfJ5@zu)J)e6ty^F>xQ^BhBO!f3QjFwbt60EG5 z2I(7mPj#W&+n<7H{{5EQdW)u=Gdoo@Oqc!nR;|hNvN48Sf0SECQHXv2>iuMG(?JWR>4ls>#tfq*+|x0SrnIi!cZ2#5-gS19jD}g3;W!x&X(TaC(j+TV zkxhmoL79${@kCH|y6v;GvJrgN(XJJ1IxF%2`R>2=!{M5RC3srhH%d!*b&4ssk`@lD znhb-`=zSFG0zLtg!w!KcHZw3ZF*Y_fVK*>0F=aGlVKOi>Fg9W`V>UT4V=!T4GBhwZ uIb&ruvuqD=0vLy3j@kg=002JiK36)S$wrS3e~umZ&&?!#Ed+Yk z@`$+oIh~@C9xRh{iG4^9@9AY{L4jQu1ONc7lTB*^F%X9Dg8yOg)Kc8lx>l`HunU$R z3Pq(olpba`liffzkz}^A|GvZ)QTl-glhaJzdEQ~j#Bukmr`?KUm|@MfTaY1#OyX{r z3};;`54jZtTlBCOe?Zm%0$Z!2Al=K;5=}uK*aC-2sWd@_4dhsR0%daR9OVodmH45o z12h7*N^8gnwDk;1?rB`om$&lZXm7r=gjxJc&*vUZyH$H-3RpFsshS>#(UPR5oRu}x zAbmscsmgS7`%@6jzu!_@ZO}AxW~Z{6>7p~=s5Nm&MT_u=MmL>hk&14{k$xsZ&y=##q zlaZ9vm%|atan?(Qr`tX|E9#ujI@+~jO=l(kKi}QgemGpSumn%5`&wxMuTC+gR?xy> zQITQDHF_U~0=iF=!w!KcG+{JlVq!EgIW{>nWHmH3WHUH0GGsI~IX7lzWie(oH(_Qt uVlXr{vuqD=0vH};&H4b~008;@!qI3?sRbGn zm^93c4NMHp%*+za4a^NwO;Qq#42%rSl8lngEDe(l5>t#!49qQ)Q_VIb`nEE6EKWH4t)1Hx3G+BBfNIZ%HZ QP(>0@4N(1Nc9Wm10ODXY(EtDd diff --git a/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/refint/ApiTestRunner.Core.Tests.dll b/tests/ApiTestRunner.Core.Tests/obj/Release/net8.0/refint/ApiTestRunner.Core.Tests.dll index 1bca097fe84b6d87285227e21e0e9924a9e95813..5cf66d4a80b83b9e59a7df174b679e0f1f19786a 100644 GIT binary patch delta 195 zcmZoDX(*Y{!Lt35z?_XeCCma#H0SJDsBP)BuJFzNGdc(EZWd&D&$#(N>qI3?sRbGn zm^93c4NMHp%*+za4a^NwO;Qq#42%rSl8lngEDe(l5>t#!49qQ)Q_VIb`nEE6EKWH4t)1Hx3G+BBfNIZ%HZ QP(>0@4N(1Nc9Wm10ODXY(EtDd