From aacca9fea47fa0d9059d90d8416f261e1ec8dc6b Mon Sep 17 00:00:00 2001 From: Animesh Pathak Date: Fri, 27 Dec 2024 19:16:51 +0530 Subject: [PATCH] feat: revamp docs Signed-off-by: Animesh Pathak --- docusaurus.config.js | 23 +- .../{GitTogether.js => DevScribe.js} | 10 +- src/components/Intro.js | 10 +- src/components/Product.js | 134 ++++++++++ src/components/QuickStart.js | 59 ++--- src/components/SDKs.js | 15 +- src/pages/index.js | 9 +- static/img/DevScribe.png | Bin 0 -> 42592 bytes static/img/api.svg | 9 + versioned_docs/version-2.0.0/ci-cd/github.md | 4 + versioned_docs/version-2.0.0/ci-cd/gitlab.md | 4 + versioned_docs/version-2.0.0/ci-cd/jenkins.md | 4 + .../version-2.0.0/concepts/installation.md | 7 +- .../concepts/what-are-keploy-features.md | 6 +- .../concepts/what-is-a-keploy-ebpf.md | 6 +- .../version-2.0.0/concepts/what-is-keploy.md | 4 + .../version-2.0.0/dependencies/http.md | 4 + .../version-2.0.0/dependencies/mongo.md | 4 + .../version-2.0.0/dependencies/postgresql.md | 4 + .../version-2.0.0/dependencies/redis.md | 4 + .../keploy-cloud/deduplication.md | 4 + .../keploy-cloud/installation.md | 4 + .../keploy-cloud/keploy-console.md | 4 + .../keploy-cloud/mock-registry.md | 6 +- .../keploy-cloud/new-application.md | 6 +- .../keploy-cloud/testgeneration.md | 4 + .../keploy-cloud/time-freezing.md | 6 +- versioned_docs/version-2.0.0/migrate/index.md | 14 ++ .../quickstart/csharp-dotnet-postgres.md | 25 +- .../quickstart/express-postgresql-prisma.md | 17 +- .../version-2.0.0/quickstart/flask-redis.md | 17 +- .../quickstart/go-fasthttp-postgres.md | 17 +- .../version-2.0.0/quickstart/go-gin-redis.md | 17 +- .../version-2.0.0/quickstart/go-mux-mysql.md | 17 +- .../version-2.0.0/quickstart/go-mux-sql.md | 14 +- .../quickstart/java-spring-boot-mongo.md | 23 +- .../quickstart/java-spring-postgres.md | 28 ++- .../quickstart/nextjs-postgres.md | 19 +- .../quickstart/node-express-mongoose.md | 17 +- .../version-2.0.0/quickstart/node-jwt-sql.md | 17 +- .../quickstart/python-django-sql.md | 14 +- .../quickstart/python-fastapi-sql.md | 14 +- .../quickstart/python-fastapi-twilio.md | 14 +- .../quickstart/python-flask-mongo.md | 14 +- .../quickstart/rust-wrap-mongo.md | 16 +- .../quickstart/sample-rust-crud-mongo.md | 16 +- .../version-2.0.0/quickstart/sample-ts.md | 18 +- .../version-2.0.0/quickstart/samples-bunjs.md | 19 +- .../version-2.0.0/quickstart/samples-echo.md | 15 +- .../quickstart/samples-express-mongoose.md | 17 +- .../quickstart/samples-go-gin-mongo.md | 15 +- .../quickstart/samples-go-sse-svelte.md | 15 +- .../version-2.0.0/quickstart/samples-java.md | 18 +- .../quickstart/samples-node-mongo.md | 20 +- .../version-2.0.0/quickstart/samples-rust.md | 17 +- .../version-2.0.0/quickstart/sanic-mongo.md | 26 +- .../running-keploy/cli-commands.md | 136 ++++++----- .../running-keploy/configuration-file.md | 5 + .../running-keploy/custom-mocks.md | 5 + .../running-keploy/docker-tls.md | 23 +- .../running-keploy/keploy-passthrough.md | 7 +- .../running-keploy/keploy-templatize.md | 7 +- .../running-keploy/rename-testcases.md | 6 +- .../running-keploy/unit-test-generator.md | 16 +- .../version-2.0.0/server/installation.md | 8 +- .../version-2.0.0-sidebars.json | 229 +++++++++--------- 66 files changed, 950 insertions(+), 356 deletions(-) rename src/components/{GitTogether.js => DevScribe.js} (85%) create mode 100644 src/components/Product.js create mode 100644 static/img/DevScribe.png create mode 100644 static/img/api.svg create mode 100644 versioned_docs/version-2.0.0/migrate/index.md diff --git a/docusaurus.config.js b/docusaurus.config.js index 65e5099b6..06bca5645 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -118,7 +118,7 @@ module.exports = { { to: "/server/installation", activeBasePath: "none", - label: "Installation", + label: "Start", }, // { // to: "/server/installation/", @@ -136,12 +136,25 @@ module.exports = { // label: "test SDKs", // }, { - to: "/keploy-explained/contribution-guide", - label: "Contribution Guide", + to: "/keploy-cloud/cloud-installation", + label: "Cloud", }, { - to: "https://keploy.io/blog", - label: "Blog", + label: "Resources", + items: [ + { + label: 'Blogs', + href:'https://keploy.io/blog', + }, + { + label: 'Contributing', + href: '/keploy-explained/contribution-guide', + }, + { + label: 'FAQ', + href:'/keploy-explained/faq/', + }, + ] }, { type: "docsVersionDropdown", diff --git a/src/components/GitTogether.js b/src/components/DevScribe.js similarity index 85% rename from src/components/GitTogether.js rename to src/components/DevScribe.js index d9557b3a8..5175ed79e 100644 --- a/src/components/GitTogether.js +++ b/src/components/DevScribe.js @@ -4,13 +4,13 @@ export const GitTogether = () => { return (

- Attend GitTogether + Attend DevScribe

- + {"GitTogether
diff --git a/src/components/Intro.js b/src/components/Intro.js index 2abf0f594..94383b7e2 100644 --- a/src/components/Intro.js +++ b/src/components/Intro.js @@ -27,7 +27,7 @@ function Languages() { fill="currentColor" /> -

Languages

+

QuickStart

    {/*
      */} @@ -227,9 +227,13 @@ export const Intro = () => { return (

      - Supports + Getting Started ✨

      -
      +

      + Get up and running with Keploy in just a few minutes by integrating it with your applications. + Below are the quick-start guides for popular languages and frameworks. +


      +
      diff --git a/src/components/Product.js b/src/components/Product.js new file mode 100644 index 000000000..2d8a2e89e --- /dev/null +++ b/src/components/Product.js @@ -0,0 +1,134 @@ +import React from "react"; +import Link from "@docusaurus/Link"; +import useBaseUrl from "@docusaurus/useBaseUrl"; + +function Vscode() { + return ( +
      + +
      + + + + + + +

      API Testing

      +
      +
        +
      • +

        + Keploy provides automated API testing for every project with test case generation, data mocking, CI/CD integration, and more. +

        +
      • +
      + +
      + ); +} + +function UTG() { + return ( +
      + +
      + + + +

      Unit Testing

      +
      +
        +
      • +

        + Creates unit tests for your functions, improving test coverage without manual effort. +

        +
      • +
      + +
      + ); +} + +function ATG() { + return ( +
      + +
      + + + + + + + +

      E2E Testing

      +
      +
        +
      • +

        + Generate tests from schema or PRD, automating end-to-end validation for accurate, spec-compliant apps. +

        +
      • +
      + +
      + ); +} + +export const Products = () => { + return ( +
      +

      + Products πŸ› οΈ +

      +
      + + + +
      +
      + ); +}; diff --git a/src/components/QuickStart.js b/src/components/QuickStart.js index de63666fb..515767039 100644 --- a/src/components/QuickStart.js +++ b/src/components/QuickStart.js @@ -6,57 +6,28 @@ export const QuickStart = () => { return (

      - Welcome to Keploy Documentation! πŸš€ + Keploy Documentation! πŸš€

      -

      - This documentation is your roadmap to becoming a Keploy expert, whether - you're a seasoned developer or just starting out. πŸ—ΊοΈ +

      + Welcome to Keploy’s documentation! Whether you're new to backend testing or an experienced developer, this guide will help you get started with Keploy quickly and effectively.πŸ—ΊοΈ

      What is Keploy? πŸ€”

      -

      - Keploy is your open-source, developer-centric backend testing tool. It - makes backend testing easy and productive for engineering teams. Plus, - it's easy-to-use, powerful and extensible..πŸ› οΈ -

      -

      - Keploy creates test cases and data mocks/stubs from user-traffic by - recording API calls and DB queries, significantly speeding up releases - and enhancing reliability. πŸ“ˆ -

      - -

      - Contribute through Hacktoberfest βœ… -

      -

      - DigitalOcean's Hacktoberfest is a month-long celebration of open-source - contributions. Everyone is welcome to participate, regardless of their - experience level. Simply make a pull request to an open-source project - to get started. -

      - You can contribute to{" "} - - several Keploy projects - {" "} - participating this year, If you’ve ever wanted to contribute to open - source , now is your chance! -

      - Anyone around the globe who desires to help drive the growth of open - source and make positive contributions to an ever-growing community. All - backgrounds and skill levels are encouraged to participate.{" "} - - Learn How to Contribute? - +

      + Keploy is an open-source backend testing tool that helps developers quickly create and run tests by capturing + real user traffic. It generates test cases and data mocks to ensure your code is reliable and helps speed up your release cycle..πŸ› οΈ +

      + With features like API testing, unit test generation, and schema/PRD-based test automation, Keploy helps teams release faster while maintaining high reliability. + It’s easy to use, extensible, and integrates seamlessly into CI/CD pipelines, making backend testing efficient and productive.

      - Installation Guide πŸ“— + Setup Guide πŸ“—

      - Let's get Keploy up and running on your Windows, Linux, or macOS - machine, so you can start crafting test cases in minutes. ⏱️ + Follow the steps below to install Keploy on your system. ⏱️

      @@ -89,15 +60,13 @@ export const QuickStart = () => { Mac logo

      MacOS

      -

      - ⚠️ Please note that Keploy v2 is currently in development, with the best - experience on Linux. Docker support is experimental and may have some - limitations for certain use cases. +

      + ⚠️ Important Note: Keploy v2 is currently in Beta, and the best experience is on Linux. Docker support is experimental, and some limitations may apply.

      ); diff --git a/src/components/SDKs.js b/src/components/SDKs.js index b6e685418..cbf7aafa1 100644 --- a/src/components/SDKs.js +++ b/src/components/SDKs.js @@ -20,7 +20,7 @@ export const SDKs = () => { src="/docs/img/os/windows-logo.svg" alt="Windows logo" /> -

      Windows

      +

      Native

      { src="/docs/img/os/linux-logo.svg" alt="Linux logo" /> -

      Linux

      - - - Mac logo -

      MacOS

      +

      Docker

      diff --git a/src/pages/index.js b/src/pages/index.js index ba654a28a..432501937 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -2,7 +2,8 @@ import React from "react"; import Layout from "@theme/Layout"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; import {Community, KeployCloud, Resources, QuickStart} from "../components"; -import {GSoC} from "../components/GSoC"; +import {GitTogether} from "../components/DevScribe"; +import {Products} from "../components/Product"; import {Intro} from "../components"; export default function Home() { const context = useDocusaurusContext(); @@ -16,12 +17,10 @@ export default function Home() { >
      - {/* */} - {/**/} + {/* */} - + - {/**/}
      diff --git a/static/img/DevScribe.png b/static/img/DevScribe.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9f935313c502d3b545f77048d7f744ff707716 GIT binary patch literal 42592 zcmbrlbyytTvo6|$yL*BLcM0wqEV#Q%aCaC2NeJ!)g1ZIRU_M7=NV?YyLzovZ&kfjt9tmTrt%6CjSLL{089mW84UnH0KWo*C`jO6@7*K? z@B`IVUf%-%uzLT#At@|a&p;_ndo4Xrz1PY@mM%{0=2k8i*6hAcu7B?ZM8thv%`F|Q zJ*h0LZS9>!8IIe!7^v*6L>Y8>Uvs{8mA1CCm-lzK*7R4=vh;Vb6trRx7ef>A6#@rv zvi3Bm@^x}__7L(FW%y@YA@KX((;N(-kh_(QkcN!he~Excq6~JPo~}Y196mli>^?l~ zF7CD*T!Mmv9Gu)7+}v!S1e=GSv!}T)o3qCYa0E1}f5wop_ONufclES)ai;n^rn!ZS zm!~KL0~*zT4K3;E>27cFpV6H?*v!b1M%HE_Tkp%c7zZ`Bz>@(#qrS z;lGn;TD$#o@b8hM{Xa9gn!9^gYx%iai!x|fd$@SHTU!4!!rzgL9j%?Lojw0rfa||3U}Y)fY47Q1{lD;+boBh6_=AomU{sk~u$2Ly9WGrGRf9HR{aw^3 z>081Y$9?NVe^i8hZ-*}q53^N`N_ao{TA~8%+rFgC`{xl69&1!A%Gk=C8q`8?>E6(z zMJPKX&<`owEI(|};&4jH+ql~#u3Vi9QYI#)dt}pY8fBlikFiL|{QHv5<`f2K{(VJ? z(*qIzzTQLr55M*u{2c->eF1Xn4he6kkW%3kGqJIS%L30PVsn^*AO5wDw5!<(7Ok8- zUl{ZCyD%O0(lsI@P`suLzU7T@^M4JxSut2Ra&Ocj|Tp(#K7ktP6i)H z9&D-I(g|=xRa5a^1<@46yXYG%gtS<9ZFNkPh{s{MxBLYpsGkA=KSYO#a1OuEvY4xL zywfK9mJcUNG~S`79YLVYNc7{6ymNm=J=zxAS&7;rqD=_$-y1tD;h+%_r61<(?QxjC z)73CWHZTet<$JRcA=WV3Cq(~w60~Ca>T@2$GqDu=yuJ$)Tw;E;*}pfbe4r<&DF2wP zdUw}^!rOQD5bwYGG0j7gH%V}1aoAF*J;~WzfO4bT?ECA8bL++ z*G)YK!+4J$umzj=wc^}f;klJ#0zuT3rn)NSzm%hRbT6r4MsL0r&SCsA`;GQ5 z`j|q0(YG56@PqWSE=1TTa5aqpb zvI-ZE3PUR3YC^z4az%lexEP-(RExJbw=$f(_rt}dz}VINIHN*1sJ_ zjEsl_R{JVW)(aB~W3A5(bfTLSWL}nP)x%TK&_pt9mtwRq6jMgL`F^1m{<@bM)s>bM zkidmX#EMJ>w~G7}dv+0XRo*mpXC3iL>VyHg~q4{Q9cdMm^d#qz_K#4tmA-ZK|t7=9R1r0nc+dkR_y-5B%koN^Wzc zB6!sh3iErtLTSDdA*zL=QM2zYF4ZY?UPxv;I_IEk`{5DEe#=KOS10nCmqNEuO?i$c z@ls;{2YU5%)_fe2z0V6iR`$T}TR*QQVj>ceu=PNH+q?;bmhk=b^S9YM-#~NplfvCb zgGX|!rHa;{T{zG%6lS)1e@L2;aEqD8tdC+?GM3Ht2pLNqlX?s~w0UZYNYr?@5ImD# zHn-2!g5AHaEp8`&*KM&_Zv1QVRYu_a5;*V?3VP)sQHoHXmM3+RM|B5Tk`KXwj25ZWSA?R{t}O3DUYi%{EQhmEyOH_ws9dCga3 zWJSGj?vBN3Qc7D-HI*epHTgv&*dRaQxkaGjKl zRFuhGuAkFx{%d78oUFHK%|VJq3nuVMRZcmx!K-CwC09n6xjfl-Zh{SgOJyT)YA95? zK6WoWOZZSFkN`|5rrbsk79a_H01(=}y2(vKYVJ0=uJ5~pPNS0|@QD9$3syE3xFbDy zx<49ge&bEih7cn(7!nhJ`-ER8lIaxxfk4(6uVXd3i|KM$xN<|4g~PbUrg}h=cpD|+ zeeA{7I~LE9OU?Sr5Ke-aScB8?N!*VgAni~RS~w#tr^=%#_Fv@l0^r&ZI1wdAC7RJ+ zJY6S%5pLJW;2JkZiP3BJStglw79LC|@99)uxNaX)PiH1CDc(ld_UEMDF-m>;P^cC~ zZ6=%vQHw@;ia4dga?vf6AG|Rcvzob(Gb(U2gt#7?j=cIfADyi7oHfofyc2!UW89MB)HmxT zb~6>uYyc+MZ6RORe#}>?iX*!ULzf{p_JTJ$8B%)-5?tiJKli3E<)4LQW25Ih2l%2&9>hEIg+BQaMb;V4hXrOH^YYVw1 zgQ^2{e-iJNeH0$kIlue0#YOP}OaN^m#?Ym!m=vyXzB-{gDieg7&Po6-TqslxLEs&Q zVci|2Y^$&=QtIeUjCgN0AY(e+SlfgS$D!|WBZ)lS5$zzqTaqlPe zYa~9V?DE&u;H9#3awH)d^^et~GB^+%1Xmtt2<4yLTS=cc*6bg=!^Xyfp)%6A_<%zB zHz#p?n8;Ed;l9eD1z;Jk*QJUmN7s!3GJ!y#h4%|Mvl5U6Dt}Qf?tMWQJ3dGDlT?xk zlj0bCw#GixRsLp8h94@(S)PX!M?!i`7aFl11D z50j9SrLAn(qz$sXjI@%r{OX$`in;OIl|DXwo4FGqZG#NP@&FnFl7>j0UtmFyFiGFI%cFU z5LvE02hu_eBl37bldoqEM->Xz4>m;$kD_2%hPi5lF;X1E3}yPN`8i*h7jy?nAWkO$ zPL<;d!Gu#-fJV^-bYNXwwoG4qD0+MZ{{sUJf{Z`2jDIw&P_qYK^ zZxaALw1OOPt697Gm5PiWWcol5xVEFIPV|EADc9*8(59Og$iG;x5SF=xNoW)U{oS%P z8eP{%juP*4y6sl^3kS_m#*3xR>B^H!WE^IOga1JP_zuTL4hA|YF*JU&GjYt=&t9Hv zvAGMK!EZ0bhZTs5xggcx4V0O2R-jS=l}mH;uG1TB&6M@Gm;j;t>UTsMq1L=>8NsqI z92}MNH7zwdK5zKVd{^$_C9;pEf{k{Yy5_(@d`9SeS7ZZj*FHLIM3Vk;{2E}B)kgcI zOY)Zg37~2qC@tACNJ#q1ovhDo>s^)fF_5Omba>IvR?9;AusaD;wq|w5q3t>FiwaUb zfIcz3TqS7>=)Ih+#Zh;pTZGuQfVJ~mumUid$eJJPUQu!>*8O@o*2I?8@a3CR*UW)g z1f!c)3Sp4wpY^vsU|hz*7PreGwfyMcnfrEvMuU5pL=HlmMPvjlBENL!VIuI&$0 zXVe~-ChHwxHvBo=YBHJ0LN^P0jpYTY91& z#4dsz7Vb>F|9B~GY>W`Zt6_)cYoL+v-|3JH%x3q*D4Huf$;&82paMy)&olCc8!11N zzry?6W$v~%3KkwpMp!YH<{#ffIs{z46}Q=TLRKk=g_ib1WE zz~Frm);jj^L8w4{;o5qGsh!R@^Fjr92Or1CCxvSd;Ut5Rkkk_knDz1(J3LHtw(ip4 zUSQ(`^pjch{E$L$+Qj-j6{nl`eeV`nKvuRvmX?RYpobTo-$pN1 zMZ9hOnH(h{y<9YOA7~dQxkGzJTNNC5^(gu!tAv|(`4kTTP8vh|32f1#BcYx^8hi`6 zgy4I-N$vc+NL1kbHJ>n)+R7aa^_klf`Z|h}#C~_ko+ZD25FSBRIsFo#dgdhzwJKZR)$b^W*;)A#`npIa zpIpCsBNl5I2M<E`cd^0AFJMD)E+eOD*m3wMod1XujnY?n+s zJ+KH0*sdz?f*BIuzkqfskNsi@dCC_xx`l?U%x58EUu+z<-JN7umAUR6UUQSeti#Ar zaI?th0cD-tCLRcm__mXt(ashtL}o~dV^nFy^J>_(+k`3TQuS!EAGpSXio+Pk=*Ut7 zAI*H1bM~H!=J7w_ef-|2?$?fV&#>)+^{OhsU$rOtZtrsHVBcflDVqimJMP&}ENXi^ zEoUwHW=9||g9=)SY%de6r2IkJ%LmgJM%%*cK=Uj_L zzXhP1LH?>voiKF$G(Ek#V`U1XK>11qc!HP}v?k!D?Go>NQ*eDL4YmYU>~Mxzs5)vq>qgYa^(_-1bP{7NPsw8P1*jr9z7s-Fz;+S@Zj_8jc8=uFxZvrj7%3KOVyG!+iI3G?J9c2 zH>4uD!G+q?TShYc3O~TDLKQrRM0>m*Y-*$5REBpIf(DWdKnP!vQ7MoV#Z!|I%X|U$ zf*MB*gBsZ|jdMaaE1Z^BE1U#V7@o;6Y=N~I1$5*lQYr@DfHK|!FDw--E|T=eCc~G>HZ5q&ddyZ;Iey%qoz9NShYMoa#V0cM@@v= zOF1|r<7oKx&?jDYC&%n!o8t0s8Tn}1^^tT^5l8)zS)7kYSl#lSfog}Sj$x-hddFYT ztH5$v!G~2*2CNzQ0cFH^lij8q%mV5Sd(PM>(dsMci-A6GlCG!+z#A;Tgul)N&0VyS zGN&+wUwa7`iT%xqSiq0rSj!gwhGOfdi?O312rLfrGJ{;Tk~RJK(|SgH2aK2677Mz| z$sS?J24|L5-E`w;>huG-bN)AP=X`3Rvx%0z&Pznt{r9?ja5E65&Yku41#$S&P=XC` ztW&*wK?ZHE&^B5c^#F`(u8f+we8*?R?=O;R;zB3EFWKlD$2CB084)IA zHt^TiuZ^H8uL2v{KKd8ZP5yVhyeTS^W|K8qrxe8LU%#KRtlq}vaVA8 zSJXNCWK7-peXw)!xZ&i98Hnc7;nIw+qh(om9`Sb39^K7TDe-nIxNSVneOloFUV?B@ zRGD<_`+%NK+0Weh+Gk7zMW+OF@XzNUQ^zl&KNoPI*(UHO3cm)j0E&U}jl9=I#M^Th ziT5nbKO$}5S_tGUzGHl7=f$jOUm!cKFzIlRH$Gtp-3Q5RH1TGX6kzXPO>y`D#w_;j zo6ow7jiXOPL#7m9q1%QpM;8X)ez#E=EnA|&FM@A|Z3~~x zX=U12lIG2|u)@t28wU2)y74)S(M5(25TJL#Pe)Os^1s+~lFN+w1T}vsX(IEaVgYfw z0dNkf0dOJYy$|#vU}|6RnhZgNo|~(TWd?!87Fo6U^_jcssy_auDm)AUIy93;yqqW8 z7_I;`c*|H@8p`lB$>!%pBrhqwDmis2myPhO$S>4?$M{pr%j&&sp?*r?V~ExQ30juN zamn#}nlnwHIsd6BAk29va6krRFpNsP47RluPk3+_(&NEG@4r zt$efAD?Y$jWo|#&78>iK(>|9*J0&b|`(7MlRg#2mp}35d#lT2kM+<2~!IS2KDG@NK z1PvRzH{G_(C;aKr_4VMW`|Cj_L++JUK!Pb+k&;IiTw2_6W7Uz4sgsg&;xYS&)Gxw~ zyFlhwX_kpB1Ey$m8o{0IrxI5gIiG{$*}K^$cwy7)omFH?-tcuUD_3l2%FgK@N=|;r z&ncpWEOjPyi@W5muFgL*h#}gCsP{8q0A!FylNw=-lnXbWDK>Xtz#M63M2(`F*?p^j zQ5v-_;>+*6;pV;<2Y<5g^mLHr<7>EeG0-*N)J``?>g~u-n`JK;9xi~RVEzsPEm`zA zo*dH;wuT}Yhuc?9#FF7uZN(pv`qZ=%uwH$=IpNxR@@j$QRFTGkhlkVoUg-_RRL|9NDi|y@^LbV}4!R0kePBNK-1O7#}lB)bHPwoqu*z*-LPFHqX4^*rdru6g4jA z=lI;KuZ1y>Q=mbAQK1h{UUywWEdVjxC*AOxcp903BA94n!!~L1vYD?dC{C->szEFt7z6xkQ#C{SRf2_uw_6(?q16%I10*I@cA(kia+B5$!`3df_NDwtSDl3bQ zXPW8-s|K6j@D;q;5iBaeWE|c!nTOx&qJO_02*ICRR zlsy~5i^OP!I5lVQ5@%j0BlmET9OZxGR1N?T3V@$!4h*m4Lqb|v4U)*H*J|%4FY}uk z&t1eDn?j9RmJv?SdZ-_wnc3(&82R^|fM1;CN`T#hTh+r;YP zd%2lDLHbuWaa&7|M34hu#nu-Jc@*1)@BFhoi-$VUjI(S}CM`OZ<~R z--?9*T1_0}`N+RW0P*I^bZH0UXM_-GBT@Cuvk-N?1*5WNp--^`_;JQW#DsLeugKuG z;I1)As=k&_SRlx@eitX)vdQWllz)U!siY9yIbZGXWtBI4idM_~dEaxvLIPfpFutD< zp&woN;f0Z@XEd@`EYcMdOEgP2o{OF^VXnJ!R5r&@^KN#8%*r9=#_7^P48i z)-h4n%VROT?T64JN9uJEEd>jhs3Y;$*#t5xx zt$?++y7P>iw!wiZ7q{_vHRJaYA(P~aK$=;G?;NbQ!vPXslApA*nDDvWkCf+V=||C5 zvAl|hON?1!G>)!DO>=L8O_OfAbz^xK4u(xC%RehO-G4i~Y}i_ObL{)5w%k=uxeg znW&j8T%iFPQ4A_WZ-GKv-Y}a|-k|2iib-A;!STI|ewkRD^cggZYU7c_3HzD3kxskF z&2_Q$&=og%gm|e&;oH|g5?9718NJ~?4S9-4Qb}boKUD9kYBrZ?6gqNOQZ%|E0ft@T?9b9ENm(S_7u8#E<82D7q|L&9~QNvT8J^xb@SLqW1>& zEDL+dD+kUmOM{!+9*ec_48QMVU;(r0#m%gN{yshLi0Z37_7)`M99zSX*E1<_B26>W z($bPl-X^rxAV%P=hJjO%<_YD2vliWXy&j6}D|5hsT}2|wfZiW6$)qtQqEQdtOQ6i{Tz z-$=-W+6EY1AQ-XCY~Gmi5DTqb#i))pMt+B8X14wXn(rKE=s$iy5G+0M+3M(DJt4xD zP##9Ni>Sp`#y)+C6^DLm8-IPEzxMceF)F9&fE=)p!bk4NWh1KLzSf-H_33ohVSl$Hgey3-f9pwbO zR$!VO0E4M{+n!(nsOeP0MUVl>CA?}@JO9vjuZ`4|81dT-aG-h?h=n*;5 zB}4|RWMHob%O)&(L3|7WBk~59nb#K zP`PH2shMYpiZ6(pDIc3saQ3c*+>3&numQ;&4`38d0J~1$5J}>d_Z#F~c>Sr=Q2Dh^ zfQeQMu12S6&he`1i^HkQ3l;&;ffxB+yjeZ^P7qI?Rtp3kI$cJ96wnTa7>itK<|H;A z==;GMMSa6)CvN;m*S=zI`)_MegC2bmp&`@}ZN6Y;DhTSf+@OU=f9@V1QZHOqz|?{} zZh7Y0<^L)RD3`#yy`Xyc^EK7bgF?K69o=B#2^`b_m==voxf0ptln-5fWyD(S3?coc zi@HuGHice9v1y=;+%=`&$1(DQ9i(uGl7W!aNTT5BN0C)j;20v0)yoxN^!N+prDL?- z)7e-(*!H`q>!4pHlR!J78JslrI1P^^9->9|4J|Z|6Aj&rRpu{!zXEyb-L8cHTm$Qk zm{++cX3KL7AXg>jx069?d&aJS+_S|GaWAF>B+yXXB#2t?nsiA&o6Z&OTkusrw%Eb1 z!te0-Xp7-NOOBsZUdmq z53)3B97XYX!MOCFSK-NXK?#9;<9l)z4E3WaS~;0;)Sb%;O)9jqYRSURloJt?F=AG# zj@}Z)|+JiuWEgzkN@kfaiI~QQR?Ee^t^C!j$PF`4IFq&F$k-M`5 z1=cbZJXyCX3;NJ2lACNsu{@QOM>p_H$){M$mmpIMeCkEbXPrHf`sh5FuHzuT?G&({ zSc|u2m2S5x^#W7EckIdZ9iVj;<(|S3YF@?{r2yvmd61(~H{ZGh0dZSA8LT%j#0WHr z8lp>mNg;N&(dJJ}hdV!j`_aCQN=CT;fruLpv6rt^Hp=*n7W1%E{JYV>&ISS#QZkf4 ztK)D+Q?&ZDNFeWuj?=5yvD|>^3HOC#Z;rTCvE0QiLpWp*-nF1>0CdknFuc#<@n%nK zMWA<|u)dMwT0FuERnS(g0p%FWt(L(lu#owixTCj3K?c$SbCZMXP?yqF*@P|_J`{&e zHPm4&fNKrh=Om$r50sy0YOVhe#SQf24<)R@QxE|=yrmnVw9di0$)K{$6%!UYr&kvR z;jPaoM(%0UkS*tt&CF95r=k0%FHU%VF>F}WM&hbWd-~0fcj1NErs^VcJnsd7!v7@6k2jJGrG26UW zqHmoJEMoHAKR8l!)sHHDVC%-mX6g$z-X*TB$h~nNyn5fG8Z~0SgTHnvwOn%@YA>md z@96IRsLeD{3M#(HJHZpEUGDj?*vnbvMUU{8U}tI?C)8T6-j==J74UDRpFcb+U;{jTdA<6xT30)qVf)z(gZeSeQOls>qy zlXR&u`Dn`vB3Yab5P?4burD!>h#?v$EP;W%+wyqThw5Jd2LZsuvoBc{^Bf2d%tk3R zTSTXnL5<)1;Rcqu;ICyefcJc?J1-ZQqOug>;^8zHqmf&K!^4ck_2#&VH@*S@4!*fI zBM8XIbP|nw^;kq8617PHA&2TC9ta7G2-RNJvjOMuxL=A`D{E-L^UC#ii8^eCTEKbI zH{;d@^l{T$an#M}o4EP9oW08yPU)SPg(Vrd>y~tH%Z3t8 zsbrzP@qJF*gDvgQ7;!Dz?(C1wtYLgm(ROI;_s{w1}`iz1{*C&<=vp# zCw{A8Mq@^FX^X=iL{zKiC%-W*&$l$XSy0A(hrrC62B-Ht(jx}JhBo|lu!YIu6~JyS zl$wB{3#^(E8nR&W4v>v>Dr$#)ySBp>XOi0~&lh*CIr z{?y`i7DRQP@`3hgDs^uLiJtlCr`304W~FNYPh$8qTLQS1omLbqh>CGe$`UemII+?g zKvsB6dmAmAIe9*tjuXDk1A>Ag?r)RYzP?dGPjLUn;15ULKn?p12^8L{A-C&%;OeKJ zhKb5;%A2Cal$@T@Vo8@H?YanwNYjmgVD>N<;qG9j;rGIHwhJPS*r$^BuPGo*nRPb0 z(|frz5@-ZWEu|*%0MoSz+8ODp*(W!3sqv^^z1vg>8+2gA_=4o{#Vp&B_N=*L-L|+t z@)2>BSb2b3$AZlyWQkYg_9q_>mzRiNv3&Vj-Pay+sS>rxAIR=%F$0o~{E2zI_40 z`?iN)_5$GxOJ=G!;8 zcx3UBsqQZYeS}l+WC!Dne1>srt~<)nE;{YQX^784Vfe}t-|jM2*vQ$)QE`$XRHKNSTDnObw-*(3Yw7x=@4A$kM>Z&Nse!`x4Xv2~bUB&e(R*p|g zdSq|mE0%ozWyjOnjs>aJr5#wmTT_><1KVf5@mGFRwH0-f3*qQu5oD~Sy#zIQu#)cB zAFuqU(SuTgIo>vG9w3lD4RzyO+4Rx22jm7VuOXcq0*?T<8{H}a7?1o$svT=5P_5qW zZBz1`PEX?pN{LSCXflB~nHD(U71b=}YA*H||3<$4G_2Nf&6MIe^JYGg>(_~&NI%_~ z2YydqPD<G;UUT2nOcfxGsS4RE*Kfv$3UOe{iyU6EQ?ynNzqFAU`eL=eT5XTg0# z^Y5*~XRvtEI3dm7qjW(cgSI_LXMTzB*BD~413!K!j7dcl#vILhH>AX}bo#<_HdgLB z<%-Q~1UAsQaA}6>9Fo}ey`3iLj>U=^Tm%>0FYkgz2u%;|1jel!7L40vuqR4FAQG7G z`2?ZJXE!A9iCQWM37Oaz^A_;-lqZUy_vUoxFX=X^OvnB!Wvy-V*7V?JVtlLRkM%iz~rWfE%NMAVOi%$xeM( zjy>iBca01+0uDn(1{7n~k$`4|vrh#dO;w^a7zgC@l|Hj}Ar9%1YP-a~Y#{=$n#|wu z3uA)_R=4funT0yMkO1dLs{1)v3$m*|N|mm+eCed6Wz{EwEDQ^rbME`<%8+L*rGe5E zY`>WpWZM*fBJLbV=b%v`cOKWUgAodID{T*pg){pZd&A%MjOB|r14}dzB*~16;*ufm zecP3zu{?Wn(>Ug6oE3Cz$zME7%8(Quc5oDesnIYGS9dNvRU1kmzwQcW_39KJxB-@t z(^Xch|2zr*oJHLyy=ne7<`Hc-B^`;7Pp+^dIRIeJPL zw9oC#29}TLjlZem_teXBlKWiWv*{`maTDklE|0@Pc$R2w4ySFP?5m?u$S9;d*fNzi z0DqQR7;Ac_!-Q>x{Nx98eTdVz0ZYf6Gxv#ORJmwRJx(4K4TD_``sdiWU&nHiAf=LW z9pf|{3|Z?KjyXd`3;JDD}b6jGRS{_GX- zR248D1f15pJ1CS@eH{qr))SCSM&t#W!Wwj5Bk!gaCs{p*a}6K;2xcBrnUJ&qEPy^L z%zbj1Cw}=`5kc=yXYvT4LXPNi-%l_L9}Sl@quld5c%#6_`H@jZT~#Ywc>G~k;0oRs zI};Cz``FGIe4xwl)sd<%ofr@ai*nKnuGc8I28;bPLeEd+Q?XR=W%LW~7{q3ls%d)&gA zHlLHY7qXIv_Hq@!FTBPi*ZDf6Thk@p4V%soehzyLJQA<#!M*Q03ZIr#CqhOni@+|6 z7`wKC7*A|kbaQaiyx`A1{2fX%IvrMu{y`>Nt~(Ml2eU-zb6d4Y>`S|22#&sDBT-_)LRWI=PrqWfsB7P5193 zuU7^bPc6K!A1he;xhBN1aR^~`2ek=fPNh>}e-gwIa*1HCJmd1%CY#|I-%-AJ4&P14 zV|C_>E{dSlp^LQY z1Y*?q#=c*>0?Mzb=#^uqaoP>Qwnlciw)3kbzKTtXxN*dNt3&x@GS-E;qb98oA-PC_GfF1e$Dj zjfR~w(z=sBGG!8sxu%pN`jgfi*ZFU&zFFozAz~MzoKXJZV8#|^^=8nn;1?cy`OL}M z3rR`(L!bUHXE&|=;U*6@`id+ar}*VEIImos^{P@HT&w15Jrv7RQU=*InfkuR!(Hbd z!K`Vw@@WgvWvf~Nr1m0Q8VVPSOubAJHUb+}6ygn#YLyr#mF&v^7|0~0pE90 z%vQ>{t^?6_yOZL4r^?=FREK28p#%`SnDQ-G%)gZ(kD)|=IG3VgrMz#=@)qw)JS*HK zAL?)LTrRhBJ!W7J|D##WRfw(Zhpp4G(H&+(`{V1jzTdf}B{QkbN7Y9S_vfR3S~%Y` zKU@uyUKD*~=mQhV>%mwL)dp-h7`TFZn+=Q8@E9 zc`Ymwi9Gv56cDz&?mnQ;jC)d7()Zq0H4cBJ(KXOYPNNXEMEql|@MPziwa^_*c~G=! z*_Il*AmQEe{vEbl$(#y#HUI3Tw$~?BK9a*%9G?0rykyd~JgU^N_fFK`CL8^5^$Y-k z6?2cy`mQe?OCMFFol2C#CWA>F3B20pECiPwYaNAbIq$s!92N=%5_XEq)F;GEsN+%< zf=VmjK@piWP8WM?YT&(Wc;xdg{o;=|h)*`!K9#78JYU7Jx2zK^TReWYAjU@ivg134 z_Y}$Nv@YGHlU?$Us2+Gdq+B(zi6?%|V-d0Un|iN~yO{8;!Z(;*6@f1E>9qK;0uJzT zUZv|Fa!NW+-NxPkV#CBN~G!)6+ps`yzS2^73wGdbhY;UH$HsA_zHa zbA>#`iEm*);179PyQY5En$|D1*J|*i8)Ts-KaVF2fmIO)sOmF;OQyGf2 z{lqKX>`I$gX$u-+Xp9;7%o-iEojMXp+EUeqXBD`ijP#8Z_isMr)BNEH0P&m4C^&!> zI|V-crnE z(w-r?MVv|r3F}w-HLTO(@!We09{AZZe!&QkSZ=#@I5bCh3vl`(?2Lg0$9e0O>P>QH zEU^Ak@g}FaGTRi~v)*BX&up}*Beg6laoWPZ?QyVtok(-(I%($Ja(WqX z67<_wJB_ZZrk(A4EfHN;w4=nnr%EnqNpfu|hWGui8SUGz&klFLmcd0uvX+oxUf$>L z#qK|PH3-`GRh|3XZ~IOz%zqsX+in{kP7Z-YFB*&M5CWY-xBb-6aKcb@D_Yp| zT)y;k^7#C*bC@Z9_%#OcJJh=lakzMgt*qQy!Ean7;P2DBZ7zAp0l;doFWXA>NCd48 z_)Bg3YyPkJOFcgwOg&KMyg}7DTluj!vb}JrRChpo{vah)U%a`)&VgL&NgB zmp|Rc=>pzl&c0T)A~1@35&7Y2Y=TZ2!$F>aJa_471&d?iJFnrs%7O57ljV*&rmzfI z(S5U_&Y1XLm?^Bqrq zuII_fO}|7hE>S}wBeL;kNm?j)o@sQ7OgS2zoaObma*$UB*lWJNtBSS1sADt&wO=NqDihPq9IIE_js&2Dz$`v!82%>?&rz1S0+@>rwvqH zNfO|XQ$@n*v~W`#yt8JC{PrRzdwja7^~eeHpcOhGCR~A@TZ`{R|Gfv{V{Kxn82va^ zR{)}213X9^eUfNnEb1E6E{~pRvKX)qG_&%yjjgT1F-TZJ43$$;439;@DuSh5$ex9Z|+QrRWPA91Q!df;$|E@LE7zr%l4ZBFM;-8G8UI}dXP zh$Z?p$sw+}+uMv#9$@ds=hw#jaTCiom?Yp97k$#wnC_=yyu)V@mlIAECD7w2ocqV$ zy}g-SUu0ukJp2$OilYX$>5 z#6nx;7LFbcEUYYmMObgEv0Fp_r1z4?9T`W%bqbURlicMqs$`tS^*1z^T&lH3FSg_p z-)2E0uf8huPtgYgu!b4R@0TD{KL9cyTF}Z< ztWZWb?6By_F9`n^OJ5xo)%$&YhwhMWK7ce*(nv{43lh@Z-8n-eAfSMBmr8fHbc1vY z(%n7p_51!@>n{Ibv6y?FQ_ntopP4xOT3?rmzR@?60O|vQ_pcQpEC|a;#NUgTx;W92p3{(1$yblV#~ zz`CZ;I(8zD>Y@p8H$4r-)vmNhFRDtW5GYuG2~HZEJ^Qhn*%I=tCzKZPKc(k&%x7JLr(Tn{c=EV>}}|Z=YP_l4N#F zH0F__geKOjH!ne?L}2G{0Vk%Ew_&QtODzV%({)pS9R~UT%yNV!k=`$VcXttNz)Vo9 zyi>z8&^4ym74nALmwF!6_-Q-68c+cNDb-t|<$<7L^&y&R(6xFl?8df5!RDKnkm-Zf z5YJl|Y9}3g71o{Jp0egK7!#%e?N37b0Ud3-aVRovwUPQbv_~>ghWj)CF$|#+^|CL@ zCy_i3&z=^eraX&=e&DM7?OWR zlq=n@me4))SAN}q>GHHdP&>|6_?z#xWgIgBu^E@}pr93!AJUzATpEl|dnv<{K4y{y z-iTzHz`yw1@MW-&-+ev*<4DdX4xWFozM}fl8MMBe0EsyT-@7}SfM`eQudTK=vY){D zNrzqbN{jG36G$KV&&k5IcWpM~h`sC(L)xgB$b3kNU|?r*j+jwwAWsA5yp00&>ig1e;|Jza(t3lOO=mjdAlQ7u-yRh#tdi`)v_gYlbB}aQhV*Wl-XjZ z{Cv52AmMozkY@NblTgg^W2<)tofPShcVCLUp)%{KskC40OL&@_Jqv=EKR~KIn=!;< zo2VTAhYR%RKs`BMoL~US96)qYZz1Y`lyQj}4mTby%PnkwStpSIhG7Q$i}(3VG0|Us zDZdYuG2j+r6ylbpi^d>`^f83;b-m=)`cp34gUE$nPzi~rs!NCX3!Z)g?+H{A`0{X_ zfm8uLt-~UK3#EK5d63qDOgvv}r~(x%J5jiGDO8uAX>G`WZkgQmMXMXJnkL#7gZ#vu z5Sjcb(%=g9AD`Yrh0Sz!ns@S|nnL?(sE9;!_ zjL4uJ^yigVZ3YTfn8_sQP%6qU8yf`+L-567sLjYciRDuFs zhN&@Bo^X+$Hyjp&6VUrZAN&}5VopJ%sh6E#x`s)5;>*FZ8^aJ-@h0rMJ z&drkd1)mbk^FnXYOhOqy2#XoKqNc|sk&Z;7eyWs`axEP&SQSQps;JV2mBMBB2PXdO z`5$@1Ayk;JK&EE{WpkU$G-yt=r_d#iU5aq(i>`w#g-7Eolb03~>_vRk8=ii-f$Fbx z1e^K4CWn4SHYz6MGlJ}iet8*$lb3kmk*AN_3>&5pfcDeHOWHR3rvXm(wUp$9F?q;( zv(VWT$dA&0$)Dv9Nbl0;Yg-K!A<^?U`!^(e!aJxgoxr%KZoOV;gRbev8x*Mzi6aj8 zO>zJF3f>V;+CfVTfR-jf2sq7Jf%a7Z(8uvXewrvHMDCzkfhOBbbR?Yk*&nv?9y8|g zpQt8j2Os$xb)8#s$$CnF36vZhh9>J@1Mj(<8|6@|!_m;f`i0|&*vZ{8Q@W%z7>Q1& z{+hZpIjR{2h~AfAOiTEVt0KUJWqzU=B!*J)$r=gx+d`}%f}7p9e~?+G&KVuKJfy%bphcSmknK=d@i28F>35vXQkJYG_P4AFP)9?m4GP} z=kl8%YGi;ur3`1k<&CntS9ZE2r%=wi$?Q$t`06Kv7PrIOqOw~iR-1xVfbk1XuUTy?66rEa7T;C}jLFv}U$l(23Y|l6817ZyJBn^cLhizScau zdS71SYjDvUc6O(0*3->HXxbHnq;MN-zK8f}Qp%?`bi6Tmnx;FH+Kf6R8X16nuc`(p zF)fvP{xzUn%f}tsq-z^B^KIK~A?uX{PQO!?`a1vYIXYC?GowI!V1MD6^dZTFkWJFA5zLFE)N0b)Q=AdI756o6l0-NDW zt4$}i_Q!?>rRDqL!o3BP*9F4#87^S6zves2>sS8!+uk_Jeh$b#iXj1>+p3C&A8Jq} zA@it~2Ac*yb*!CVV97@XY+=cBCz)Noa4wXaTsXEZ!UQ(+LXTTx-cNP_c&Mh2+6Ys0 zcs$G)f(!O{chsr>;Gx(r@{GNo!a$fV*VR77+%-e~dpyR&_Fc7FA1PKrR?@&>W8Yuv9H~qX+pz^ct*jQ^td3*~z0FU=Wm<6OB3;u!YE;rI!qq(4%mAqR zIfb$KZJ)|zjh?WXb6#BX8)2DrS1v{G8cytcDXajs>60~3y(-iw1IopoMA z2$h}v;SSCiAe!FejR_lk_>&L;Y1;-5F}V*$8Pt26GvQe6*Zg1O5`H^jXKXtzm`AB- zTf+ZKUS(yH!R-0vpS2+TeV!2K+=+DFY#4QKR4f6^*(sX0oeQ3Nil|4ahwgvjgx0LU zy&4wnSxcMpFm!%x*>(KGCes@~tHnkZ0y?>aH;$_y9(Q8+aJXuO`?Eb%Ca74Uoj+&#%ZJWBV#zvM-1bUm0Rnj)m0tl;n{cLAMPdFwnO z-Ximmd8^OZ!$_yJZ(Uq(Wkn+AWH<)=Y*Ekr^O)E18&^lM(OI}1Gq)kt(`(~ag?XdC z%FgtEb_=Kfc)Wdu5;CXA4Gxozu_@og%=Y5yHj^XcusDqVQL18!xQAJ{ooiB9Dcvi!aBk7^e|)586? z*sHzd?)Qlq^IzW1)3L$h1YaXUDq*~y4hdr<7U>U{kGnSQ<#T=v_~xc^JiB*g?jbSs zRAr=+jG@0nTI0%S=MWZAqQ1NceD5r^i3X?ue1Hm!VS?&7i<$T|7NL<}+6CKGsbC_( z*H+C$if-M7LhL^&tIK_Xt>d;7>~dftPQ8Ko52+{DDuQvXy8FmmY1$Ti0Jh5|IiLr~ z(u2TK+Y!#Wq$656F+~k`4oGE~35d$Loa>bE`~A4*Vv36lXbY4Nf??0w8ULF60sG2qQ5jMZCvL=`W6qz;5vc=7)^$o#zG#$(z|{V{{m=O$^h5Z}-~R1O2Y&vrEV z{DHzRdVIoGB-_y8O7T*QbHaG(E1y7mv^yryRs?;UgsUA~iMvcHxya5*cy<0^J;Jd{NSs>%5B-7R9_BO-9@t zpy3?R{#!4uIdb3XI$n+bL0Z}J1DsQsO4vz!Z?vrMHmI_TiRgF2crR$U5Fq8`Frl|Q z#$SQ_WN!PtX0ZdP#9;W51FWwv;9Qu&+3hl&PrhL`Ien|6s@T7@V0@^2$-zx`=+&Tn zPX!~{FyiLhvMdU)`K_0sa&HlBdr1TNi%BT|<;Vc<_#h5rzZg4zq>1JI zhY1Qd7M)AOVl|gDr&uU|DOJ#bk`p6r7B2C@4APe|XatSTj1iDXk268&>hJl3V9IZL zVk=rF(Ms8l@DA+u8+eN;lRW3?mv&swbjq=tcJVc#hchaVpKC|9_r@A!xzoD=V>`~< zHx0^Zc&|3bQBR5ePf9G@F%%u5Kb3cc5G_oD-C-oBhDqk>kp4oLfP7kL<4*cau2F)ux?*r2Vnxo$O`o+0TDNujsoK6zBYDK zE9rJ8@P75D`usBDmbvThjR?_??6)&tx1{68@9k(^-J7{=yKPSoZPyYI6u>h zOe!6=FF`1gQvVZs@dM=)1>g|9^mB7=gt>%iC5E1`i0@myV*hi|=($fjZR4WmbmEln zMs-%Zs)(s6N)P!T9C!XYN^+2lK!3M(vWe_U1ARV|kbZMZ7BkaQbz&DFhOpW_xKRJo^@= zBV!of?MHt=csav!Hc>kU20K3I8u4=XZd4l1cB`ueknZzHl zO|qi6)pM){gjxU1Ann76@;|U%@(XhSPg!R5B73djJ-CNB7(#H71=rk6Pk2*t*muQ* z8gS5l)h@^HUfv$sj@vm?L$pUN6D4V0Hp_GeEyEpuvuVfv+8X852xL=2yyKH+>(Y)m zE6R3L?wkk1*s>O9E@vBNR+JsSnRGNNs-Tg8{hgU)#$GYP0O}h8W7#AnLK!>iM&x$I z8#_q`cz&;YTu6@GNtXX~#Ck9rfFj;+Se-<~~ef`cx-XuT)IW{as?)wlfB#Wc#(9Tr}GykrgW(6)=c1g=r98JiOVzf}NI+=<+md5KJrnGnW+9HFZ zrRDX0>LH?dR`M{(qSN;n+ynAl#&g$GF{HAN<_3%+S4YQ;&By@8v?VlUbZjMfk5PwcL4~WK6tVYbm^L-np)Cy)f|ba(g)CKv`}!&LG^X5krBIcP6|x z?Az_0{mj%Skrp6o&jjOJzn>5i6z$&R=0`|$!7Y3>zMs!^$>OMUNa)3Z{$efbm`A*_ zeKpyxwV_U+7}yQ^$EyGb0zrX!9z)~t zyXP9?ao7d4r+l!UUEZ-lB0|_vzk46knpkeS^Z2*Lmu%N{j}H%N$KP-cDp^sMi^%7+ z4PKzHa{~h2K4kfGRnDJaDhN_utqc;YW1L-|ga3eo&6u0tUb>W7{DAi^?}uLVV!>W3 zSd|D%>HPAt%UrUDvMdG1OC8QtekOmuZmOz(D1_G6Vs-s4cPzj;XH42^WI2aICVlWY z?t&u%b61=%~jn{lF@uro9@W`SIzk0-r){mT8*|36 z0vUwJ#m*1&h=0N!vJT2LHWmwZ+$zUR&I z*~)wO1)T-z7R3xyRD4hw`;A(4?^~&;fl|w z`6@}P*mG{fCPxqcBHF-1UY$d!pD*WV!5w^|j#p(X5 zdtP#HKJPTX7M}jLH%iNM)`Ccg$x);fiO29O3VHNsHfZPtw>&&eMTjNs3+pwL-mBZM zc(Xz6kMIJT4Xm(yTFfxNi8Z}kMDy26Ch@6VWVB`%qQrV>OJ%Xzb00igo6D;=NiO=N zA3c0z?YDnf&#oA8rjxThS9+^uTCl&txMw5 zEwxa#Tx!Q;Oo-!wdbxK!Ji#a?R}c?~nJFnjaf@q_82}`VDo~a3PAY7na(oqu!6~O( z4oS$HSait$>2CS(1101y82g4xmM$3%Jd0zm$v7k_+Z<7xWBV?aSMfmPc@CWIMAQNx z0mb>~(A#FCURZlj8v$71+J;*HVXYx@na;vJ?()9-Gl&wRF~TVTgKzwy zW1TP~3kXIve!grxRYuiY4mjQ=_ecW{F_knaDJdl_i4&Nd1SUTwJ!Xj4rDpKwkJ`lH zT{LB2z`FJeY(?zHYJ^MbN(W8Ljw*#%FSY!1YkH?liui`cjbf+0akRly_)zIu8I?pH z_M+3{UjSJs6N`*)xvS;PPS~J-OBb@+d%g7I!Z&&oG>m6nm+=n=UJ*9Ek?ZPv$C@wC zq9+orgqJUn8s0mBnq#)D0WlqfO#kq$o0AfVBFyR7UZI>Kv1xCdBKV!KxOZ8GY59#{oKZyY^bQH zb_(X_TRS4w3KI_o1Rk<-+My{lBn9z05u=j1xx>eY%7-P3rPurX>6_-!GrsL1vsA{I!QJAUI%OK)l^wVwY zdY{iL^3$F1;gfGj-H+kEBHhLhz>tmDoP*3qy`l(^#|5I@P*Ew#Y;CN64d3edRF8EiZkN*uXFzArs{ zR@yv>Z^yOxhsT^vYDHOdtNwrJ%vBLze)z2rNJDf59!a(WZ1#L&@QKHjqZWa{hox<~9{Za;oT1hgvRzuK_&Y)_bqjRfdp>%Ik5E5EGnDe56G@1fAh_+hw%CsR8+nff_YdmfZ4oB@p( z(&78Z4|b?5QmHE%rEKboWetZRD52bJ}czJ5ZchW4sv5#TiM#B2~>PHn8WR zJ}T$qGZbP8{xaG6ws81Q!I;;4hSf)o+09X6JBNrB^;~+9hn3l!ch`tP*ygRAE7%z2 zZyNsRK;)nUHFSMlffI+UG}TQ>%pEQN4J)o&noS~PG6_q~Wm{DC{3$E<;(-7g~5(JDv zu9=%+Kdpw8myRSBuxE_e6R`bi7pW4`>4^tsmQ(+V+F)z{V0` zACXLozlMa+pMt#An$+0bA4`%e-+<3x zsDZo>qrd%CPnKuPNPA0bvzIMZVV~|=$yn6?OO^|4U0}L_znf5P95X%L6^aAfW_)n0 z!fA^H-2)aNaP&_7cqy2`39<-mKZ{08o|~3TVk#@afsvmO=4d2z4@3R-+K#eKy5UVg2uMp|mc3A1jT}wDiFQ9rQMd?k}VlGzfwT2y0rP7LO3e@HGvEg@Wtr1G+F3e^N!q3pNr|`#K@A>~a;2y;DKkSt}JI>Og%WX zLH*9*{l&%E842TGBR-K*`$CD`GiuQ*X!f!=5E<5kz5Pukx`&(tKeSZ>eovjbagboJ z!j#7G4fs55Mo%~(tNL;vZFCKry$CBp7nSOc5>;+Otx#SAjJK1nJX6iL$t$|=9SYds zPOdj3dgHZ88d&<#L|^C()4R4wO$Iv<&A%97Pvsk689R)_aV`Exy|mVhzrY+GM-b!> zy|`5}Z;UTaV>xIbZML_yAMlEwvu`s#&Bd%Fxcop$9FNhi4WeVx;3fw@kbGndyZ{=U zbl-H?gFFSIT6zj$!bqbo@_)ix zJi2*60A(i*U<8>*sJ6TixGR=eqxAjtZy?6lQINF3$?jIHT_~RbN}Zh$LQpiyb^P+C zlUGz4qK9oWn-r}or#Tpq64wk<3D3D*ATWfzekUY_S{xXIE(PF^!Bg&lDxVD{K)Bdg zQNH;EA}BN{>;7Ucy(7mRvYc??2HuzRu@Wuyl8V`YVDD%;KlrVlkeEhg0+o4A2q$- zl}4UjgIBvC=GvcdH_>d#_6nTwg7$(tW zg5pabrpSVCe1aK-&u*2U%S%&&QIP=&P2g?ZkXLy&3vN31tKhRLGsj9`B1qE}H-zD8 zErj9j0I)|%p??CL=H@zd6nQ}#qztMfbgp>6%#vk+T7$ScUpi(rv;?%!eb#JCK6qP1!22*n zhBcp?BEaW)xOMhkCeqAJL9Ss`10sQzSGn82s^Ng$6&)!iq|KyoVw6b8x4z-c$w{H` zju|HwUjf`LL9Szr5YX7A)BuO7Nj0AY{}5h>OiB#wY@{N));r#Vqy= z@h|cOpvo`*M{oDOmYFqUAgdy)EIukMH$Yr`Uh_cltdQ)|OYbvn`JJO~Qi7OKexegX zTk6Cln0-EjJ~ihEZn2TiWXUI!m8c3DNjE|?=7XI`L@9ayo!pBCB{y^R0IbL}x}kR_ zCv2;DX@5vb3zaP+51uN*d;G7*7Q^+?i2uw`qk$8P7S7m9$YzkDDP5ot$B>?gW@V1EdNmZKfbW6{@5=JOfsb|+1CD`0 zkwd({H3&R|p561*At3h{jqE4k4|7nhstVH5#v!4+RO1rN7~U4it25tOyu8~|`~wR9 zx+gCjtCLf*^YqDwIjv-FIC$AJtI?txAx5%8#Rp^p-$aHU=*34JsK=XEkdes6aDSpI zI6qWx+lT_IKPMthtY0XCSb4Mbf5?$6#?0d@7S$R?kD4^>cW`uX=3B6o?Uj79e1v6j z`-*WH=7Xz~EUq5iN?fOCG^~bF-gl8ow&R{S_&-XuxE!5;=v^ zkvdV93oKd3{&LgXeZIB!lWz<5{imxuDRMal0EaJr_03OxUZ)kY z_NTdDpL~LXF=_{36;?pc!F=ZQFTXpuNnY!L_N)naX75-47pgqx37y4pxj1TT3Xty| zhPT-B-uYVf>;Vy*0tjNbceqNQ@1Dbk`(i&QpsnjF_swd7p{hO#nhz875(i_2FUJ>~ zwNKg0<&bu<1&<6CwsvOp?3>MiK{HE6`Eb|K13vxoUYRRP?nu`QOgy436+9s*QKav* zQ_>7#@~;u$yL5#(4wdMX*P$sZl0mof0o0*pxPCgDtz+EhU^VQycpb$A{-xrLZi6(3 z)_S>Lf4?K}ko;wVu!Zaj(FX2%UL% zrvZulL_9YViyQYfYja%bGsfQ4Jyd-5{{6rY$Wwb8j`u0XJZL>8Ao-+dlq(x9%K;F({Lx&#pu$#z8K; zlFJvm+3yYI?b81VUB=ozRv5DUC8DwxLz&C&f{_5Ak|_z?c;EysT)C7PKQ{QuG0p4v zb)btoW4@N%Cs+8xyM|u2T|pKM3KdW6CO~b`eDXuRu1A7}sdjjwBom7)!~C_x(7fNQ zq4mPYz52{t?dr9bz5@hZc%2ydoEDW)4nUy&L3R z!ZO-kjIpaVY>+T$QadC2U4x9uk6aDJRI`LX_?8IE_-2CtbGF7=n<6i2fI#oS(FH^x zDvQaCIwDk9gK>uWuUF~EG#54)MHj-`lAuH_&wB#^fZ+y~t~@*}F&U6`#)rpQ7EIM?#`>Ftr6 zVJrVe8W8%IME!->NxB~sgTHgZ%4xDgnS*dbKEAnJ2L;34iG=l=WB~Y4mG|8*ky|%z z{BveWB;NHfHn=~_?2KGq&!6dY^Hu%#v3E+j}f|7f_)QzYwUQj;1=@AS2RLzkq8y zZ4iGLj7By{K~Grp>vRxQ-yft&^H;{%8_GO@2zq7M!CP24zDV?MJy1|5jbkH7OiBz@$~dhoHq*swS1)Y$8)?V?>l_AIzSPYunb5d zW0K?;_?&|PX-D4z3H6|UR2*U~OB*-Lxcacs%ISb(a5}2m!k$DKXg}2$7w1X3 zy0A72Do}VB#Ph+vFcU=e(oe;j=(qg63s#c%RH+3R#6+h8cU3Woemdi4SJhR*#(OGW zeU5JQ@O8h9UesCwWzS0>4m9xe9prv*81UvNd5y+o2}7lBr6Fr=6t8eQ^W8SLvnO@+ z;6}Wv9ZcKoVNk62<~wf0t-kLESow49FR*1%0Tj~tK{xDOc6q>jFP#K_sUCU4L_Dh*j3WjAEqaP( z)W4C-$qEWGk%(oIL&32{I0PTVaq;KcRG+PdR2e4248N;80g$C%r?!>gtVW>ri8py7 znaG@k;jgs2LZIifg2_*@+?tARob`ucU@x)F0u(NvF{x5=3z^!RlOS z044$b+pk{$ue@B~Ce>;U%GrKATH(4D1&EQ_zK2z@Wx)@jd`N`0IWAmH4MwjuBfgBm$A9KrnPZDi=4`Q}O_lt|V zyB+b2HLsH;`j3k&eWN2AWqlw7f8#cNa<{TAJwroVkdC@jolN8pH5 zV~(OI*H-8B<=k)cecJngch-#et3;pZ6&kCx9&@$6XXyK=+5{-0vc_+8b$|ihUcBduY1`Mr5{Q{a z#@%&1GT8#GD>hVFuQS-tZ7H+F0PDTeUmt~Kk3Y5*91F0nvDuB3^UXXS(npuK2CQ`B zX1a&zk2m1ZI2>SNwFi!@2pz^1l@iYBUH0)Q?h~_Ha|swWl{y~xM%xl=r(fA*?w9L{ z9gT1r2u@$^W_8I)VnWAy=3dyW{(es8U@Kn1zWT6_nZ?wAi}t)8T1VGMALM((YEgX( z<$xuz8b+&kl{|ze&bFug&bjZwTsaVT*(M|St09j%XJ9ZP zYuElW3MM_b5P6$##l%W6qS$JH z1pQMrmU=MzyK|e^TrI@UgE=#X^P0T*Hfc>JvUR!j^-@kleMRtfagLU|$u}V#!2-RIUZYaO94t5-cE3|SiVl)LaCQXhUbzBj(bcaBBkypq z!ym4%!@^(cev?73W*)9)$j*|onX+-WdJS&DPBpR5_)u73SNdCh{j0l z=}@Er*NX3BZib0jG>aa!(*;Vl_`Y^J=Wm?9AI>u6zkgqx+CXn`k6CW^Raik}UE?jb zeog*6<*Luk^1v#ax5d@7y+5I|da2yuev4CJDQomb0?6^vc<5W|Xsj(jf`w$R&aax$ zFR(s)Q6@wqyM1US&JTXoLfc+Fm+M}Z{*L)O=-#WX7Jq9wgKXQmiZ7lyI+}Ow?3`Af zoZC^m6Oj-w)Bt9p=f~^FHIgrhvaN%(lYXqyK-TtAkC%gP(B=^TL~z` z4Q8FiDL7=vLu>l2 zm`&paXjezsEVub+A|vK&1ppV}RvW+tQof9z>F8x5Q;p`LG>Ef`w<~`*>%d|50uX^% zm9vbPx-`>1=a|sK2%|l9)HOJ zx=wHY+X;6fYlFQ@BjS)M9Fn8BaiQ`FW6u82=S3&+2Sl?!*5etL{^;f>Pxzg3=b~9( zgOP!v(s&Cpfj3Jh_Fg}K-s8rD8oy6o#=*1J9n1E14tu0`G)X7pz;~WK?9Vgd-gcRV zpk%#s#Q$?K=p=8M@wu%wzZpWA=~z5=Exxmb-{BNJXZ)`JV@`N_As6e1@Spmg#}%{p z*pKdHJEw&!4z(6#OG<9_cI?g>;2CTEQ4}|V<$WptMwx$HE@71?=0-8j!*8@zp2P+y zwfv*$QFxYuB}+$KjleJ{2uk`VbdM!d~l!wtIh zMQu$A@<1pmx3`CpAD_?kR27k!{fsztuBTe(UR~cLnwjRMdWv~!eF%m`mZDV%#5RjDTJzs`a%SIDlV-^xTQ@78)^uBqJxV!?d)d^Nh0 z$$>Q_XPH1*jgOT;yj5BQt{aX;>}?OV_WJc)#P3)40MSP3?_5=>C3A86y;JGA6|Ykb z;CDSOyWc+h{aM)!ad6^B>qP61fPnT@5e@qlamxKelHVC>--Vt|kgtw26GiyzP7oU& z21&oNZ~Ea-w!~R``@Fh0zjM<5L@tU$o-lht@ z(i8J$%a5|~7qnG$SB!^HJ>At)y4P)ufW>*VFRKH5)6cAHHHWE&KPZd<4a{{d=gIY2 z69_H*bWj1u+qpvI^l3D9gAf{k``e)Sm6CxxCI?kk0tXd+w$!K4_?;*T9l`|v2MnOZ zO_UIjxG1`|${lfG)p>rbRvxtpM1!TxioR2UZ#p;Hg*TowIl^b3dTedKh2|KqNWJ)C zc~sUS0LBXR!B2D&|ihc&Mp9zQ{&Q!47QE)M4W1e-%ISKz&|g3;7`o z4^Y$IqXaye1O7BWd~B$5k2#ep3Qjmal@6b1h{wyyP%JGQ%X^c%SC9Eev4yZ967e?? zJlZtMIz{@}`%;i3X&7jUZKQ7yb(eNf4s#3}S0pd2x}IGTfOvoW>-UXanB%oVy93H8 zJ+of14yl%^;2Pop3I~6e#Sw8}#)%7|2pe%bKt{z1`s( z((1u~whuj5bGJ+sbJA?}G#fY07WfwRy~q-m0MaTllkm~LySax9TnVgekvY=S0Fcwmco~;PEpqu{V#1A?7*-(2lsi24tir1SO%d z1B8H9`YEm88YlhXKDO+uJGYz8_GdL=Sqbs?Zd-csMTm{Z?XzoOjQQipkgH@V%Z8@h z-Y&&{k|x6hzq4W+76URn9pK0k1~}mn+sa4amq?~X-wYvrNnuzke)YJ9`twt6VjF9O zdsIna<3-83s6uaJfcjmUo)<3l?rBl=G4|Ugd{!yRsPMW`BJe9yjyb^$BA#eI^IwBZ z9P`k*VhakB>(pfqK}j~y2+?dYU%h1lKg{9CDw<;2SI_U@$>#n$*$CnOT6Uq0*k9$V z6TIHbKbrrDOW3VACUxWwIfBudX(w>$kEj30&vJ9@smu_(FG;sA3XsGG8bG2-eW8xB z+K>Ny0Ce@+$U42-HUGH$6!d=cCZDCsoBgYLNQ-zOSA`&TJblGCi23*C12FGofAm`G z!VS%TaU-L;zAE7B_f+f!L{dy$Kt?*}ZJ-w2ZkE6;t1BToSPPyy+|I;O*Utp*L!QRs z)0*C$%^&W_!Krw-QYywgOmWotOj0w_f0V;ONiVVaw@^mjNp8 zRa&o-Ubgt@gMi8+Kq|>}?9M z^g^LE;KPM>jaVDz)fKPGW~}m&ADGl{BXY;k*w}E~z4NsF;T#WDs}etD9Z8DN_Glu0 zA`}CsP1{cu`ln7JV&{wPxz)_RFNb*o&j!vM;{!gR8w<-9*dt}W?`=V3ATRd?i~#5B z#$-S4k`NBbQhv#!9}enMrUd##9pFMo&^d?%gD(lIu|zBTsTz;JBzS6b*$f-MoQKr@ ze9R0<$$2}ZSv!xkcdyI@|65=7RvbU?{eqFA!Z(+T=N z`F}<=EBKV{8>$gv=c64|ODDv6KOD_v#^X8Z0`@9Sgz30_s0Yp}5YZt7U+fXzAPQk% z+pYc%6v1dE?z|8|4Utp5pBYJ2`Cjra>x*>?*pGDh%;0(%#=O8i_@Jnicy_=f;-4IN zGx`juF(YhMd(|y4>}!|X5(?k^Zf1`lN-(pB#9KKGKJ%!lOmUG zqby#52+R>i4us!hu-q^2pH#FjWT1!lR|iZ8w!iMaN}-%iL$QP!JW-T#_}qn=d)?@u ze5nqls9;wU7$KSEYsovfcP1@Yy3$=EQ2w*+1tIGI!+&^RwotDdp9I8K1kCG@HQwv@ z{|C$?NGNk&{#siJJ*=}oue(OZ5v}%fz8kSM>pd4rN+MUTzMd-lG)nfO0-7^ADMpx> zRzOd*;6U&;PGzDB)x`>{ebptwUr9(aa$P+5b=s&GdY z^n|MFZAa~w-(kDz?$%p<_kq~qQ<;TdY%{%4>p^EcgJkry>W{CvU4E)$9yvp^55NG} zyNxZC8+fD3caE^A9(f@xQFRSUONlUY%I?UL+erMF+Wa(Rm&Q)7>=7Qfecy(Q6`IFM zbEE1RiP!x*OtVa_Nv>`_7!exiXKuvBYH$|Rv`wC1sP~b;4ue6r?;eqQV_NkRo7y#W zS_tbaq!sd)O8rl3G*+FpJ96Q-{*P^#!UkV{4yUnu5Qo&;XXq$=JKHRKo3+;d_dGbm z`{hj)?qJy7{$#exTnxG~B&T!tOnPP3(d6lKi7g34kYtEaLKiPm{+#Bz@ew>E@ykc` z4!lT929tL{*i-Q$_d2q9$49pgyf25G^+L(VyO+1)Ss!%8i)S^@-M|&G<)>G;wF?ij zn%U0vbUw^k_=H1QSJUQ8#-}s_hHp+T2Gk)^e66kh_{}>DulP_@#DD*V>p?O!1%3`z z2?ck7PA}dLLI!5M`%2nmmx~!5Ud)7|LErs%%#K!}&!Zx54X%xwgEyA|U(M$+mH5VQ zI3oU1_Q$*;he^=2BfK4fG!Cngs$E6N-^(7qsP5*WM^uE}Q5LDB%;VmoNjU-H&$=f@ zAYhd~P{pBEiU0tjz7sVk;C*=wMoCk^j0eyS1cRs>&qUjWdF4h0s;F$6R=ytJux24A zUl<4azZO$Fi_BT9a_$H{+GZ*A;mb#tUaR<~`b;`l1CCJlj-%i@`bVtAC?Z}ZB3}a= zBSj~jMDYjdwF$E_!#amaKW-P7KMR0oZYMp@h0LG`ey@BS6L||rLgxkQ%XO`F*@vyC ztcSGGDj!Uzz%vLi@~Ma3hK&e417w^P|J5ZxVf@h!WaPt|?tt@UWA}+($29f)%HJ7| z3`_oz3W4NhO6qI5LK@NOz4ognf^s#bD>5s>gotbb7-edysT)$ytkw?ZzoS4=t4a%& z_-5gMHHR93`tQ=_UY+Z%5sTnWt{WBUV{Uhn>zDOr^2H~4?SS=>X7c>pOVws6eD!wt zog>`pWcg&i87fGsF;mCQav~LwOn}}A|BqLOOb^K5-o+6RZ7(xwX`3N?<7Sv-VrV8a zS^odp`|hVE-ss&;=)Hv!lwv@dw9us{fHW~u1?f_xiF8nEAb`>&2&nYXK}4i09hBZe z7o;Onq)G4GeD2))AAEoO&g|^W&d!|KeRt=)=bYy}=W%%W>@QVF?aLN5y-9=7gy_t+ zDV(n`p~3qv@>at7FmKe-*{wUP(8jU&9J5UI%YY6??vAFS1U9w{Srn(pMxzOCbKcy#RAX5zd zwB1AjywvHhXjVpA&n)?XR4tkUL`d_Z)#er)v)8~+iOBuSxm}s%cK1dH4e9-F5k!%8l^5;$)@xnnuN3D)rj#!<-qSNmtey~6 zJDDPB?+YCeo!sy;4=N(E_h@SAgGwk>2I{@28f8kgDwq^`R*ZLz4NBnJRnKpb@egdi zTB}%WlCl2yCWMY+ly zd0&yL?+s|VrFnGVaDC+|uWsY>)>s+LC@b@jm7cM&9Xxr)%FjzcVD{3e=-BmoRQ_T! z-R~Aen`a?3jy9j=V*vTaHl_!QjFfN$nT{=!LnqwV56ypNFvMyXSxVH6;O@Mw>1TS~ zd+mAsIldoArCIL$TdJ=|>BMKC-^D~cOT~K1V{qu23HqcWzLcQTIzpP4Gh)gc`f-gVsZ>uFODd)gc$c-u+gu_&`ZNm(94F~C+NQ8!qR-pidXY27d5&5V>1i) zFCXsfj?;A6zkKK}e)g9GwKE__P3`V-c&1e4sgGQ5$}(UMXyMtsPo@y7GKSmQz8wx~lKSn?lyk zIxfRkOEj=^=NkZ!&a+lsE6?SW_L#vX&G{RBzSb(loty7^d!4CS?E0(~--gOIiwq{@ za$^CcC7NT!i#BpXmd$@(n>QX$eNH-8Pz2lCEDFaKe8>Y|w0*c3*>1yc{Y`jzb=j=; zU4izS8pyY(H^~#Sac)NRJMMy}dfR~#3ZW1OFBkx%zih;h`e_4gE=&1|u5hnAstBWv zQ_jL0-=W;q>(5J2^AG&%Xm=EsP~#^ml&#V|L%v!bIx<_(p#Pw{_hXqp|dKCC)3_U-$U;%{G&ND+#Un)NQ-mG5d0RIes+h}zZvQN z6(EH3TD253A@!JjFx&2Pv#tKhCe>GglxAqt4z-=%S$< zPwQVxqlC6<{BChrwgrxto80og1ZcZ;7&}UTm=tmUk|Et^;NgrW_z90t?xTyg#nw@> zsEDH+?RZ^j>hPGms18vebO;|P^mHJGbaaE6=K5@P3 zR0;`~`1*my@ArN*lwwG^stRlt3p-M$fVMeWo$PJ5OaJkx3kCy(1i&pWp{p* zbkUu(63<&odOz^dqT-AEjy~$Y*yeJSzwvL~!I?pZp{Kf@PKUj#HF;}hPssl*`8I4# zN6yD-@7)e4>%?}-p>Ct1}Gs&bwE1J`4ZL4oiB3ihP$s~B4`*6X|LV;G`T}clP^s%0YETyF203dqfScwMB2bjta zI9b3)?JbNP@tG<`?LMfyVY%`NT$vD7?^dY#+lOCaOUOXE#s*oosc9(rv|`fpcd4pi z<|u`T0~Qd}=s=7|WKaSjf^M;Sd*oN;5_eYPC~IWlr4hfr6e<1Z-sl~lZ;xX0a^sS= zv11dg5s)GW2!XXiOmL0bbD8AMXkbPJRUlUcR%UNpdkUoUGX0`)7b(1p6#D~Sz8(hsx8LE=E3AO80%q6_qiWyHl@h4gZo7)5zYD)<(7?)? z0$>r}r{X(JL^I5X#jAA6t)=@cYJAdiMr`pLaq{sRrQ>T-xZLk^Ujzc%-%3H~?KlRt ze8lOK&Kltrzc}JKyraIu50QP}AONtDu}=eB6Wdr-@|#k#4~#n+J+i7O9;trroZ^7A z+*T{LeH(`|QJ)ExU<=r{7r$_Mr6RY+S~dQd0(ZDcqnn|i%na*3(($!?kRpar&&(hG z6(Hi#(XP`+Ah(P)25Z zf%#FTg?ms#J3asxEcOR{BN5u4S2A3ht~NFDDoO^6-9L>vze7o~6I>y+w<~qMeAOdE z=P?(F#0T6u5;M2-{Z8&Vx3b1gDGskunDF|wb1<8esV$;RP#Ks1sKZb}Ni~s%ee;^u zrPyK+bj=meeaUF#Fybs`W@=}pTr}db*zPhqW0n-6QKLVpS2AgoZYW#W)b>GfAzn-A zv)<-U9R2pOI&XulurGCFu3PYx&-b$;*c_(Ld~x3#q?l4OtouNz`>{-C%M5 zSrxe9Pub%(BNN6@Dc=-QOXEl@L*ty$m|SXWalUVt`omn16^2kFzf+jOj-G(u&p)vz zn53++0#!Dn{)g-9QDm*x+$uunFrWo&d{GO0fDbd>aE-4wzV9+{f7R5-QKWbx`)=Kc zRB2m&x|QqLgb7rNH27>v^2$cn?=*K0ry$I^bEr9AbIQ{+i1o=;p;wyOiak+-wmf2j zQ+r)CIX8A1zHl$Cf945A@1RH04|GDFtSqsQlJvPexWD>n4NwNX!4Siy5+w%H%kWIEt9mP9k~r4{^Gbfag05jFc61_+y>L_RzU6ybZ+qe#Gkk^7+|kf3e2h^oq!9 z2*k7rYliaKl1)*qzfKe534O9+4K7P!+V+mlQ21^yANpqM#hh@}VunVZ^V1Y7+1cFD z36nL0+H;;<>aJq8iS-!u1O=YN9JE08fx6w!PqoDygxQlz9S?M_Qp%j9Fu)r|f?oO# zrgZ!!z8JWl_*ChYPTr$mPQ&Xix@K;X$h;D~YYktMhTVj#6fNBmAhjN9l|7TRA6r@TpsCoM?8}o{d(c8$^yd>?pGh5X6h!QjIN-rlO zbK}yI<7NS?-a!w@J~MEgv0FpyqiQJNS~+bSa+<{@jic}BLwa);40%3n(w23vpAxT{ z%TL#L982vSXGyk)!u2(z_<9IuqvRDWqi~bgIz)pWpSl?0qDH7_hKL!v;jU@{;r+_M zkb}K??8$5G;rxK`=Jt4(2c#lC^6`B1j1GjbE+7&z=sv0m9!Tl& zT4j34W=NGjPqG_L5z+}pc+HW?>uT4c>O$Yb zQ~6gQ#jGn20}ZMLKEgDcA0x?z=%*%s4<&_qw#%hlYElSKYKwQ#4T$H1^^$kk-(^er zt*84gvY3}b|FIus?$4z3?%8NIaLx83_FFJaF5h0080*a#Bfml%Jum}a_)BQ#u8-2s z7X*l5Zz0{Ck2SadVJI&OewE87%IbX`R6#s(x`B-GV-mQH@Eu?F(0!{Q@jfA&3dVgq zG?()WQ%+&AW$g>d?@ywfmuAERThE|bF0T=m%_l}>tlnX)tq%bUqUp`m{5=?E`-|M# zqj6XT7K`i^?5FIser-e>K-s-V!PQ;cD51gv!0|54Zxr}571UPOZ=qqDz8Ob-f+KwX3K z=R3z}KgK3K6*F3 zr5y)GXmz4xR0Yh>p#6GZ`$jijzgHQ8O3y^$DgNHW!Av6=^%LEqkjIBl^4)*aV(K&U z&*e+JAU>3?#Ku2q(WAyl959@!>HEc|<3O59R*>GVB~Z8^utu1m zyk)O(RA2Kum#Wp?C(NKw1F_{bfD6orOlm_9j?Iuqs`c3=9Mz&vtDeRh`2<^#z*1d&^dsl~mX$tlFk{k8q&=W+UaE8Uk+>X+u zI{$hm>xD58KWPyO2ZGO3?JeI&|M>E?%_MeY<}WWk=qHg^wZw1;91wb*f|^C^dJyx1 z`++j&F2v+`c>C+O`f79nF}hn<5ODNkoi*aJ>-P&jH*kzou?NC_pjJA0@vqcH^M)Gs z?k)Xw0C)IwVJ4MXgB#oZq)%!`KXNS?uN%w|p{{(n%u9ozx3;`J85VT$R}+$Fc+63w z!Pj>o*x(kXk{xaLFxd15&*WTvqc=X7%_E46znH0(EO4Mbhpqw{N}Y!%<-n?#umO32^i^Vfxp-u1fF_$ zkRtZi*~SDnOODRt?xbvDJ5#n@f-l0@dVi(W=OBDgfKsmMY_p}n7xjHOw zt`xv$f#(QUQ<;Z#qxVRmnGJ|gO`*G0UAWJ*nq6ywB1Ct+fhm%ym<&Qn4&c63a~QeX zf}DoNcmiEL$WNJpB|AB=yns07X!2^<^Hi_#D3A5Pzrz*mAQWE0RV~W$cAtx%azmh! z&4)m3k8bZm_!-=e5tBD1T{+z$v%Jr5K)09xykIHeU`bKzkZDVezDv|t;Cq^MxG_{l0~*vV5&ev|BFM)Dk4JHkVDMlPG9J zCcyyp39d(WTGpRl_IRK-41Oy}^Fdb$Fw~B(eLT+hxu{e5od^hsK)R&mx%A~5r=>On z{sI*_}~53*KO9<;~IKmri2OCN2OItX0#Gp{eKPvGS%)$7tfT3sJ1TJbES~uO2!6 za=)!Pte^lqskw9Hwl5}Z_Qr%6eshz0o~<&oUACCDi4y4Qh|tkP zTzebS6Y!Q=6;jn)`C)P%n*#ZU+7W8S0VvOt+l*8f1xJT6&6Y~z{>pJxqy9*;OM$27 z&k%tYg&mHp#fJ`X=1={Ck$*1W>p4Ww2By0~%fsPu;q2Hd)6Cs#O8X)7Tjb*7==6NL zYTzsO*Tpl6Wa|TYO6!#eBsAz!L=n58$k9`*q){yVRk3Q@PRT7&iDWR&b(_S}UpmS` z$Orrry;MwEO0*jsXM89Vrrz-NpA}77UexgF24eCtad4EUofLVRo#(RBsJAN<<(*7h z7(qIoVJALHTZ5xB?&@qfbot3xY8=b!@-PryyMoMa@H@GecXkZUW7$n0E{)AFhs@)) zlZc_0$Oin+$prdOJV{BkqD1E(W5B0Ok=v2?2E)CQtg8e~q78N_<$Oz(v)AQZaQr2` zwVDL7f)W5S3*Y$1_{v>M#)kj#C|q?BB|*#eAw=X-Zi0=%|2&fJoVZWrl-WPVE@&t0 zWy>bjmC^m+Ad3qk6QW4AlS0FSh840GzQ`i2R-Q;uW=E1mrpD##@bPt)mxy6@B(nsH z-#u_=na^8$0>T{>1G^6R9+P@DL~Ij9wE&xVEyzWa>)!+Tb{wz#Em-%LxKJ_jw1W^x zRNEAZjbv{gqFWf?(sVhFWbonoA$zLcB^hGv1ovZPB(a=7sYy_fSN^@4TtR04nkA`q zAA~;?GTP+!Z89we75w0(@;8owN|7z?w?@D785Z;m?$>N?q85@nrrc{$E{f%B zeTCaxa8xvl+wx|?#=jQ`>Nr-SVET3D`AUVWwwYYVFS&#)Cef6EXq! zPZ@aNEB)A+fVtZn%6QwJ#rvHP^f(8STsbuttFH`WNR9rT>p-4w#Xe&q@}>D1vy{Q) zS7>Ii?2ylfz3aYy45pIBJ zC=9SogcCughLd-~ev@;d`Srf~MpMSvmXZz%sF6ngISTixjVW_8s9gi!#kk`T`QCT3cDbU5X77=u#a&#IFb;PKKdske) zCjd-%ij!5W)g`?&Bn_Z1Vn}AJ07tT>6cSTFjE`l0ie}JN@;}1KjUt!z2So(pzrSwO zi;GfDQf3EYk)5qDe7n`=aX4M|SO4%cruXgZ?#fO-es=1u<%GiV8guez?#kc!ypc12 zdE|`Sv?w;IlIxqd!QMSWuMF95MV2HjA&i+|6IB}3ir!BjAtB`Co-kh7L_iRX#L87M zrT+CVBjpj;TVb@{k^G05h?}fDI6Ji=LAzozgY`+LgueqLi&xs07rE0t1vC&RR@PU5Jx67$k;>zQ9=!srcIUpuX^&%lbIpZbAgXqMa=w67Z22cf`;IC$| zQ%bqxrN|=NEm(osGv&aIe)ghW?3I?sGD(ry0|Owa$`pbaisiu#`~uZ)`{{+jo>Ggf z$@c@$T^d~DxLL+rC0xHT5mAKwSDPV<@02H=eiqwAVo>WuJP@XV)te?i`&8AGK#7wU z56L7&pdKls67G{IInl&g53S?A8O9%Y{dU0ndSX70b9YmC=1cy(X+Sc)Iw057FMgaib;`E? zC|_2xSq`pTzO>21(TvbZhz8+E+Ni7mN@k``p}x-Z>qi)vjxKHhc7?b5#2Ua>bVI{) z*@@U*&iezWq3{~wIEbe6%-UR|<;_s6dJ*DP#i3a9QOEhfIpUCciH^%jIoU4xeltGo zsMZ + + + + + + + + \ No newline at end of file diff --git a/versioned_docs/version-2.0.0/ci-cd/github.md b/versioned_docs/version-2.0.0/ci-cd/github.md index 6aa74bfb4..010dbca90 100644 --- a/versioned_docs/version-2.0.0/ci-cd/github.md +++ b/versioned_docs/version-2.0.0/ci-cd/github.md @@ -13,6 +13,10 @@ tags: - cd - plugin --- + + Integrating with GitHub CI | Keploy Docs + + Keploy can be integrated with GitHub by two methods:- diff --git a/versioned_docs/version-2.0.0/ci-cd/gitlab.md b/versioned_docs/version-2.0.0/ci-cd/gitlab.md index 6cf017cea..a5f72205d 100644 --- a/versioned_docs/version-2.0.0/ci-cd/gitlab.md +++ b/versioned_docs/version-2.0.0/ci-cd/gitlab.md @@ -13,6 +13,10 @@ tags: - cd - plugin --- + + Integrating with GitLab CI | Keploy Docs + + Keploy can integrated with GitLab CI to streamline your testing process and ensure continuous testing as part of your CI/CD pipeline. diff --git a/versioned_docs/version-2.0.0/ci-cd/jenkins.md b/versioned_docs/version-2.0.0/ci-cd/jenkins.md index 140db3f00..ec648519f 100644 --- a/versioned_docs/version-2.0.0/ci-cd/jenkins.md +++ b/versioned_docs/version-2.0.0/ci-cd/jenkins.md @@ -13,6 +13,10 @@ tags: - cd - plugin --- + + Integrating with Jenkins | Keploy Docs + + Keploy can integrated with Jenkins to ensure continuous testing as part of your CI/CD pipeline. diff --git a/versioned_docs/version-2.0.0/concepts/installation.md b/versioned_docs/version-2.0.0/concepts/installation.md index 5f924f43b..486303d0c 100644 --- a/versioned_docs/version-2.0.0/concepts/installation.md +++ b/versioned_docs/version-2.0.0/concepts/installation.md @@ -1,7 +1,8 @@ --- id: installation -title: Keploy Installation +title: Installation sidebar_label: Installation +description: Install Keploy with Arkade, Homebrew, Docker, or the official install script. tags: - linux - ebpf @@ -19,6 +20,10 @@ keywords: - installation-guide - server-setup --- + + Installation | Keploy Docs + + import PlatformRequirements from '../concepts/platform-requirements.md' diff --git a/versioned_docs/version-2.0.0/concepts/what-are-keploy-features.md b/versioned_docs/version-2.0.0/concepts/what-are-keploy-features.md index d3bf267b7..18c1f267c 100644 --- a/versioned_docs/version-2.0.0/concepts/what-are-keploy-features.md +++ b/versioned_docs/version-2.0.0/concepts/what-are-keploy-features.md @@ -1,6 +1,6 @@ --- id: what-are-keploy-features -title: Keploy Features +title: What are Keploy Features? sidebar_label: Keploy Features description: Keploy platform automatically mocks application dependencies and safely replay writes. It does accurate noise detection and statistical de-duplication. tags: @@ -17,6 +17,10 @@ keywords: - record replay test - mock mutations --- + + What are Keploy Features? | Keploy Docs + + ## Key Features diff --git a/versioned_docs/version-2.0.0/concepts/what-is-a-keploy-ebpf.md b/versioned_docs/version-2.0.0/concepts/what-is-a-keploy-ebpf.md index 0bfb3c1dd..814f14ec3 100644 --- a/versioned_docs/version-2.0.0/concepts/what-is-a-keploy-ebpf.md +++ b/versioned_docs/version-2.0.0/concepts/what-is-a-keploy-ebpf.md @@ -1,6 +1,6 @@ --- id: what-is-keploy-ebpf -title: What is Keploy eBPF +title: What is Keploy eBPF? sidebar_label: Keploy eBPF description: Keploy eBPF is a language-agnostic library that captures and replays API calls and subsequent network interactions. tags: @@ -10,6 +10,10 @@ keywords: - ebpf - Testing API --- + + What is Keploy eBPF | Keploy Docs + + A Keploy eBPF is a language-agnostic library that offers APIs to do the following: diff --git a/versioned_docs/version-2.0.0/concepts/what-is-keploy.md b/versioned_docs/version-2.0.0/concepts/what-is-keploy.md index f56719fab..9546cd02b 100644 --- a/versioned_docs/version-2.0.0/concepts/what-is-keploy.md +++ b/versioned_docs/version-2.0.0/concepts/what-is-keploy.md @@ -18,6 +18,10 @@ keywords: - API Tests - AI Generated Tests --- + + What is Keploy? | Keploy Docs + + Keploy creates backend **API tests with built-in-mocks** or stubs **by recording your application network calls** making your testing process not only faster than unit tests but also incredibly efficient. diff --git a/versioned_docs/version-2.0.0/dependencies/http.md b/versioned_docs/version-2.0.0/dependencies/http.md index 64c3fe6a1..1f0b0f606 100644 --- a/versioned_docs/version-2.0.0/dependencies/http.md +++ b/versioned_docs/version-2.0.0/dependencies/http.md @@ -3,6 +3,10 @@ id: http title: HTTP Support sidebar_label: HTTP --- + + HTTP Support | Keploy Docs + + ## Introduction diff --git a/versioned_docs/version-2.0.0/dependencies/mongo.md b/versioned_docs/version-2.0.0/dependencies/mongo.md index d6ed24665..30b400761 100644 --- a/versioned_docs/version-2.0.0/dependencies/mongo.md +++ b/versioned_docs/version-2.0.0/dependencies/mongo.md @@ -3,6 +3,10 @@ id: mongo title: MongoDB Support sidebar_label: MongoDB Support --- + + MongoDB Support | Keploy Docs + + ## Introduction diff --git a/versioned_docs/version-2.0.0/dependencies/postgresql.md b/versioned_docs/version-2.0.0/dependencies/postgresql.md index dc16d2f96..75ed42d3c 100644 --- a/versioned_docs/version-2.0.0/dependencies/postgresql.md +++ b/versioned_docs/version-2.0.0/dependencies/postgresql.md @@ -3,6 +3,10 @@ id: postgres title: PostgresSQL Support sidebar_label: PostgresSQL --- + + PostgresSQL Support | Keploy Docs + + ## Introduction diff --git a/versioned_docs/version-2.0.0/dependencies/redis.md b/versioned_docs/version-2.0.0/dependencies/redis.md index d953d7910..775157d98 100644 --- a/versioned_docs/version-2.0.0/dependencies/redis.md +++ b/versioned_docs/version-2.0.0/dependencies/redis.md @@ -3,6 +3,10 @@ id: redis title: Redis Support sidebar_label: Redis Support --- + + Redis Support | Keploy Docs + + ## Introduction diff --git a/versioned_docs/version-2.0.0/keploy-cloud/deduplication.md b/versioned_docs/version-2.0.0/keploy-cloud/deduplication.md index 0b1d00e2d..4c9825566 100644 --- a/versioned_docs/version-2.0.0/keploy-cloud/deduplication.md +++ b/versioned_docs/version-2.0.0/keploy-cloud/deduplication.md @@ -17,6 +17,10 @@ keywords: - node - testcases --- + + Remove Duplicates Tests | Keploy Docs + + ## Why Deduplication? ❄️ diff --git a/versioned_docs/version-2.0.0/keploy-cloud/installation.md b/versioned_docs/version-2.0.0/keploy-cloud/installation.md index 44cd3bd47..6da4fe040 100644 --- a/versioned_docs/version-2.0.0/keploy-cloud/installation.md +++ b/versioned_docs/version-2.0.0/keploy-cloud/installation.md @@ -12,6 +12,10 @@ keywords: - installation - API key --- + + Keploy Cloud Installation | Keploy Docs + + ## Introduction πŸ“˜ diff --git a/versioned_docs/version-2.0.0/keploy-cloud/keploy-console.md b/versioned_docs/version-2.0.0/keploy-cloud/keploy-console.md index a30f943ff..b108cd103 100644 --- a/versioned_docs/version-2.0.0/keploy-cloud/keploy-console.md +++ b/versioned_docs/version-2.0.0/keploy-cloud/keploy-console.md @@ -12,6 +12,10 @@ keywords: - installation - API key --- + + Keploy Console | Keploy Docs + + ### Pre-requisite πŸ“ diff --git a/versioned_docs/version-2.0.0/keploy-cloud/mock-registry.md b/versioned_docs/version-2.0.0/keploy-cloud/mock-registry.md index 6cf755de2..6e45b12c5 100644 --- a/versioned_docs/version-2.0.0/keploy-cloud/mock-registry.md +++ b/versioned_docs/version-2.0.0/keploy-cloud/mock-registry.md @@ -1,6 +1,6 @@ --- id: mock-registry -title: Mock Registry +title: Mock Registry πŸ“¦ sidebar_label: Mock Registry πŸ“¦ tags: - explanation @@ -12,6 +12,10 @@ keywords: - efficient testing - cloud storage --- + + Mock Registry | Keploy Docs + + Mock Registry uploads mock files to cloud storage, keeping the application's repository lightweight and manageable. diff --git a/versioned_docs/version-2.0.0/keploy-cloud/new-application.md b/versioned_docs/version-2.0.0/keploy-cloud/new-application.md index d13966261..b7ce16ba2 100644 --- a/versioned_docs/version-2.0.0/keploy-cloud/new-application.md +++ b/versioned_docs/version-2.0.0/keploy-cloud/new-application.md @@ -1,6 +1,6 @@ --- id: application-settings -title: Adding New Application to Keploy Cloud +title: Adding New Application to Keploy Cloud πŸ“ sidebar_label: Add Application πŸ“ tags: - explanation @@ -14,6 +14,10 @@ keywords: - installation - API key --- + + Adding New Application to Keploy Cloud | Keploy Docs + + ### Start Keploy Agent diff --git a/versioned_docs/version-2.0.0/keploy-cloud/testgeneration.md b/versioned_docs/version-2.0.0/keploy-cloud/testgeneration.md index 892d42c48..c1e9252fc 100644 --- a/versioned_docs/version-2.0.0/keploy-cloud/testgeneration.md +++ b/versioned_docs/version-2.0.0/keploy-cloud/testgeneration.md @@ -13,6 +13,10 @@ keywords: - OpenAPI - Test Automation --- + + Auto Test Generation πŸš€ | Keploy Docs + + Auto Test Generation simplifies the testing process by automating the generation of test cases based on the provided OpenAPI Schema file. diff --git a/versioned_docs/version-2.0.0/keploy-cloud/time-freezing.md b/versioned_docs/version-2.0.0/keploy-cloud/time-freezing.md index c1f764864..22bb8eb5a 100644 --- a/versioned_docs/version-2.0.0/keploy-cloud/time-freezing.md +++ b/versioned_docs/version-2.0.0/keploy-cloud/time-freezing.md @@ -1,6 +1,6 @@ --- id: time-freezing -title: Time Freezing +title: Time Freezing πŸ₯Ά sidebar_label: Time Freezing πŸ₯Ά tags: - explanation @@ -13,6 +13,10 @@ keywords: - jwt - time sensitive fields --- + + Time Freezing | Keploy Docs + + ## Why Time Freezing? ❄️ diff --git a/versioned_docs/version-2.0.0/migrate/index.md b/versioned_docs/version-2.0.0/migrate/index.md new file mode 100644 index 000000000..373ec806e --- /dev/null +++ b/versioned_docs/version-2.0.0/migrate/index.md @@ -0,0 +1,14 @@ +--- +id: index +title: Migration Guide +sidebar_label: Migration Guide +--- + +Let's get Keploy up and running on your Windows, Linux, or macOS machine, so you can start crafting test cases in +minutes. ⏱️ + +- [Windows](versioned_docs/version-2.0.0/server/windows/installation.md) +- [Linux](versioned_docs/version-2.0.0/server/linux/installation.md) +- [MacOS](versioned_docs/version-2.0.0/server/macos/installation.md) + +⚠️ Please note that Keploy v2 is currently in development, with the best experience on Linux. Docker support is experimental and may have some limitations for certain use cases. \ No newline at end of file diff --git a/versioned_docs/version-2.0.0/quickstart/csharp-dotnet-postgres.md b/versioned_docs/version-2.0.0/quickstart/csharp-dotnet-postgres.md index 3a647e98f..02da93e20 100644 --- a/versioned_docs/version-2.0.0/quickstart/csharp-dotnet-postgres.md +++ b/versioned_docs/version-2.0.0/quickstart/csharp-dotnet-postgres.md @@ -19,26 +19,39 @@ keyword: - Auto Testcase generation --- + + Sample CRUD App (CSharp) | Keploy Docs + + + ## Introduction πŸͺ„ Dive into the world of User Authentication apps and see how seamlessly Keploy integrates with [.Net](https://dotnet.microsoft.com/en-us/) and [Postgres](https://www.postgresql.org/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' - +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 -## Clone a sample user authentication app πŸ§ͺ +### Clone a sample user authentication app πŸ§ͺ ```bash -git clone https://github.com/keploy/samples-csharp.git && cd samples-csharp +git clone https://github.com/keploy/samples-csharp.git +cd samples-csharp/crud-app # start the database instance -docker-compose up +docker-compose up -d ``` -## Installation πŸ“₯ +## Setup Application πŸ“₯ - [Using Docker container for Postgres and running application locally](#running-app-locally-on-linuxwsl-) diff --git a/versioned_docs/version-2.0.0/quickstart/express-postgresql-prisma.md b/versioned_docs/version-2.0.0/quickstart/express-postgresql-prisma.md index 8c1708657..9dabdf77a 100644 --- a/versioned_docs/version-2.0.0/quickstart/express-postgresql-prisma.md +++ b/versioned_docs/version-2.0.0/quickstart/express-postgresql-prisma.md @@ -1,6 +1,6 @@ --- id: express-postgresql-prisma -title: Express + PostgreSQL + Prisma Sample Application +title: Express + Prisma Sample Application sidebar_label: Express + PostgreSQL + Prisma description: The following sample app showcases how to use Express framework, PostgreSQL and Prisma ORM and the Keploy Platform. tags: @@ -18,13 +18,24 @@ keyword: - Auto Testcase generation --- + + Express + Prisma Sample Application | Keploy Docs + + + ## Introduction A sample Task Management application and see how seamlessly Keploy integrates with [Express](https://expressjs.com/) , [PostgreSQL](https://www.postgresql.org/) and [Prisma ORM](https://www.prisma.io/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/flask-redis.md b/versioned_docs/version-2.0.0/quickstart/flask-redis.md index 78efe0ae3..488c2dd26 100644 --- a/versioned_docs/version-2.0.0/quickstart/flask-redis.md +++ b/versioned_docs/version-2.0.0/quickstart/flask-redis.md @@ -1,6 +1,6 @@ --- id: flask-redis -title: Sample Library App (Flask + Redis) +title: Flask + Redis sidebar_label: Flask + Redis description: This application is a simple Library API built using Flask and Redis for data storage. It allows you to perform basic CRUD (Create, Read, Update, Delete) operations on Movie records. @@ -21,13 +21,24 @@ keyword: - Auto case generation --- + + Flask + Redis | Keploy Docs + + + ## Introduction πŸͺ„ Dive into the world of Student CRUD Apps and see how seamlessly Keploy integrated with [Flask](https://flask.palletsprojects.com/en/3.0.x/) and [Redis](https://redis.io/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/go-fasthttp-postgres.md b/versioned_docs/version-2.0.0/quickstart/go-fasthttp-postgres.md index 612509030..fd608f367 100644 --- a/versioned_docs/version-2.0.0/quickstart/go-fasthttp-postgres.md +++ b/versioned_docs/version-2.0.0/quickstart/go-fasthttp-postgres.md @@ -1,7 +1,7 @@ --- id: samples-fasthttp title: Sample CRUD App (Golang) -sidebar_label: FastHttp + Postgres +sidebar_label: FastHTTP + Postgres description: The following sample app showcases how to use FastHttp framework and the Keploy Platform. tags: - go @@ -19,13 +19,24 @@ keyword: - Auto Testcase generation --- + + FastHTTP + Postgres | Keploy Docs + + + ## Introduction πŸͺ„ Dive into the world of CRUD applications and see how seamlessly Keploy integrates with [FastHttp](https://github.com/valyala/fasthttp) and [Postgres](https://www.postgresql.org/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Clone the sample CRUD application πŸ§ͺ diff --git a/versioned_docs/version-2.0.0/quickstart/go-gin-redis.md b/versioned_docs/version-2.0.0/quickstart/go-gin-redis.md index 442803d61..d08dda465 100644 --- a/versioned_docs/version-2.0.0/quickstart/go-gin-redis.md +++ b/versioned_docs/version-2.0.0/quickstart/go-gin-redis.md @@ -1,6 +1,6 @@ --- id: samples-redis -title: Sample User Authentication App (Golang) +title: Gin + Redis sidebar_label: Gin + Redis description: The following sample app showcases how to use Gin framework and the Keploy Platform. tags: @@ -19,13 +19,24 @@ keyword: - Auto Testcase generation --- + + Gin + Redis | Keploy Docs + + + ## Introduction πŸͺ„ Dive into the world of User Authentication apps and see how seamlessly Keploy integrates with [Gin](https://gin-gonic.com/) and [Redis](https://www.redis.io/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/go-mux-mysql.md b/versioned_docs/version-2.0.0/quickstart/go-mux-mysql.md index cb9917828..946e0d09e 100644 --- a/versioned_docs/version-2.0.0/quickstart/go-mux-mysql.md +++ b/versioned_docs/version-2.0.0/quickstart/go-mux-mysql.md @@ -1,6 +1,6 @@ --- id: samples-mysql -title: Mux MySQL Sample Application +title: Mux + MySQL sidebar_label: Mux + MySQL description: The following sample app showcases how to use Mux framework and the Keploy Platform. tags: @@ -20,13 +20,24 @@ keyword: - Auto Testcase generation --- + + Mux + MySQL | Keploy Docs + + + ## Introduction A sample url shortener app to test Keploy integration capabilities using [Mux](https://github.com/gorilla/mux) and [MySQL](https://www.mysql.com/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/go-mux-sql.md b/versioned_docs/version-2.0.0/quickstart/go-mux-sql.md index 54f7b7d6f..15da942cc 100644 --- a/versioned_docs/version-2.0.0/quickstart/go-mux-sql.md +++ b/versioned_docs/version-2.0.0/quickstart/go-mux-sql.md @@ -19,14 +19,24 @@ keyword: - API Test generator - Auto Testcase generation --- + + Mux + Postgres | Keploy Docs + + ## Introduction πŸͺ„ Dive into the world of Product catelog and see how seamlessly Keploy integrates with [Mux](https://github.com/gorilla/mux) and [Postgres](https://www.postgresql.org/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ - +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/java-spring-boot-mongo.md b/versioned_docs/version-2.0.0/quickstart/java-spring-boot-mongo.md index 3f1576bcf..24b93123c 100644 --- a/versioned_docs/version-2.0.0/quickstart/java-spring-boot-mongo.md +++ b/versioned_docs/version-2.0.0/quickstart/java-spring-boot-mongo.md @@ -1,6 +1,6 @@ --- id: java-spring-boot-mongo -title: Sample Rest API with Spring-Boot and MongoDB +title: Spring-Boot and MongoDB sidebar_label: Potion App (MongoDb) description: This CRUD Application is about managing the data of Magical Potions in the Keploy inventory. tags: @@ -23,16 +23,31 @@ keyword: - Auto Testcase generation - Junit --- + + Spring-Boot + MongoDB | Keploy Docs + + ## Introduction πŸͺ„ Dive into the world of REST API and see how seamlessly Keploy integrates with [Spring-Boot](https://github.com/spring-projects/spring-boot) and [MongoDB](https://www.mongodb.com/). Buckle up, it's gonna be a fun ride! 🎒 +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). + + ## Pre-Requisite πŸ› οΈ -- Install [JDK](https://www.oracle.com/java/technologies/downloads/) and add JAVA_HOME in environment variable. -- Install [Maven](https://maven.apache.org/install.html) -- Install [Docker](https://docs.docker.com/engine/install/) +- JDK and add JAVA_HOME in environment variable. +- Maven +- Docker ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/java-spring-postgres.md b/versioned_docs/version-2.0.0/quickstart/java-spring-postgres.md index 4d4c914f8..f95bb05c5 100644 --- a/versioned_docs/version-2.0.0/quickstart/java-spring-postgres.md +++ b/versioned_docs/version-2.0.0/quickstart/java-spring-postgres.md @@ -24,14 +24,24 @@ keyword: - Test PetClinic - Junit --- + + Keploy with PetClinic | Keploy Docs + + This is a petclinic app where you can record testcases and mocks by interacting with the UI, and then test them using Keploy. import Link from '@docusaurus/Link' -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ - +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). This project has two parts - the frontend and backend, since Keploy is a backend testing platform, we need to start the backend part of the project using Keploy and run the frontend as it is. @@ -47,7 +57,7 @@ npm install --save-dev @angular/cli@latest npm i ``` -## Start the frontend +### Start the frontend ```bash npm run start @@ -64,7 +74,7 @@ You can start the backend using Keploy in 2 ways: - [Using Keploy's binary](#instructions-for-starting-using-binary) - [Using Keploy's docker image](#instructions-for-starting-using-docker) -# Instructions For Starting Using Binary +## Instructions For Starting Using Binary Prerequisites For Binary: @@ -94,13 +104,13 @@ and then build the jar using: mvn clean install -Dmaven.test.skip=true ``` -## Spin up the database +### Spin up the database ```bash docker run -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -e POSTGRES_DB=petclinic -p 5432:5432 --name mypostgres postgres:15.2 ``` -## Recording the testcases with Keploy +### Recording the testcases with Keploy ```bash keploy record -c "java -jar target/spring-petclinic-rest-3.0.2.jar" @@ -110,7 +120,7 @@ keploy record -c "java -jar target/spring-petclinic-rest-3.0.2.jar" Now you can start interacting with the UI and Keploy will automatically create the testcases and mocks for it in a folder named 'keploy'. -## Running the testcases using Keploy +### Running the testcases using Keploy ```bash keploy test -c "java -jar target/spring-petclinic-rest-3.0.2.jar" --delay 20 @@ -120,7 +130,7 @@ keploy test -c "java -jar target/spring-petclinic-rest-3.0.2.jar" --delay 20 Next we move on to the instructions to start the application using docker. -# Instructions For Starting Using Docker +## Instructions For Starting Using Docker Prerequisites For Docker: @@ -134,7 +144,7 @@ keploy record -c "docker compose up" --container-name javaApp --build-delay 100 Sample Keploy Record Java -## Running the testcases using Keploy +### Running the testcases using Keploy ```bash keploy test -c "docker compose up" --container-name javaApp --build-delay 50 --delay 20 diff --git a/versioned_docs/version-2.0.0/quickstart/nextjs-postgres.md b/versioned_docs/version-2.0.0/quickstart/nextjs-postgres.md index b6f199b27..5f257a912 100644 --- a/versioned_docs/version-2.0.0/quickstart/nextjs-postgres.md +++ b/versioned_docs/version-2.0.0/quickstart/nextjs-postgres.md @@ -1,7 +1,7 @@ --- id: samples-nextjs -title: NextJs Sample Application -sidebar_label: NextJS + SQL +title: NextJS + PGSQL +sidebar_label: NextJS + PGSQL description: The following sample app to test Keploy integration capabilities using NextJS,Drizzle and Postgres. tags: - NextJs @@ -13,13 +13,24 @@ keyword: - Auto Testcase generation --- + + NextJS + PGSQL | Keploy Docs + + + ## Introduction This is a sample app to test Keploy integration capabilities using NextJS and Postgres with Drizzle ORM. Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/node-express-mongoose.md b/versioned_docs/version-2.0.0/quickstart/node-express-mongoose.md index ea37a2fad..e3bdbc87c 100644 --- a/versioned_docs/version-2.0.0/quickstart/node-express-mongoose.md +++ b/versioned_docs/version-2.0.0/quickstart/node-express-mongoose.md @@ -1,6 +1,6 @@ --- id: samples-nodejs -title: NodeJS Sample Application +title: NodeJS + MongoDB sidebar_label: NodeJS - Express + Mongoose description: The following sample app showcases how to use NodeJS framework and the Keploy Platform. tags: @@ -17,13 +17,24 @@ keyword: - Auto Testcase generation --- + + NodeJS + MongoDB | Keploy Docs + + + ## Introduction A simple sample CRUD application and see how seamlessly Keploy integrates with [Express](https://expressjs.com/) and [MongoDB](https://www.mongodb.com/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/node-jwt-sql.md b/versioned_docs/version-2.0.0/quickstart/node-jwt-sql.md index d6c9e58f3..9f631fa3b 100644 --- a/versioned_docs/version-2.0.0/quickstart/node-jwt-sql.md +++ b/versioned_docs/version-2.0.0/quickstart/node-jwt-sql.md @@ -1,6 +1,6 @@ --- id: samples-node-jwt -title: NodeJS - JWT Sample Application +title: NodeJS - JWT sidebar_label: NodeJS - JWT + Postgres description: The following sample app showcases how to use NodeJS framework with JWT and the Keploy Platform. tags: @@ -17,13 +17,24 @@ keyword: - Auto Testcase generation --- + + NodeJS + JWT | Keploy Docs + + + ## Introduction A simple sample CRUD application to test using Keploy build with Node, JWT and Postgres. Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/python-django-sql.md b/versioned_docs/version-2.0.0/quickstart/python-django-sql.md index bcc2392c4..d449ffd26 100644 --- a/versioned_docs/version-2.0.0/quickstart/python-django-sql.md +++ b/versioned_docs/version-2.0.0/quickstart/python-django-sql.md @@ -20,13 +20,23 @@ keyword: - Auto case generation --- + + Django + Postgres | Keploy Docs + + + # Introduction πŸͺ„ Dive into the world of User CRUD Apps and see how seamlessly Keploy integrated with [Django](https://www.djangoproject.com/) and [PostgreSQL](https://www.postgresql.org/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - - +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/python-fastapi-sql.md b/versioned_docs/version-2.0.0/quickstart/python-fastapi-sql.md index fae2eb3c0..3c57b1852 100644 --- a/versioned_docs/version-2.0.0/quickstart/python-fastapi-sql.md +++ b/versioned_docs/version-2.0.0/quickstart/python-fastapi-sql.md @@ -20,14 +20,24 @@ keyword: - API Test generator - Auto case generation --- + + FastAPI + Postgres | Keploy Docs + + # Introduction πŸͺ„ Dive into the world of User CRUD Apps and see how seamlessly Keploy integrated with [FastAPI](https://fastapi.tiangolo.com/) and [PostgreSQL](https://www.postgresql.org/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ - +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Setup the PostgreSQL Database πŸ“¦ diff --git a/versioned_docs/version-2.0.0/quickstart/python-fastapi-twilio.md b/versioned_docs/version-2.0.0/quickstart/python-fastapi-twilio.md index 3afda5c4f..1a7ff9283 100644 --- a/versioned_docs/version-2.0.0/quickstart/python-fastapi-twilio.md +++ b/versioned_docs/version-2.0.0/quickstart/python-fastapi-twilio.md @@ -22,14 +22,24 @@ keyword: - API Test generator - Auto case generation --- + + FastAPI + Twilio | Keploy Docs + + # Introduction πŸͺ„ Dive into the world of SMS Sending Apps and see how seamlessly Keploy can be integrated with [FastAPI](https://fastapi.tiangolo.com/) and [Twilio](https://www.twilio.com/en-us). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ - +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/python-flask-mongo.md b/versioned_docs/version-2.0.0/quickstart/python-flask-mongo.md index eef3eb3f9..6d27a6801 100644 --- a/versioned_docs/version-2.0.0/quickstart/python-flask-mongo.md +++ b/versioned_docs/version-2.0.0/quickstart/python-flask-mongo.md @@ -20,14 +20,24 @@ keyword: - API Test generator - Auto case generation --- + + Flask + Mongo | Keploy Docs + + # Introduction πŸͺ„ Dive into the world of Student CRUD Apps and see how seamlessly Keploy integrated with [Flask](https://flask.palletsprojects.com/en/3.0.x/) and [MongoDB](https://www.mongodb.com/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ - +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/rust-wrap-mongo.md b/versioned_docs/version-2.0.0/quickstart/rust-wrap-mongo.md index 5006cfb75..4b8911e5e 100644 --- a/versioned_docs/version-2.0.0/quickstart/rust-wrap-mongo.md +++ b/versioned_docs/version-2.0.0/quickstart/rust-wrap-mongo.md @@ -1,6 +1,6 @@ --- id: samples-rust-wrap -title: Rust Sample Application +title: Rust Sample Application with MongoDB sidebar_label: Warp + Mongo description: The following sample app to test Keploy integration capabilities using Warp HTTP and MongoDb. tags: @@ -12,14 +12,24 @@ keyword: - API Test generator - Auto Testcase generation --- + + Warp + Mongo | Keploy Docs + + ## Introduction This is a sample app to test Keploy integration capabilities using rust and MongoDb. Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ - +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/sample-rust-crud-mongo.md b/versioned_docs/version-2.0.0/quickstart/sample-rust-crud-mongo.md index bd4dc6fff..5f7b2ea98 100644 --- a/versioned_docs/version-2.0.0/quickstart/sample-rust-crud-mongo.md +++ b/versioned_docs/version-2.0.0/quickstart/sample-rust-crud-mongo.md @@ -16,13 +16,25 @@ keyword: - REST --- + + Rust + MongoDB | Keploy Docs + + + ## Introduction This is a sample CRUD REST API application to showcase Keploy integration capabilities using Rust and MongoDB. Let's get started! πŸš€ -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). - ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/sample-ts.md b/versioned_docs/version-2.0.0/quickstart/sample-ts.md index 9b417e5a3..1fa626672 100644 --- a/versioned_docs/version-2.0.0/quickstart/sample-ts.md +++ b/versioned_docs/version-2.0.0/quickstart/sample-ts.md @@ -1,6 +1,6 @@ --- id: samples-typescript -title: Typescript Sample Application +title: Typescript + Nhost sidebar_label: Typescript - Nhost description: The following sample app to test Keploy integration capabilities using Typescript and Nhost. tags: @@ -13,13 +13,25 @@ keyword: - Auto Testcase generation --- + + Typescript + Nhost | Keploy Docs + + + ## Introduction This is a sample app to test Keploy integration capabilities using Typescript and Nhost Let's get started without delaying any further! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). - ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/samples-bunjs.md b/versioned_docs/version-2.0.0/quickstart/samples-bunjs.md index 427307b84..03a30c6ed 100644 --- a/versioned_docs/version-2.0.0/quickstart/samples-bunjs.md +++ b/versioned_docs/version-2.0.0/quickstart/samples-bunjs.md @@ -21,13 +21,24 @@ keyword: - typescript --- + + BunJS + Mongo | Keploy Docs + + + # Introduction This is a sample app to test Keploy integration capabilities using [Bun.js](https://bun.sh) and [MongoDB](https://www.mongodb.com/). -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - - +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 @@ -36,10 +47,6 @@ import InstallationGuide from '../concepts/installation.md' ```bash git clone https://github.com/keploy/samples-typescript && cd samples-typescript/bun-mongo -#Install bun using this command - -curl -fsSL https://bun.sh/install | bash - # Install the dependencies bun install diff --git a/versioned_docs/version-2.0.0/quickstart/samples-echo.md b/versioned_docs/version-2.0.0/quickstart/samples-echo.md index c97ca527d..0a0811aa1 100644 --- a/versioned_docs/version-2.0.0/quickstart/samples-echo.md +++ b/versioned_docs/version-2.0.0/quickstart/samples-echo.md @@ -19,13 +19,24 @@ keyword: - Auto Testcase generation --- + + Echo + Postgres | Keploy Docs + + + ## Introduction A sample url shortener app to test Keploy integration capabilities using [Echo](https://echo.labstack.com/) and [PostgreSQL](https://www.postgresql.org/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/samples-express-mongoose.md b/versioned_docs/version-2.0.0/quickstart/samples-express-mongoose.md index a19ac0787..c7c6fea47 100644 --- a/versioned_docs/version-2.0.0/quickstart/samples-express-mongoose.md +++ b/versioned_docs/version-2.0.0/quickstart/samples-express-mongoose.md @@ -1,6 +1,6 @@ --- id: express-mongoose-application -title: sample course selling api (express) +title: Sample Course API (Express) sidebar_label: NodeJS - Express + Mongoose description: The following sample app showcases how to use NodeJS framework and the Keploy Platform. tags: @@ -17,13 +17,24 @@ keyword: - Auto Testcase generation --- + + NodeJS + Mongoose | Keploy Docs + + + ## Introduction A simple sample CRUD application and see how seamlessly Keploy integrates with [Express](https://expressjs.com/) and [MongoDB](https://www.mongodb.com/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/samples-go-gin-mongo.md b/versioned_docs/version-2.0.0/quickstart/samples-go-gin-mongo.md index 9cbc0ca64..130d93977 100644 --- a/versioned_docs/version-2.0.0/quickstart/samples-go-gin-mongo.md +++ b/versioned_docs/version-2.0.0/quickstart/samples-go-gin-mongo.md @@ -19,13 +19,24 @@ keyword: - Auto Testcase generation --- + + Gin + Mongo | Keploy Docs + + + ## Introduction πŸͺ„ Dive into the world of URL shorteners and see how seamlessly Keploy integrates with [Gin](https://gin-gonic.com/) and [MongoDB](https://www.mongodb.com/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Clone the sample URL shortener app πŸ§ͺ diff --git a/versioned_docs/version-2.0.0/quickstart/samples-go-sse-svelte.md b/versioned_docs/version-2.0.0/quickstart/samples-go-sse-svelte.md index 67090c931..4dd2e5d3d 100644 --- a/versioned_docs/version-2.0.0/quickstart/samples-go-sse-svelte.md +++ b/versioned_docs/version-2.0.0/quickstart/samples-go-sse-svelte.md @@ -19,13 +19,24 @@ keyword: - Auto Testcase generation --- + + SSE + Svelte + MongoDB | Keploy Docs + + + ## Introduction πŸͺ„ Dive into the world of realtime subscriptions and see how seamlessly Keploy integrates with [SSE](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) and [MongoDB](https://www.mongodb.com/). Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). ## Installation πŸ“₯ diff --git a/versioned_docs/version-2.0.0/quickstart/samples-java.md b/versioned_docs/version-2.0.0/quickstart/samples-java.md index da51d586c..1841d16a7 100644 --- a/versioned_docs/version-2.0.0/quickstart/samples-java.md +++ b/versioned_docs/version-2.0.0/quickstart/samples-java.md @@ -1,6 +1,6 @@ --- id: samples-java -title: Java Sample Application +title: Java Sample Employer Application sidebar_label: Employer (PostgresDb) description: The following sample app showcases how to use java framework and the Keploy Platform. tags: @@ -24,6 +24,11 @@ keyword: - Junit --- + + Employer (PostgresDb) | Keploy Docs + + + # Example Employee-Manager App A sample Employee-Manager app to test Keploy integration capabilities using **SpringBoot** @@ -31,9 +36,16 @@ and **PostgreSQL**. > This sample application is **not written for macOS users** since this application doesn't have a docker file yet. -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). - ## Setup Employee-Manager App diff --git a/versioned_docs/version-2.0.0/quickstart/samples-node-mongo.md b/versioned_docs/version-2.0.0/quickstart/samples-node-mongo.md index e8305ed95..4f9e80955 100644 --- a/versioned_docs/version-2.0.0/quickstart/samples-node-mongo.md +++ b/versioned_docs/version-2.0.0/quickstart/samples-node-mongo.md @@ -20,11 +20,25 @@ keyword: - API Test generator - Auto Testcase generation --- + + NodeJS - Express + Mongoose | Keploy Docs + + ## Intoduction πŸ“Œ A sample **_CRUD_** application to see how Keploy integrates effortlessly with **_Express.js_** and **_MongoDB_**. Get ready to see the power of Keploy πŸ”…πŸ”…. +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). πŸŽ‰ Wohoo! We are all set to use Keploy. + ## Get Started! 🎬 Clone the repository and move to crud-API folder @@ -36,12 +50,6 @@ git clone https://github.com/keploy/samples-typescript && cd samples-typescript/ npm install ``` -import InstallationGuide from '../concepts/installation.md' - - - -πŸŽ‰ Wohoo! We are all set to use Keploy. - ## 🎬 Capturing Testcases To begin recording your application's API calls, open your terminal and navigate to your application directory using the cd command. Then, execute the following command: diff --git a/versioned_docs/version-2.0.0/quickstart/samples-rust.md b/versioned_docs/version-2.0.0/quickstart/samples-rust.md index e6ad3ae42..64a28c3e6 100644 --- a/versioned_docs/version-2.0.0/quickstart/samples-rust.md +++ b/versioned_docs/version-2.0.0/quickstart/samples-rust.md @@ -1,6 +1,6 @@ --- id: samples-rust -title: Rust Sample Application +title: Rust GraphQL Application sidebar_label: Rust + Mongo (GraphQL) description: The following sample app to test Keploy integration capabilities using rust and MongoDb. tags: @@ -14,14 +14,25 @@ keyword: - API Test generator - Auto Testcase generation --- + + Rust + Mongo (GraphQL) | Keploy Docs + + ## Introduction This is a sample app to test Keploy integration capabilities using rust and MongoDb. Buckle up, it's gonna be a fun ride! 🎒 -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` + +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). πŸŽ‰ Wohoo! We are all set to use Keploy. - ## Get Started! 🎬 diff --git a/versioned_docs/version-2.0.0/quickstart/sanic-mongo.md b/versioned_docs/version-2.0.0/quickstart/sanic-mongo.md index 1d7b6e4a0..d1ef31921 100644 --- a/versioned_docs/version-2.0.0/quickstart/sanic-mongo.md +++ b/versioned_docs/version-2.0.0/quickstart/sanic-mongo.md @@ -1,6 +1,6 @@ --- id: sanic-mongo -title: Sample Movie Management App (Sanic + Mongo) +title: Sample Movie Management App | Keploy Docs sidebar_label: Sanic + Mongo description: This application is a simple movie management API built using Python's Sanic framework and MongoDB for data storage. It allows you to perform basic CRUD (Create, Read, Update, Delete) operations on Movie records. @@ -24,23 +24,33 @@ keyword: - Auto case generation --- + + Sanic + Mongo | Keploy Docs + + ## Introduction This application is a simple movie management API built using Python's [Sanic framework](https://sanic.dev/en/) and [MongoDB](https://mongodb.com/) for data storage. It allows you to perform basic CRUD (Create, Read, Update, Delete) operations on Movie records. -import InstallationGuide from '../concepts/installation.md' +## Install Keploy CLI πŸš€ + +Get Started with One-Click Command: - + +```bash + curl -O -L https://keploy.io/install.sh && source install.sh +``` - +Or, you can follow the detailed instructions [here](https://keploy.io/docs/server/installation/). πŸŽ‰ Wohoo! We are all set to use Keploy. -# Get Started! 🎬 +## Get Started! 🎬 -## Clone the app πŸ§ͺ +### Clone the app πŸ§ͺ ```bash git clone https://github.com/keploy/samples-python.git && cd samples-python/sanic-mongo ``` -## Download the requirements.txt file and DB setup +### Download the requirements.txt file and DB setup Head to the folder of the application and run @@ -74,7 +84,7 @@ You should be able to see this in your terminal Let's make URLs short and sweet: -## Generate testcases +### Generate testcases To generate testcases we just need to **make some API calls.** @@ -150,7 +160,7 @@ spec: resTimestampMock: 2024-06-26T01:16:23.026710262+05:30 ``` -## **Time to put things to the test πŸ§ͺ:** +### **Time to put things to the test πŸ§ͺ:** ```bash keploy test -c "python server.py" diff --git a/versioned_docs/version-2.0.0/running-keploy/cli-commands.md b/versioned_docs/version-2.0.0/running-keploy/cli-commands.md index 836239acd..d13971160 100755 --- a/versioned_docs/version-2.0.0/running-keploy/cli-commands.md +++ b/versioned_docs/version-2.0.0/running-keploy/cli-commands.md @@ -1,6 +1,6 @@ --- id: cli-commands -title: Keploy CLI Commands +title: CLI Commands sidebar_label: CLI Commands description: This section documents usecase of Keploy's CLI Commands tags: @@ -9,7 +9,14 @@ keywords: - cli - documentation - commands + - keploy commands + - keploy running guide + - keploy oss --- + + CLI Commands | Keploy Docs + + ### Usage @@ -23,16 +30,16 @@ You can use `--help, -h` flag for all the commands to see available flag options Here are some examples of how to use some common flags: -| Mode | Flags Available | +| Mode | Flags Available| | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `record` | `-c, --command`, `--config-path`, `--containerName`, `-d, --delay`, `-n, --networkName`, `--passThroughPorts`, `-p, --path`, `--proxyport`, `--debug` | -| `test` | `--apiTimeout`, `-c, --command`, `--config-path`, `--containerName`, `-d, --delay`, `--mongoPassword`, `-n, --net, --networkName`, `--passThroughPorts`, `-p, --path`, `--proxyport`, `-t, --testsets`, `--debug`, `-g, --generateTestReport`, `--removeUnusedMocks`, `--coverage`, `--goCoverage`, `--ignoreOrdering`, `--skip-preview` | -| `gen` | `--sourceFilePath`, `--testFilePath`,`--coverageReportPath`,`--testCommand`,`--coverageFormat`,`--expectedCoverage`,`--maxIterations`,`--testDir`,`--llmBaseUrl`,`--model`,`--llmApiVersion` | -| `normailze` | `-p, --path`, `--test-run`, `--tests` | -| `rerecord` | `--test-sets`, `-t` | -| `config` | `--generate`,`-p, --path` | +| `record` | `-a, --app-id`,`--app-name`,`-b, --build-delay`,`--cmd-type`,`-c, --command`,`--config-path`, `--containerName`, `--dns-port`,`--in-ci`,`-n, --networkName`, `--passThroughPorts`, `-p, --path`, `--proxyport`, `--record-timer`,`--debug`| +| `test` | `--apiTimeout`,`-a, --app-id`,`--app-name`,`-b, --build-delay`,`--cmd-type`,`-c, --command`, `--config-path`, `--containerName`, `-d, --delay`, `--disable-line-coverage`, `--disableMockUpload `,`--dns-port`, `--fallBack-on-miss`,`--host`, `--mocking`, `--mongoPassword`, `-n, --net, --networkName`, `--passThroughPorts`, `-p, --path`, `--proxyport`, `-t, --testsets`, `--debug`, `-g, --generateTestReport`, `--removeUnusedMocks`, `--ignoreOrdering`, `--skip-preview`, `--update-temp`, `--useLocalMock` | +| `gen` | `--sourceFilePath`, `--testFilePath`,`--coverageReportPath`,`--testCommand`,`--coverageFormat`,`--expectedCoverage`,`--maxIterations`,`--testDir`,`--llmBaseUrl`,`--model`,`--llmApiVersion`| +| `normailze` | `-p, --path`, `--test-run`, `--tests`| +| `rerecord` | `--test-sets`, `-t`| +| `config` | `--generate`,`-p, --path`| -## [record](#record) +### [Record](#Record) The `record` mode in Keploy allows the user to record Keploy testcases from the API calls. The recorded testcases and generated mocks are then saved in the `keploy` directory in the current working directory. @@ -44,48 +51,54 @@ keploy record [flags] Available flags: +- `-a, --app-id int` - A unique name for the user's application + +- `--app-name string` - Name of the user's application + +- `-b, --build-delay uint` - User provided time to wait docker container build (default 30) + +- `--cmd-type string` - Type of command to start the user application (native/docker/docker-compose) (default "native") + - `-c, --command string` - Command required to start the user application. ```bash - keploy record --command "node src/app.js" + keploy record -c "node src/app.js" ``` In the command above, `node src/app.js` is the command which starts the user application. -- `--config-path string` - Path to the Keploy configuration file. The default is ".". +- `--config-path string` - Path to the Keploy configuration file. The default is "./" directory. ```bash keploy record -c "node src/app.js" --config-path "./config-dir/" ``` - - In the above command, `config-dir` is the directory in the CWD where the Keploy configuration file `keploy.yaml` is stored. + In the above command, `config-dir` is the directory in the CWD where the Keploy configuration file `keploy.yml` is stored. - `--container-name string` - Name of the docker container in which the user application is running. - ```bash keploy record -c "docker compose up" --container-name "my-app-container" ``` -- `-d, --delay uint` - Delay in seconds to run user application. The default is 5 seconds. +- `--dns-port uint32` - Port used by the Keploy DNS server to intercept the DNS queries (default 26789) - ```bash - keploy record -c "node src/app.js" -d 10 - ``` +- `--generate-github-actions` - Generate Github Actions workflow file -- `- n, --network-name string` - Name of the docker network in which the user application is running. +- `--in-ci` - Is Keploy Running in CI or Not. By default it is false. + +- `-n, --network-name string` - Name of the docker network in which the user application is running. ```bash keploy record -c "docker compose up" --container-name "my-app-container" -n "my-app-network" ``` - `--pass-through-ports uints` - Ports of outgoing dependency calls to be ignored as mocks and passed through to the actual dependency. The default is no ports. + - `-p, --path string` - Path to the local directory where the recorded testcases and generated mocks are to be saved. ```bash keploy record -c "node src/app.js" -p "./tests" ``` - - In the above command, `tests` is the directory in the CWD where the recorded testcases and generated mocks are to be stored. + Where `tests` is the directory with the recorded testcases and generated mocks are to be stored. - `--proxy-port uint32` - Port to choose to run Keploy as a proxy. The default is 16789. @@ -99,13 +112,9 @@ keploy record [flags] keploy record -c "node src/app.js" --debug ``` -- `rerecord` - Record certain test-sets again - - ```bash - keploy record -c "node src/app.js" --rerecord "test-set-0" - ``` +- `--record-timer uint ` - User provided time to record its application -## [test](#test) +### [Test](#Test) The `test` mode in Keploy allows the user to run the recoded testcases from the API calls and execute assertion. A detailed report is produced after the tests are executed and it's then saved in the yaml format in `keploy/reports` directory in the current working directory. @@ -120,16 +129,26 @@ keploy test [flags] - `--api-timeout uint` - Timeout in seconds for calling user application. The default is 5 seconds. ```bash - keploy test -c "node src/app.js" --api-timeout 10 + keploy test -c "node src/app.js" --api-timeout 10 ``` +- `-a, --app-id int` - A unique name for the user's application + +- `--app-name string` - Name of the user's application + +- `-b, --build-delay uint` - User provided time to wait docker container build (default 30) + +- `--base-path string` - Custom api basePath/origin to replace the actual basePath/origin in the testcases; + +- `--cmd-type string` - Type of command to start the user application (native/docker/docker-compose) (default "native") + - `-c, --command string` - Command required to start the user application. ```bash - keploy test -c "node src/app.js" + keploy test -c "node src/app.js" ``` - In the command above, `node src/app.js` is the command which starts the user application. + Where `node src/app.js` is the command to start the user application. - `--config-path string` - Path to the Keploy configuration file. The default is ".". @@ -151,6 +170,26 @@ keploy test [flags] keploy test -c "node src/app.js" --delay 10 ``` +- `--disable-line-coverage` - Disable line coverage generation. + +- `--disableMockUpload` - Store/Fetch mocks locally (default true) + +- `--dns-port uint32` - Port used by the Keploy DNS server to intercept the DNS queries (default 26789) + +- `--fallBack-on-miss` - Enable connecting to actual service if mock not found during test mode + +- `--generate-github-actions` - Generate Github Actions workflow file + +- `--host string` - Custom host to replace the actual host in the testcases + +- `--ignore-ordering` - Ignore ordering of array in response (default true) + +- `--in-ci` - Is Keploy Running in CI or Not. By default it is false. + +- `--jacoco-agent-path string` - Only applicable for test coverage for Java projects. You can override the jacoco agent jar by proving its path + +- `--mocking` - Create mocks for the testcases. By default mocking is enabled. + - `--mongo-password string` - Authentication password for mocking MongoDB connection. The default password is "default123". ```bash @@ -191,37 +230,18 @@ keploy test [flags] keploy test -c "node src/app.js" --delay 10 --debug ``` -- `-g, --generate-test-report` - To generate the test report. The default is true. - - ```bash - keploy test -c "node src/app.js" --delay 10 -g=false - ``` - - `--remove-unused-mocks` - To remove unused mocks from mock file. The default is false. ```bash keploy test -c "node src/app.js" --delay 10 --remove-unused-mocks ``` +- `--update-temp` - Update the template with the result of the testcases. -- `--ignore-ordering` - Ignore the order of elements in an array for a response, with the default value being true. - - ```bash - keploy test -c "node src/app.js" --delay 10 --ignore-ordering - ``` - -- `--skip-coverage` - skip code coverage computation while running the test cases - -- `--skip-preview` - skip line by line code coverage preview but display the total coverage. - - ```bash - keploy test -c "node src/app.js" --delay 10 --skip-preview - ``` - -- `--jacoco-agent-path` - Only applicable for test coverage for Java projects. You can override the jacoco agent jar by providing its path +- `--useLocalMock` - Use local mocks instead of fetching from the cloud -## [gen](#gen) +### [Gen](#Gen) -The `gen` cmd in Keploy allows user to generate unit tests using LLM Models. +The Keploy `gen` command allows user to [generate unit tests](https://keploy.io/docs/running-keploy/unit-test-generator/) using LLM Models. Usage: @@ -253,7 +273,7 @@ keploy gen [flags] - `llmApiVersion` - API version of the llm if any. -## [normalize](#normalize) +### [Normalize](#Normalize) The `normalize` cmd in Keploy allows user to change the response of the testcases according to the latest test run response that is executed by the user, this is useful when the API response of the testcases are changed due to code change or any other intentional change in the application. @@ -285,7 +305,7 @@ keploy normalize [flags] keploy normalize -p "./tests" --test-run "test-run-10" --tests "test-set-1:test-case-1 test-case-2,test-set-2:test-case-1 test-case-2" ``` -## [rerecord](#rerecord) +### [Re-record](#Re-record) The `rerecord`cmd allow user to record new keploy testcases/mocks from the existing test cases for the given testset(s) @@ -295,7 +315,7 @@ The `rerecord`cmd allow user to record new keploy testcases/mocks from the exist keploy rerecord -c "node src/app.js" -t "test-set-0" ``` -## [templatize](#templatize) +### [Templatize](#Templatize) The `templatize` cmd allows the user to templatize important fields in the testcases who's values are used in the request of testcases and that may change in the future. @@ -305,7 +325,7 @@ The `templatize` cmd allows the user to templatize important fields in the testc keploy templatize [flags] ``` -## [config](#config) +### [Config](#Config) The `config` command in Keploy is used to generate the Keploy Configuration File i.e. `keploy.yaml`. The generated configuration file is created in the current working directory. @@ -331,7 +351,7 @@ keploy config [flags] In the above command, `config-dir` is the directory in the CWD where the Keploy configuration file `keploy.yaml` is to be stored. -## [example](#example) +### [Example](#Example) The `example` command in Keploy is designed to illustrate the usage of Keploy in various scenarios, showing its capabilities with different types of applications and setups. Below are examples for using Keploy with Golang, Node.js, Java, and Docker applications. diff --git a/versioned_docs/version-2.0.0/running-keploy/configuration-file.md b/versioned_docs/version-2.0.0/running-keploy/configuration-file.md index 9cc292f69..6198eedc3 100644 --- a/versioned_docs/version-2.0.0/running-keploy/configuration-file.md +++ b/versioned_docs/version-2.0.0/running-keploy/configuration-file.md @@ -9,6 +9,11 @@ keywords: - configuration --- + + Configuration File | Keploy Docs + + + ## Introduction Tired of specifying the same container name, app command, or delay, filters for each record or test command? 😴 diff --git a/versioned_docs/version-2.0.0/running-keploy/custom-mocks.md b/versioned_docs/version-2.0.0/running-keploy/custom-mocks.md index a9bd572ec..081de9f55 100644 --- a/versioned_docs/version-2.0.0/running-keploy/custom-mocks.md +++ b/versioned_docs/version-2.0.0/running-keploy/custom-mocks.md @@ -15,6 +15,11 @@ keywords: - mock with test --- + + Adding a custom Mock to the Keploy Mock File | Keploy Docs + + + If you can't run a dependency service and want to mock it, keploy supports adding manually written mocks. When adding a mock to the Keploy mock file, it's crucial to ensure that all fields are accurately filled out and that the **timestamps align with the request and response timestamps** of the mock's respective test case. diff --git a/versioned_docs/version-2.0.0/running-keploy/docker-tls.md b/versioned_docs/version-2.0.0/running-keploy/docker-tls.md index 8010ec16b..b27ed07ba 100644 --- a/versioned_docs/version-2.0.0/running-keploy/docker-tls.md +++ b/versioned_docs/version-2.0.0/running-keploy/docker-tls.md @@ -13,7 +13,23 @@ keywords: - running-guide --- -### Recording Testcases and Data Mocks + + Docker TLS Support | Keploy Docs + + + +## Prerequisites +Before proceeding, ensure the following prerequisites are met: + +### Docker Compose Setup: +- Add the `` under your application service in your docker-compose.yml file. Example. +- Ensure all containers are on the same network. + +### Docker Run Setup: +- When using the docker run command, include the --network flag to specify a custom network name. + + +## Recording Testcases and Data Mocks 1. To record test cases and data mocks, follow these steps in the **root directory** of your application. Ensure that you have the following prerequisites in place: @@ -25,14 +41,13 @@ keywords: 2. Add the following commands to your Dockerfile to download the `ca.crt` file and the `setup_ca.sh` script. -```dockerfile +```Dockerfile # Download the ca.crt file RUN curl -o ca.crt https://raw.githubusercontent.com/keploy/keploy/refs/heads/main/pkg/core/proxy/tls/asset/ca.crt RUN curl -o setup_ca.sh https://raw.githubusercontent.com/keploy/keploy/refs/heads/main/pkg/core/proxy/tls/asset/setup_ca.sh # Give execute permission to the setup_ca.sh script RUN chmod +x setup_ca.sh - # Run the CA setup script and then run the application server CMD ["/bin/bash", "-c", "source ./setup_ca.sh && "] ``` @@ -45,7 +60,7 @@ To capture test cases, **Execute** the following command within your application keploy record -c "Docker_CMD_to_run_user_container --network " --container-name "" ``` -Perform API calls using tools like [Hoppscotch](https://hoppscotch.io/), [Postman](https://www.postman.com/), or cURL commands. +Perform API calls using tools like **Hoppscotch**, **Postman**, or **cURL** commands. Keploy will capture the API calls you've conducted, generating test suites comprising **test cases (KTests) and data mocks (KMocks)** in `YAML` format. diff --git a/versioned_docs/version-2.0.0/running-keploy/keploy-passthrough.md b/versioned_docs/version-2.0.0/running-keploy/keploy-passthrough.md index 9070ed554..0c63ccb3b 100644 --- a/versioned_docs/version-2.0.0/running-keploy/keploy-passthrough.md +++ b/versioned_docs/version-2.0.0/running-keploy/keploy-passthrough.md @@ -1,6 +1,6 @@ --- id: keploy-passthrough -title: Keploy Passthrough +title: What is Passthrough? sidebar_label: Keploy Passthrough description: This section documents how to rename testset tags: @@ -12,6 +12,11 @@ keywords: - running-guide --- + + What is Passthrough? | Keploy Docs + + + The generic dependency support is unable to mock the certain config requests because the server sends the request buffers for initial handshake instead of client libraries. Due to which the test fails due to different flow in generic dependency support. This is why, user can provide the server port to pass the external requests without mocking them. diff --git a/versioned_docs/version-2.0.0/running-keploy/keploy-templatize.md b/versioned_docs/version-2.0.0/running-keploy/keploy-templatize.md index 5b6101699..c4c90d829 100644 --- a/versioned_docs/version-2.0.0/running-keploy/keploy-templatize.md +++ b/versioned_docs/version-2.0.0/running-keploy/keploy-templatize.md @@ -1,6 +1,6 @@ --- id: keploy-templatize -title: Keploy Templatize +title: How Templatize Works? sidebar_label: Keploy Templatize description: This section documents how to templatize a testset tags: @@ -12,6 +12,11 @@ keywords: - running-guide --- + + How Templatize Works? | Keploy Docs + + + Sometimes keploy test and keploy rerecord fail because there are fields which are noisy but they are used in requests so when their values change, the subsequent requests also fail. eg: If an application is returning a JWT token in the response of a testcase and that token is being used in the request of another testcase, then that testcase will also fail when a new token is issued and the test is still using the old one that has been expired. diff --git a/versioned_docs/version-2.0.0/running-keploy/rename-testcases.md b/versioned_docs/version-2.0.0/running-keploy/rename-testcases.md index 488cfc442..9a256e682 100644 --- a/versioned_docs/version-2.0.0/running-keploy/rename-testcases.md +++ b/versioned_docs/version-2.0.0/running-keploy/rename-testcases.md @@ -1,6 +1,6 @@ --- id: rename-testcases -title: Rename Default Test-names +title: How to Rename Test-names? sidebar_label: Rename Testname description: This section documents how to rename testcases & testsets tags: @@ -12,6 +12,10 @@ keywords: - rename - testsets --- + + How to Rename Test-names? | Keploy Docs + + ## Rename Test-Cases diff --git a/versioned_docs/version-2.0.0/running-keploy/unit-test-generator.md b/versioned_docs/version-2.0.0/running-keploy/unit-test-generator.md index 97bcc77ac..ee08876d4 100644 --- a/versioned_docs/version-2.0.0/running-keploy/unit-test-generator.md +++ b/versioned_docs/version-2.0.0/running-keploy/unit-test-generator.md @@ -1,6 +1,6 @@ --- id: unit-test-generator -title: Keploy Unit Test Generator +title: Unit Testing with Keploy sidebar_label: Unit Test Generator description: This section documents usecase of Keploy's Unit Test Generator tags: @@ -19,6 +19,11 @@ keywords: - OpenAI --- + + Unit Test Generator | Keploy Docs + + + Keploy's unit test generator(ut-gen) implementation of Meta LLM research paper is a first which understands code semantics and generates meaningful unit tests, aiming to: - **Automate unit test generation (UTG):** Quickly generate comprehensive unit tests and reduce the redundant manual effort. @@ -151,6 +156,15 @@ We will get following output : - _Voila!! The Generated Testcases have provided with 71% coverage in just 2 iterations 🌟_ +## Generate Unit Tests with VS Code Extension + +The [Keploy VS Code extension](https://marketplace.visualstudio.com/items?itemName=Keploy.keployio) simplifies unit test generation by allowing users to create tests directly within their editor, eliminating the need for CLI commands or API key setup. With just a right-click on any source file, the extension auto-detects the necessary parameters and generates unit tests seamlessly. It integrates effortlessly into your workflow, saving generated test cases to the appropriate files and providing coverage reports within VS Code itself. + +For example, in the [express-mongoose](https://github.com/keploy/samples-typescript/tree/main/express-mongoose) sample app: +1. You can open `routes.js`, right-click, and select **Generate Unit Tests with Keploy** to instantly generate tests for `test/routes.test.js`. + +2. The extension makes unit testing faster, easier, and more accessible for developers. + ## Frequently Asked Questions(FAQs) 1. **What is Keploy's Unit Test Generator (UTG)?**
      diff --git a/versioned_docs/version-2.0.0/server/installation.md b/versioned_docs/version-2.0.0/server/installation.md index 2abc3dfa4..7d737280c 100644 --- a/versioned_docs/version-2.0.0/server/installation.md +++ b/versioned_docs/version-2.0.0/server/installation.md @@ -1,7 +1,8 @@ --- id: installation -title: Keploy Installation +title: Installation sidebar_label: Installation +description: Install Keploy with Arkade, Homebrew, Docker, or the official install script. tags: - hello-world - linux @@ -21,6 +22,11 @@ keywords: - server-setup --- + + Installation | Keploy Docs + + + Keploy uses eBPF to intercept API calls on network layer and generates test cases and mocks/stubs. import InstallationGuide from '../concepts/installation.md' diff --git a/versioned_sidebars/version-2.0.0-sidebars.json b/versioned_sidebars/version-2.0.0-sidebars.json index a602fba3d..03dadf3cf 100644 --- a/versioned_sidebars/version-2.0.0-sidebars.json +++ b/versioned_sidebars/version-2.0.0-sidebars.json @@ -11,17 +11,6 @@ "keploy-explained/why-keploy" ] }, - { - "type": "category", - "label": "Hacktoberfest'24", - "collapsible": true, - "collapsed": true, - "items": [ - "hacktoberfest/contribution-guide", - "hacktoberfest/code-contribution", - "hacktoberfest/no-code-contribution" - ] - }, { "type": "doc", "label": "Installation", @@ -29,142 +18,147 @@ }, { "type": "category", - "label": "Running Keploy", + "label": "Unit Testing", "collapsible": true, "collapsed": false, "items": [ - "running-keploy/cli-commands", - "running-keploy/unit-test-generator", - "running-keploy/rename-testcases", - "running-keploy/docker-tls", - "running-keploy/configuration-file", - "running-keploy/custom-mocks", - "running-keploy/keploy-templatize" + "running-keploy/unit-test-generator" ] }, { "type": "category", - "label": "CI/CD Integration", + "label": "Integration Testing", "collapsible": true, - "collapsed": true, - "items": ["ci-cd/github", "ci-cd/gitlab", "ci-cd/jenkins"] - }, - { - "type": "category", - "label": "Test Coverage Generation", - "collapsible": true, - "collapsed": true, - "items": [ - "server/sdk-installation/go", - "server/sdk-installation/java", - "server/sdk-installation/javascript", - "server/sdk-installation/python" - ] - }, - { - "type": "category", - "label": "QuickStarts", - "collapsible": true, - "collapsed": true, + "collapsed": false, "items": [ { "type": "category", - "label": "Java (SpringBoot)", - "collapsible": true, - "collapsed": true, - "items": [ - "quickstart/pet-clinic", - "quickstart/samples-java", - "quickstart/java-spring-boot-mongo" - ] - }, - { - "type": "category", - "label": "Golang", - "collapsible": true, - "collapsed": true, - "items": [ - "quickstart/samples-echo", - "quickstart/samples-gin", - "quickstart/samples-redis", - "quickstart/samples-mux", - "quickstart/samples-mysql", - "quickstart/samples-fasthttp" - ] - }, - { - "type": "category", - "label": "Python", - "collapsible": true, - "collapsed": true, - "items": [ - "quickstart/samples-django", - "quickstart/samples-flask", - "quickstart/samples-fastapi", - "quickstart/samples-fastapi-twilio", - "quickstart/sanic-mongo", - "quickstart/flask-redis" - ] - }, - { - "type": "category", - "label": "Javascript", + "label": "Running Guide", "collapsible": true, "collapsed": true, "items": [ - "quickstart/samples-bunjs", - "quickstart/samples-nextjs", - "quickstart/samples-nodejs", - "quickstart/samples-node-jwt", - "quickstart/crud-nodejs", - "quickstart/express-postgresql-prisma", - "quickstart/samples-typescript" - ] - }, + "running-keploy/cli-commands", + "running-keploy/rename-testcases", + "running-keploy/docker-tls", + "running-keploy/configuration-file", + "running-keploy/custom-mocks", + "running-keploy/keploy-templatize" + ] + }, { "type": "category", - "label": "Rust", + "label": "Quickstart Guide", "collapsible": true, "collapsed": true, "items": [ - "quickstart/samples-rust", - "quickstart/sample-rust-crud-mongo" + { + "type": "category", + "label": "Java (SpringBoot)", + "collapsible": true, + "collapsed": true, + "items": [ + "quickstart/pet-clinic", + "quickstart/samples-java", + "quickstart/java-spring-boot-mongo" + ] + }, + { + "type": "category", + "label": "Golang", + "collapsible": true, + "collapsed": true, + "items": [ + "quickstart/samples-echo", + "quickstart/samples-gin", + "quickstart/samples-redis", + "quickstart/samples-mux", + "quickstart/samples-mysql", + "quickstart/samples-fasthttp" + ] + }, + { + "type": "category", + "label": "Python", + "collapsible": true, + "collapsed": true, + "items": [ + "quickstart/samples-django", + "quickstart/samples-flask", + "quickstart/samples-fastapi", + "quickstart/samples-fastapi-twilio", + "quickstart/sanic-mongo", + "quickstart/flask-redis" + ] + }, + { + "type": "category", + "label": "Javascript", + "collapsible": true, + "collapsed": true, + "items": [ + "quickstart/samples-bunjs", + "quickstart/samples-nextjs", + "quickstart/samples-nodejs", + "quickstart/samples-node-jwt", + "quickstart/crud-nodejs", + "quickstart/express-postgresql-prisma", + "quickstart/samples-typescript" + ] + }, + { + "type": "category", + "label": "Rust", + "collapsible": true, + "collapsed": true, + "items": [ + "quickstart/samples-rust", + "quickstart/sample-rust-crud-mongo" + ] + }, + { + "type": "category", + "label": "C# (.NET Core)", + "collapsible": true, + "collapsed": true, + "items": ["quickstart/samples-csharp"] + } ] - }, - { - "type": "category", - "label": "C# (.NET Core)", - "collapsible": true, - "collapsed": true, - "items": ["quickstart/samples-csharp"] } ] }, { "type": "category", - "label": "Keploy-Cloud ☁️", + "label": "CI/CD Integrations", "collapsible": true, - "collapsed": true, + "collapsed": false, "items": [ - "keploy-cloud/cloud-installation", - "keploy-cloud/time-freezing", - "keploy-cloud/mock-registry", - "keploy-cloud/keploy-console", - "keploy-cloud/auto-test-generation", - "keploy-cloud/deduplication" + "ci-cd/github", + "ci-cd/gitlab", + "ci-cd/jenkins" ] }, { "type": "category", - "label": "Resources", + "label": "Dependencies", "collapsible": true, "collapsed": true, "items": [ "dependencies/mongo", "dependencies/postgres", "dependencies/http", - "dependencies/redis", - "keploy-explained/faq" + "dependencies/redis" + ] + }, + { + "type": "category", + "label": "Test Coverage Generation", + "collapsible": true, + "collapsed": true, + "items": [ + "server/sdk-installation/go", + "server/sdk-installation/java", + "server/sdk-installation/javascript", + "server/sdk-installation/python" ] } ], @@ -181,5 +175,20 @@ "keploy-explained/mac-linux" ] } + ], + "sidebarCloudGuide": [ + { + "type": "category", + "label": "Cloud Enterprise", + "collapsible": true, + "items": [ + "keploy-cloud/cloud-installation", + "keploy-cloud/time-freezing", + "keploy-cloud/mock-registry", + "keploy-cloud/keploy-console", + "keploy-cloud/auto-test-generation", + "keploy-cloud/deduplication" + ] + } ] }