From 300b57c1418fe8e54f18f4917f326e0c2c195aae Mon Sep 17 00:00:00 2001 From: ritesh ranjan Date: Thu, 31 Jul 2025 16:10:11 +0530 Subject: [PATCH] Initial Commit on Lingoai > Login and Profile --- .gitignore | 11 +- .../Configuration/lingo.properties | 2 + .../TestData/TestData.xlsx | Bin 0 -> 5679 bytes .../TranscribeFiles/batman.mp3 | Bin 0 -> 148402 bytes .../XMLFiles/e2e.xml | 20 ++ com.hybrid.joshsoftware.lingoai/pom.xml | 41 ++++ .../src/main/java/BaseClass/BaseClass.java | 39 ++++ .../src/main/java/Helper/BrowserFactory.java | 82 ++++++++ .../src/main/java/Helper/ConfigUtility.java | 27 +++ .../src/main/java/Helper/DateUtility.java | 17 ++ .../src/main/java/Helper/Utility.java | 123 ++++++++++++ .../main/java/Listeners/MyTestNGListener.java | 47 +++++ .../src/main/java/Pages/AudioResultPage.java | 153 +++++++++++++++ .../src/main/java/Pages/HomePage.java | 180 ++++++++++++++++++ .../src/main/java/Pages/LoginPage.java | 43 +++++ .../java/dataproviders/DataProviders.java | 15 ++ .../main/java/dataproviders/ExcelUtility.java | 62 ++++++ .../src/test/java/testcases/LingoAILogin.java | 128 +++++++++++++ .../src/test/java/testcases/ProfileIcon.java | 140 ++++++++++++++ .../src/test/resources/config.properties | 36 ++++ 20 files changed, 1165 insertions(+), 1 deletion(-) create mode 100644 com.hybrid.joshsoftware.lingoai/Configuration/lingo.properties create mode 100644 com.hybrid.joshsoftware.lingoai/TestData/TestData.xlsx create mode 100644 com.hybrid.joshsoftware.lingoai/TranscribeFiles/batman.mp3 create mode 100644 com.hybrid.joshsoftware.lingoai/XMLFiles/e2e.xml create mode 100644 com.hybrid.joshsoftware.lingoai/pom.xml create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/BaseClass/BaseClass.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/Helper/BrowserFactory.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/Helper/ConfigUtility.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/Helper/DateUtility.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/Helper/Utility.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/Listeners/MyTestNGListener.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/Pages/AudioResultPage.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/Pages/HomePage.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/Pages/LoginPage.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/dataproviders/DataProviders.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/main/java/dataproviders/ExcelUtility.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/test/java/testcases/LingoAILogin.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/test/java/testcases/ProfileIcon.java create mode 100644 com.hybrid.joshsoftware.lingoai/src/test/resources/config.properties diff --git a/.gitignore b/.gitignore index 416921d..066f018 100644 --- a/.gitignore +++ b/.gitignore @@ -166,4 +166,13 @@ cython_debug/ /service/user_account.json /service/models -secrets/ \ No newline at end of file +secrets/ + + +# test-automation-ignore -files +com.hybrid.joshsoftware.lingoai/target/ +com.hybrid.joshsoftware.lingoai/Reports/ +com.hybrid.joshsoftware.lingoai/test-output/ +com.hybrid.joshsoftware.lingoai/.settings/ +com.hybrid.joshsoftware.lingoai/.classpath +com.hybrid.joshsoftware.lingoai/.project diff --git a/com.hybrid.joshsoftware.lingoai/Configuration/lingo.properties b/com.hybrid.joshsoftware.lingoai/Configuration/lingo.properties new file mode 100644 index 0000000..9adfa70 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/Configuration/lingo.properties @@ -0,0 +1,2 @@ +appUrl = https://thelingo.co.in/signin +headless = false diff --git a/com.hybrid.joshsoftware.lingoai/TestData/TestData.xlsx b/com.hybrid.joshsoftware.lingoai/TestData/TestData.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..494c6da5df6d77f910b075c8e2535de68563eeee GIT binary patch literal 5679 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 A%>V!Z literal 0 HcmV?d00001 diff --git a/com.hybrid.joshsoftware.lingoai/TranscribeFiles/batman.mp3 b/com.hybrid.joshsoftware.lingoai/TranscribeFiles/batman.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..7d302c4a6726b7767c66b603675b6ab22528169e GIT binary patch literal 148402 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

ZTp*`Sbu;Ijf z9P#NNLIi_vn4P!n{t~J#x8=r@#H|7RuvzlZbhuWxpzjk$7RpF2q6|piL6-(@nlM0a z4G)Zc`|rjr*&g*&6VQw=x&?>Id^}$-BOe57GeVNdrgccZxBUEQ3%~*ZfMIZGU=P+X zYB*EV);rT49CJe94irEUs{}2l(wEg!(M4n4<8=}pFL23<_fU`rrdSe8pIMJCKRf|Y zRn-(;@_A%R8bhN`b~1n|;nW5blxieYjBnXRSkorCN)JhN}bG{kAq% zX#UC%Rg1;{KZKwIg*w3~?R~HaIhT|_rx9z_uy_%;Y;6^so}s~%rl?78(Lc&-vyNx% zG^8GFeBbH|<@(|whyS17kxU^$ED zv3bR3vPv@iuEFHuVXPwkO-@)yBz7cKqfak@=C!-y>cFnU>j@YSAOqv!64yB5h%>5`UYNqp%uhUo$yoj^+MYQEgSexty=>Q@EnMb{UNr01U?(m0JfqYfL=nK#h3w@jiF1|K*Dn zBY(HF)`@E#{+6|VEtRy_jDz)MfQ)1SLRnd0&qA~LNTs^{$B0U`(h1IQM2|@$M)&h) z{H|mAgv`|gi!ydOwzeO!)e)D+2129-l?N<%5*2Guk*XBW&3HKWYb4N@5=LBbL*ye6 zLyN|5g$Nqr+bP4;1o*MS5Qkg*qa^2?OLShLWIuK$N*)(H=q6O8P#1@$pv!$=%bUr8`B>EoG( z<^ySMX_4=lQGRJ?3-*ni~Mtq3TLWv%H8aV^GNR(_6taL%;W{w(F&u zEAoYgISndQEff~8uub?_mN8ai@)U?>6_Ko{YR_pH=yYu*iJ}uE(-SZWNx}~5U3067 z_uA4U6FeE=YsKPc@04=0k>rh0J{H@*2CMOpqmoWweJx$M$_Yi(J3wQ3y3S1RaxqlA zPLpisNqJVmS6}J*HqKkJa?X{eibbQ=@lH=x`u~K`e}y?JU=B4-IN%4&!gdQg=F@ea zx#xOuwr3q02PCDgan?umrPLus8_%iF5R3eCW$DK+7#{p9?$SkIEvfofO7{mD4}$i!Far_}Ro)i9Iy-kUSiA-A{vl39`x;SOK5+8Eiv zQVTsu^{V+zE0VsCN+Rl`Z&FX^`Qo?*FjsEFvwc+`Bvm)8KSCJQcKGF$JS^+Jt_nK? zZ1JW__SbC^8q*dXgnd#i`?izC6jNawVh3L#z%!Vq3&t>fdX3k|A+f%5E-Tr09~7WA zOB~)8D96y{rXV|uC7;Y(ozswzTpJJ)$ss#8Nb&Mjo_{EEK5PCpA2ii>wLFMGYuUh% zn8<_bHTp|sZiVvIe}w*L3-<4oo{$q{+P_g^<_r0uW{c#=pj|n_2 zh(m>}BMF&iI5Vl&OiK6h_Y+G*S&38IsXVyvtekdl4%(~7NUT2qt=FxdUK0$!0C=ts z-WCjqHks|$|E{6=Iq0&`KyCY&;%`DD-hq=?G|j)R52`zdj?q?|uZY(w&{HrHvEq}^ zqA*wq+Y#w0dGcxQ^;ThI<|F6j9A^(l3XTfwcu{j3OFs*hM!4TVEy z9#vg;)k8=^dj`U5ZO4-h>M5)Iz(7iYWP}g(Ymfji_#}Zt=qRe?qp{XK`Rx|@=B9Lg zr;aghjmdHb$ry2fK14N`5FjPhhOUnv0Z7#?L5yB?Fq^GDoi{Q>+0h%~jS0Fx3YJf+FeUg6Z?6#>s1+9Ew5K-=uO8@tFw$(!>WP18pGi* zH!qR5vG@`UywU}~IPQEHVmxCw*?e^Be@t8`GW#c}|7yqnUIE}s`pnG`-@ex}#gr2; zQOAZuKqn`~LBYV3mO5l*LIkge6B#5ovXfT5?uA+4kkXIN-|>(Hga^pf7R4&*N7z;| zWAw1$U=B%1G*zXS(Gn&{X9WJ5hoJS)A$pSyivI`^8L6>5o8gB4A@r4__4el^K~G6; zInE_RMxnVH@=s{}F~}3Pqj}YL#O!7pl}!lb$Z>wsa9^aY-6QHr8b(d}fuC_fwAiwtJXhD<=x8ji~!jaB(35A0>3T21z^?U5=eZ z4UeyDdDLQ*2=CF2o?eDPx2AdJ_PXyHAt$+Es3EuHU;bC#HZrupA!0lLk1+>(w2y?s zS^Ps{hUw}OIXa75Pyjk6o3FP~^+=LpPhULg0@?h4Cbc4m2NO>JsXZJXanF(bGu-G? zZe#&@o6&T}J{b|v+s}DX z+0r|s{fwjfd95m5@Qm1(Zq#@ani@KEE@E9K$t_&>J}TsBcj6$R!$}qL(q|i(2ir5> z*Xvjhin__mmFffC@w=h-J+VjiTci1*dm9Bacx@{lW}!WEO&Fpq)|XeKR`TfvAKu?@ zE~wckT@SEkBwQ z%LA8(jof{1r&o(%_K+UoOL3>YeC&0ocis>AxP4_~BJZY$_$l5{AHdUoh4uk}&O zvA7=`l$%A^?AqH0W}$=+T`a;|=-Ie5-dNd(QZ&UL{z_be2DV@%KS{}YwI$WF95*-$b`8>1qa62I| zdD6Djr>2l|(w}mE@8#BYEg#IlNM8)~LJ|QZU;7!TfXXj8?nj1D=6y;q%q3yLN)p1H zgv|Ts76L$RQ_a+xK-5qL1|nJc+(1fDIU)_ih%W|~A`3FiOeA#NT+s#Bj6il8WB6f&!HKWT%J^}i%0;g z?NS=^&3rE(1Lg+xoL>p&hs^BEZzBgr6f{*NbAWCoLBm6N02m6TFgm?S=qv;c4?+JJ zV|w~XR7l~t=ktq1nY;Mf`h@WAt(>!2dAkWXVvLVbimR85|<`V>3 zr}ZULMVia*xL?mOqz3}oa)4y}NmVJn#`1Ica8_l19q0E0Lg9Nkbdc?EV)EkVef`%% z0++7O4qC|)AF6QnRFRqKXT}rRDJR*Xt+HnH`Kbf9z|`aoq|6gUd^5qtI@V0UBVpP) ziy9s-(U0qUrdY}|GX$oSCFaa>L+*RUDf%1*E0kDx@%*!3a#%)PWDHVB3A$d%zJWF< za*9~04M=pEp0?4q&c|Hpxjkxdgu!}Xz>X<|vZN-Cxi*X%{K7T*ZU>e2Y;wJZ`Q`_lz+ zCC-ah`AGO5WoShz$a>oTKHs$wdiBa^yxVFE`pM{^Edb0juUtkaX8*rNZtwtWo-KIm z9LEgwZE3X~ZUBi^ZQtiGYhDdeY)p_tUwKkMlY<=xkZ|bRYBM?=%B-MU>ZRC=769{^ zgo43kj-ZIbB3eL;=lsq$e=i4qJA*8x#D*O)e%#VL&*IB7Vtv9h_yVU`TU$6cdfm%F z;YX1wRQUup#ycC{_f4O>Un=(FRWJLpDy(#@CAJ9Fwsbv(*M!QquJ)sw9|wGCkbg3W z=*K@z`BYf5rW@aXsl9!)R++sJyLaqBa&x}^{lU?oUsSt8>}k+Nwvh97%z?rn`!gBj zv(Trfwk~hXlZ$T1ypq=Vc-1uw6M0>h@+-6 z-wgY8PoLPERd1_**|^rZhgw2Kod*AYlhUVMo$P*=<&&eU4^Nt1cb{L}@7F`79MDLn zjqckZ55rK)5!{1^Yz^NlJ&)ZGACHPks3~Z5=2L00|7s+ocF&AKAY-V6z$oJ~dRjV; z2D-zCuGPqF7g9q<7@P)_0rghu#-8@zYh}^`IEexyL%EraeHAKho&<3i_U^vLYVRCfS?0F*gBASsqR8idQuP(=*j0Co17yV{nG4_QQH zD*hsL14b&amQ{8E{nk(qG)=)yiTVFy<%q-B@eHSs`xOzR9my@}bWvNtU?EeP+CV$B z%Mw?dYpHFlA4&4q(GMauBg8F^vXV7gCb%i-X(jHTUPpkrnV!969{|A0@yckb>=M4* z>cN}5HglphS&P-!Fvb#2HAqQE_0LRPx31ua18ZNC^LF5nG9rxlrWz!_DyDg;c?l|` zBI7lZU$XnYFcixs{n+tgaaCZ-zpXp`8bz~iJYai6um84+#X=|Rp&rurQ@g_DHl$ME zXCA!ntg4md*>TI3D*yn4105ZT7!2q7IwC{lN2*AqbdK2?M51+{M&ERf?Q|N#K!G|H z+%S&Wla`VGDAL8twj56+##XTy(V1(KexaJBHg zLp$E#5Lhw1Kfl)d3V|$*Lw|>RHKdpVowwcNZ`B{Y$>9YF38*A~X#~B2}N% z_V`DL6gxnmtrH9#((if5J9$W?i}$fRt>_bloM;>L)7Bt07ur4$$cN2qh-dN!ct$G< zS`J|bRS+;_9>l;aMum$Ltq8{8i(Wr8;Y!byI4tDXQNBmw9G}>ed{t%9D;P%7X%3d^ zLWUh(y|2%1(s&r5&eoaqQWrq9YzqV2!ATSGp?G7ra$@-i!cB--2zm|$^H3&5Jh8(K zL=NSbQRe3WLWLbsC!oR#GHsB_&&e)bGVSFklBne2dT|{+`Ow|n5;!4rOnfp zw_I}@X6+E688vZ9H)~K$D|)q5nZ4H zV0bRAZs>lbzd~XdAE_ktv>TGuwMGR=D!cK!4LeP{4!$P;dd*EPcm}U)4OJ-ihDeR19ct{@E;2)@Dc9 zh1=1sY{3C8*l|YLB9GLhffSHJV+x`R|3xSgfVi!!pzIC$ONfM$k8x!Kdi6gD&Fr`p zFs4m5*MH@~kpFy>ZZ=`IMaG_kN{MD%0zZ<66Y@N?jEKuqcb}g4n~riJx$4a9DjG?-`3@Sz6s%ibhjJajpv+P6aVBkF+#4rec7*= zdP`7&3P(*9P(de9DHRbsu^qYQ({7_`4suN7_N!m8iqt1{C-mh&hgGb7jR7_uWVCLm zr(-l4jPBA5s+b=MXh^_@(WC?JzzhZF;dO+3q-C50R#5xFuZ(aYE0U1E^AK8>UuaV6dFo%UP*~@YnX+ zSTer)Cg7OJ!Zw{!y9ovL_wl6vL%1o9(Pl;Q&5M)A)%Mby_YF3b!MPt{zw|rynj?r| zjc%{^(VQ+O{Z1rt#{3ziIuhnB_L~sYmm{w80AU=|^*{-Mp=k=6?ZO9^BS$#0gO=bW z#G>i&;GTl`UU%8vQy&<59LE#i-d=`^#4S@4?GnRK<)XPo`zmg6?l8sFj0;p4>!S%N zS|r(!tOht974}`;UMg5zbQHDaSB;1l0!n7?Eb!mdF&rfPwsdnH6b@D1ew^6&wxM@5 z1+D%|pbH<44m2Gjh>aEJq^kUsszBBbk*(~n`L=+q7EUS|{GNYEuX7Y~#b;9lnZOa- zR-+e2B9@$~)1PC_b3-7h8l;wiczNO~7ZJ{if2ykgF%Lk24v}5+m>q;X1YsnkQk z{T`(G+B69}y5D*jgh@0KSl3!P2y6ZH(%Np9nT__Rb*yh&krBb*-1$CZA7LgVc%u}1 zz&JbSMy<|CB8FLCc*yI*1aftEyM!-aaBcwHd3Yx~u79t;1X+l^Al!T!pR-u#+?5*2 zYX}(Vn_w2*EaZc%5J;3SeD&5MjAjnyh-Q``?E@3b5sG1@hruBRpySYTm-X!LNx}+E zM3cjl{L+v<>gBd2G{njbolt)teZZ!4;iwU={!0kxOb>?_9)2>v`p`=!*M)yaX%MoJ zOl;@7HT0&FJI!^QZ@{Nv!Z5;@Qt}n^$zYhhUP6fcW8JXv!iP_Xr5x#|@nw|CujzLp*0Ytrn7Xy+go*zmV@z*1UQBG@R)G6DcBQUDz74R{zy zjv>)N0dOJ}pcRFIDhyP`o*}zBV-_yj`O*D*o0PmJ_xq`xM=3)b+;0PDv=>jzl$a^T zsgR|2&ek2o`lv!C5XhKDFD4w^^ig6Pav)`N*=gMpt@!47{_e0CO{8&db?rsB?cSW+ zD<@`B>8Y9TeDQ6lk;2s+frH*mz43}#g|S+JCABA+6-G7?Mf=MgSh~9I2Z95Da8z`g z^9OqobWu_}5A^wmQ4eLBD)$$UkKRtoa$$Af8=|HZ8scO=RcNEQoTJ+8LB>hEcpm(D z{x>^&e|Go)Fg<|CSj`jcNQ7U6LID@XJkt(BVq1R*p)b;!RS{nB|Itu{sJ)^N_#505 z2RCUFx0oHK{($40-J#8shWZr(@aZ~Cy+qssp=`;`#!Vv-pdB#G@uaq|u&FhC-RK|p zR&_Rz&sz$78+=mNMj;_{#Er+1%QaJ6g$5u6gJs;kq)Gc>LX!Y0yNIe>k}1>$bQ%h? zT)6PKSeQX%0lf(+>_8E$h~PZ~<634bEuy!yrqmO~gMNi7^NOZ1qwZ|lp>;+#mESQ( z)>9^`7~UH$3fc~cIql~Vf3Ox&f&mAbF>p1GrRWAHHW0mkhq8d0#Hkgst@XmV;zvAZ zP_fU-`;bORV`t!qMf}+!OtRrtTPhh(uTvBA5paWI(Pgya-yQuIYWQzF0pPQPf?W+A zRf(#Co-g{6R(P7Kiy>U7aeqqR{G_Nae`iBs%7c~_|kv{kjA?K1%SE_lW2l@|{_&7EGKXJc( z`dk_F&fI}O02ClKvx8jfQFh}xPC_MInf7)k4RUKAnmv0vn=VkerETg>;-KpV(omD+ zBZW&tu~$rg$G57w>o|XCrSd9I7`C(5G6{DlI{ZXXolhB@KTt|{Wh+*?i&T_YNM3tQs0~Mg&1=Q2n@PnkTCK#HU=?B40mKc;6 z2H6=r^dzLuq)NRjAtK0oT#%l?C1c76=p{tNR(KPh<$);J@&JLn9?5rgHua~bpm`}# zP&KdRFzpSYuT*&wl#bIby00MYdrr&OGVS$`(BJ**|4aV?U|4ZZVMIbv;XczZL9;UX zkuHkxm68>hTkPS($}m#aZ*{G9N>~XneraeMtx*pFbzmntT)5ZV~3dnz+&c&U0rA1e6ZXL`A#28h9M8(VHj})T>SSO z(jpw#Y5-&!AQ?Wn+C{+&2t+VE55bb_%0p-|t1b59w-w@J9!2&cBR$q&07JP}ye+_I z_M`+9kXD37isBBCHzmR$B_d_U3rC5@!Sb|JM+=m~wT#}JYdU@gFM@`7y8ZHbW}>39 zF%N0V&}ua%E8_OeHg=P8Sm~6scw=UmDBI%;$fmkn2f16U&jibT8|&^=fT|&NR~T#e+tIbp8f72o8Uy_?wVC;A=nYr;$I|IjM^Z?ORYp2v)N za6l__ait!Qk)m5%jxmLEb2+$pEcRqsEF<{^x4ceZBr=tu02^w~$CJ*B(1nEZcim_0 zzX;8TUmEI83b`=-wQ{&}CcI7}n13}SI=9$CmKA80feWo4HdxT+UOKBqhNKn`-=kU} z`>oOB-IJZniL*IYR`=C->Z3s?WaAx#bQ%KrCZ3@A;~JijI^t=Eas-dvy?!YW$c)Za z^*$iuXIKv)kxaSA_Dql8Qa9PHEG}qdG8=1B224#Wu8K|KB^w-VrP!5|mu{gZ&L^0=v*bIGt6!{LhHQge{ z7QYGKgA3@Hd4_O&s-Xl;iBOw_c)fs}alM0FykfW1!KLjOTl1`ER~66mqG)^&blL^EzP4;R60tg}zLWgjd}tkb8K|O!tNSl)8*eg$+o=l|8V338 z%Vqm)mgUz;&$O}<+(GUkkY-9uPRR~Jj-ez{$o0ms$Ek#DYsY<@fA?);flb->OaX&B z@o7H~&DX69R0n*JFE}ju)1_`wbw}P2TZ+nWq@n8^0I=+mP|6kNd%P z{Q~Oqj$dNmAF`Z4=GEP~3t;)R(F-N%tPTwzkbWig!%^peErvDpO4gfvJ z54IWuFMO(-psWVR(;lIDNrA$%_{&hOj*l7h8?YtNevD<9mOE`}DVs;|30uVdAQ_nMP`lO7Ck zPE41V%fls}Q;XOkqX$S4ib?L62QY0lMWuXT9lIuq%4?jT8#75o&K{ail7m0A&4fX+ z$xrt|+n*z|5?)`KyOj2Pj>KNZj)w+ApkEYbaz5YDM{kM=Ni&C|X30JWr7+B%GV z$MrF5>A^BvVJT~#mgkCf<17PkiNtWAn_vh=BE|J4$GQ@L ztCBQi?ah)vvRI}RdEymr;2AFC=w{$QLjQ?S{yXo10|1yWgJdRVUb~4+*r5u6rN{GZ z^-@OVf(VmKj=OFHKMZa0O#z~R5!wj9q%c&TXJ%plLx`Zwf^~9h_V3>Ivk_GZE#(0v zlW#YSXJ+uQC;?g7F!&*r=Hnr$ZgJrBkv@#~F;)$Y$c_1XC^F|15J=!VNE=T)dKZjj zo)a7!JQ04{>t;X5p{%B4TaDH`jjind>Dxka@9CBu&Y-Zy(KO_2IOMZQ5Qq!}fI)dE zv?Czh8cF754{BU$c#qd%yO zEE#!V?tn2WM&A&R-SX2WG)`0NS`|p$xU2tum`yY>e});s^t?Xm3g2S>D`-{muB|BM4q!awM?TW z+}E1AKPM7!CJ5~g2P~%ZVs$jEVOALHs z63)h^k~f25In3ew)@Fg0@Z*=pDI8jWa-+KycfD2#lSq&8C#y^AztBGh> z&5r(R2wHM0-_*f%v{}yPl;U=XHploK&V@Hwx$Ted&o)H;t^`4H-~)hBT4~&u%`8ndZ`>gaLfXzzD~vsiz(#DTf8XHpL!_Zj=_~elFZg zpmndTZlRjmUaTnBQHHtmMq@TxP(jtaN2@cVwY@5P4B8ZeMNNf}yg-GT9TYKW`$VzL zLOB3`EHT_hD2z39@isSOzs>?jQhbs?CcNhmP!8f}M37=c2ITR31({navr?O~Gpmw< zB6-%ZXR9vkbrVh6GKyZgH?OgN9^$mcaz$pxZ2PXekCZZhM4t%D2s@legF5HQ__pcS zorVd+;no&G3^S5PO>BS3(Vo8??&8?N zXKchfZUE~c9OK3_Lp7tm)iELH6qq02w?y_exM~H+fz%foJF*UYN=b#}lUpj?CN;AG z@zq*O-Z12_)WGE&vZx~sm1_@`mQ?tqq20*K1EC2G74yFu!pBD7VD4g>`J)w5k!Yr_j8v#txMY&$;rJ|{)K#qrj=#p>TTgc3$b6xY zUmaZ!tDE-JFIGiq=O3_QnW3alRg;B5sj7Z-Kwo)??wNhPUhns|qh(jEUEg1K(Z^8y z%{ZNtSnL1~Oe6oDWEuaV4h|z#kz9dJ80}chn|7uHe7xYgxYB}Yh2aC6`X)=0X!KHs zPAzrT$dS{NrbTX3HcG5k>|SBN}otIaffX8oHN+t-W0E@3)C|H7w=!s9sPn*sIr$u#}1$qX| z!!eIC1_iVABucCh+WtPq3W@qjq^hWZ`7-{GhMoE`87Y4s=cWf)tQs6;?<}%LS zVZQN=Y%o>`k8StBm@Qj^1IAg5G9Ps;gU}+0#lEcZQ~7a5H1F2x9gUo32c;Fbn9CZD z!+jpHT(gog>cuQxq}#V#d)wgV<5GpsR zOjOd;f+8TLFh(u?=~egonkEE{EFwuC$@T#ReIrX9Cxzs2rq=XI1R$-wmONQnL`P*a z@R6Gxo+!>7Ih~vAqlpSuzGn(bsSPX9%U5$7IF5XhiSzVIH8E>k_;hU4kznwoH&9Ip z)k)h5@NCYXO~c;39~g+K0V}-wQvO}BaZP5E$bL+?%a;?Iz^&!5huTi(9J)k-Idrqw zJhJBsZol&s9;2?`=qNG~sc`=xL@X}H2Q*9S`9sJCv)2+^6YBt5Tv0Hj)>lCy)13V0 zhg9Yq7j#RSo^$Cne7Qzf9Ht*pjBTv=OiN{Juus-MvP>PE+V`E&0}2}#15JNO_%$F_ zitxzxWd()zla9q3-23xmpu*PU0XB($yzEl4`-OynnDohi=o=5^iQ zoB6-PWe0;X5Zl9d5M&pL2E*qm={*8dmvVNwUmrf>s~q>>wY&8AiIcFM{KcT|IWZ5e zt6@=>0{2sFFrGZMLXuD{S7&@xKD*v3{ECFl3+MT35>KL_<^zQ5uZ6H{=_p{Usb~PIIeef!FV8u!IeL}Oy`;vcq z+d)@j$}0IcDpY?65&4)1hHa<))sRXklMtobYmE#v;=*qaG%ETXAG2(Muh*o;oZ~z$ zD>JEL8ofK)tI}I12M_&{^c;{!j2pqkQhT(066%VqA=$-ch-?x%J+7!G2+}OUrGn1A z%(UjM(fQ8|DwuJV6!g|UuNxyhroM2+45PDD5hV?NRx!cvuCX^&9kZV$SnU*1Jw4O* zTIBHKIF-@TMPgj`6C)PaSErL>&M=mT1Rh`GEwJp-+TyB zUNT+0%=<34WmOZrT59`UksS0K^?iU1U=LitqPzNoMjQc@kj5!hF+!cFn|Mv>&40gn zuDCPK|7t$EPDJaBiw?R##LhEKh1Jx`3~uv`J3PM$qpWOded(8O)boqbGTcvf)v5d& zYl**}!k~^2(l*~;Lhr37*GQ_f3}P=RQxk+~9TIh)6jM3B<%<&x9mIXL)iD3=>6u?d zi=xb+5b-ooDYezg$&g`yd6AcI`Kp#t7o&G+z?)2B?@bBb*e8VkU7ACwOtz#*ei^+v z%N+Xco@H-g5pucqOY@N|-PufE*~DyNwAI7sIv&QNZ_73KB4xnF7Y)e@Ld*2eV++TZ_#sBiFe}NU9SQ;cpNPVbckZn?6eq zMQ%-^0i3@qGYKtvUoJm)zKw<`QTEmDC8H7#Y#S(7o)W%Tec}w$`!#c-cKnx;&x0W> zdHW7UbvS~CWFtGz72v{hacVZB%bR4KKwto|Z8YL2$}`v-PYRj?#&#vNjQAYHK}ODi zR2I}Gm&IFkjYA>2XztjMtp|6Caf<-YEfso<8Y8`#-|2Ewfmb?;GiE3M3SJP1NDGE_ zYW=lxF>bvP0iZAKDYi9nvERkor08iP%j93B$G?+0FmxE3cg_4Vm$7>&e-|u=!))>b z$51dpi+k)^_0qEev`qD!7&Rvm1I|%=7UPhy?sK$YyD*FxYBe*;bWnm}0UFPt$(Z0I zL6oTrt#%V&Ntc)ET%Pg}xwF6Pg&by&<6?^k`MBCB?sD}+c}bx?HVa_53tT3z;Gb1< zxbl%P6)r|zR|JNXd6A} zsB8;LElaj;tlD}A4e)gs>RZOxxkq$PLn2N4Fa3v-*XKAbf7OZw{j)??ZBVJ}@P#YVUL_FIg|q*NP=Gi{j8}Rwq`q+}$!X zCtiu@d*l810J%SVp3O6=uMj1mAACbCTu%j~i|d&;M)XU%T zK}3TY>2ZTvv1jK_KVfznf@1NyIcGP$oki9JyT2;+J;F>2FCk4&`+M5a^VjVa>NB`T zf=lDHnV%bBH84dNAxrG?b_7aD4{vP~P_09ylA04eBp=v~@LY5`RulZ+O}7rw(gHZZ%)Muz=rO%AHc6T6`yhJOSy=GMw7H zLyZ|Eg-0Mo0R*tDL>4qQ){oFrhBLgzF5mY)={oYGAsuvlZI|XrLK4-koi_~O7SU-Ah>Ixd;D`muqW3y^H3pPNg z(^gS3rJ(tLC_BrrC>wCk4=})x4n1^tcdA25cXxM}fCvoT-67rGt#o&Xh|&#Gih?Y@ ztM572UT625osTnL=9=I0ziaNu&P-}L4E1Ph#fDfWY7$<$G0a!YgL=5ZqikKC)X7#` z1X%9tm^6Ih(`!92?Ltx2T0%jkl#G{~8^YzYd!-`DrkQQ^d1%^z^ZQlySNhB zCw~GArlR{|-FHm{*Soum%3)~k280i{TUNxa_hZwS8-*ypQb_74Q=Kx*oNgd`sSa*T|pA7N=k_+lDWJKeqbHkfsyUB@u*eXUgac6c%g2M)MJ0aunc{H z@Euk-CWVtAp@jBZL%*KgO4$qrv6C14Aw+OTPlDdH_P3<)TD1O!ivGQg3Zrv-c|Qg% zp2HC->2<3`6ppJ(yO%n->juA7ciS&!H`h;{_ip>iM+z5>AI$tut{1T!_NjYSX1M(v zuaYV~Q^$|?#%-YBI%R;MA(R@DZyE^dOR%6F2pv{wXVv4z3u2_kF!1O+!RGTT!vIoZ zxU3boJwj>0EN;cE&$E;VDsi^XT$5jCXn#FHSkinwCV>>UaAM6hsA&L;A*$4x+UZgH z)DeS)Tdc<957#p;_LtO1bGXGZi*B6@Hw31*6M@*EI4@w&17sBNlL`ONgZ{Z+1_qJr`kkKYALS zzO4j5t{)j_f+QmtDHcI1a-o0xsULUioQ!2}5fxxfumIO1Tb6|6VXcR2bEG|vbjSq1 z7YHn=lzF|`=Iz0{6TvAT8ILiH#fUtoV%XPC6BMoxU6kIOZ61>%px09u=VQv3X`?|H zRP>wB_rP0J>sOWRyq13m;q^WpP7(RHaO#>N;@DE2O_)KP-v@$i@E$y06Hmebl79Ig=dvyU%B28+kq zeGNQjTjpmM*A%L^I1MfoHes zOBHobk#Z7k?^tl*zJYYsv)*qg8452{tld3SVT!4AR*+;P`Pmnhk#prQW2L1IRbIbo zG)GdiiIF(vS~JvM9OH*S`r0fsju)uQ_OX(f-i&RXOyHVTE zbK+(wq?LIu8n|)2`tqqTO#^Yz@c|PnI}B}{A#(vzX9nqOWs(F$eL{)_cAc_c6Zod2 zVi7~&gM||%SGIjTLcUz0i}~uwP`dhazTlO!ww+3*sHZ{R8YA(Noq0nrYx%f}T(itHf@Gmaq=?hrEXdK~8@r+{s4nsK_5gcfweaEB^TJ z*8!>kMrLg;nj~4b<#{$TCbC))C#VFgN=N`F zMs`cxIXON~c7~ocNjCprKn^f?nbufFZ%a{^eJ79#%Am}jz@WsSBIWAom%$LFUfFp? z+l?7%9HpT-J1R?O9f~k|Olw8-Zk!iIGug}p?XPL95r*eZU^Fn;&OXX|E`#sHlmF!XS!c z4#Rr%)&DkH$|)N=luGI>GC4c;=94y`4c|Re_(*O;%$p`h7rPKn-FDEmuZFuOgol?%oYXIxcN(_b{VX$86+#rB z{WfscT1H)6Uy6^SddoV{&1k8t?X_3p^>0E?ha`!thdZ6jX8sbwDuiHi_=f+9wo&57 zrj@&EJ2u=KT4<(PnjLlT-}*N62W9;%KB#MoTb|%wPP^w{e|fr?lk!ukGj&<$x%Q1x zak!bqiK@D`U-VbRuq`rOwoysO!9;?0ktg(TomL%^{CFAzu!gQQGX&4MlgoL;+;9+N zii1=*delhaFhSZJAS#fdb|4SZj47E-9XVb5k^BJ1EWK%$HfDdB{)~J{MrhMR^dkWs zf_rdMQ-XwRC7Eo62Gi4OlH7(G`G>aFMND;)XPY9ri_>ks*Ez`rLo z(iKto&hvh2GTUieYeq8z< zA%Enb?z(BTty$gLUe6+uH@rg41V9gX%1EGtumEe&NG$Af zHG#o^&?b1{;#SY7*nyB>-W@oxfCN!$v?(i2Y9=g3*Cw;QHbS$&C|`{7%+={)_2>HkfG z^XZ81Yn``McXsX_dyn6~+o9L`U-^gG`aeE?HwQ#MeJk7|0HBZrm^UeEbU{w1l=&U5xiR0Co_=nK%0j~f;aAkpk8R)uN6@9k@$SPZv^3i}z3%FX75x z&_Qr3K`PSECX=?QWIwX9SWW%ZYLKC+8M&IGr7C;Wy=cA{aFMzH&MWSOVFqLl92{0k zs2g3MICr04O_c@-;KJvX85V$jdA_%x=mv;j>PcJGsRe#W#s#vVVsjL4Q_)t9!Kvccazg4rTKo~zkIO9rDg{WuI$ zU56jUUI^;Hz@L=eo~3kSvL5xSkOhU!34FJoJ|0UTepgPIQpslQI(ji_`nmas7Ru#}kPgVA;hGrN)oK(^qb{9;*hejr^5Kb+^{ zpZ$M>kvG}e@>-6+CHv2S7i2V-L7{GK<&Tvkq2mCvu;HTt0Z?24h7P~y(@8x)Tkydd zYzVJB$cwG<5dgu1CILKNL;YVs5QiHzbU7;~+8f=1>6@|EP-$X@H#kRQgbk?9F(GC z*oCz-Bm4PSjcUhivzvV;D!Oj5wN}A8!ZKl*_dGkT%#-u7D9D{Sj`uA-%)%JlczHPy zahUy!Z2GO;D^t4LFRmQ;Zkr*TZ{p{VV3Uz(u?6=8>b{`~^=S{ZvTgCZAQvNIc}z*?GSTJw>8=L&r|qX4bkc1WCwl^Z zS_cYr)hwgWXQwziGcdRv7~8(_Pgj|IGG&dpb<^VVLx&4O2?VGdK;ZEKqCziNmvxHT z6n}o-|G+p=0`0-qH(Z{bO-Fut zGw=*xxC5X8O1-c(g@b;bH8wq~8>}fAwS7gxBXlql#)Nt0+}iA~liy7$g%MG5$H2#d~~3%ah{eLrvaC}~qHp6zb-V*hMTdLI8yy=Qdqy_~$r zboE1LFIAs$EPa@RQ?&=O-vZs}a#P5DL!&}TZnemF+kki2eJue1W&i+@ZU>CU)ruUS z-DOq<#(qy~f{VWhJ|qEhB+;rc7PmH(RrIt>9ejuYc=DHiZWeE5`+-8{O@Urq)+pvs zM+7h=ue<0Fd+m8x!LIH!fIr9{Ge2mAaj(Sv*kM3A-k_%PMVES|s~ zB+F^s^%*JYMPIZoCQna5TaWPw0EvMT3q>ACz!AWRC3m17TyKKm;v3Qfvcr%A8x+vY zJguH?1O~trq@o+g`|uH1QlwNSEWTcC_!L{Y_F4?0IZXI^EyXB$_gNe|0>W2BGIrzl z!69^Yd9#?`n;WTbBF8OB#(r{ieM_ip)YvKgt)cON>#rs z@`n(L5NY<>!_mMzQL~fyw<2h21J&7gpS+?KqKsy;Ori4|a{KEs#iUt}7|QygbG9=K z8hY%L_IX9HBsE?9q6=Rd+9y_DZN^w=YO!@-tYm1&E6gNH@SqA06Q0npG+$rwCa#0k zkUW)21SRKitTv8xaGneWjHYm8G*H;ax-6UK!r1-+CXvPj+R(I|v8jLm*lb)^Wuu!I+oNe7d;5402JV=c zchCQAC;5N$mWm<)@cd^vDT744pdqZZ6VZcLnm{K{oJrV+gp6Cj=7+D^A14$lhHUAC zQRvEv$VN~@83|Gn=RX?c86<^NFzjG)UZ-YnAGF@ind-3lCWCNrx@ zNy9sTt)rjcxR^A5oa|KV(YecKhW6JMhJZ z2C<6&mr*uCQd$CP<_#&VsdxI>950yXnU1nyV_YdBY4>G1dSAQz=e98goMpsBitz+3 zmxP)>MV@kMnx22`$1S7CZBmquGwf3Ix_Q5=<2><0YfA_BUf|^Qa$`aA*U}HQCG);3 zlRi^fAG3ZkCq{$e0DwtXTSIPgHHLHr{7Ax1>{6T()3*yS_pU_w!YS_=)x^9Z!KDVa z_MgN=jh{NJ?L<#HelTnbrRf>Tb|;T!Ff`jJ;PbBQe|`O%&{4p3iJ9~`GjHM_4G|pH z;M(6au4MpP8^Usi(h6Xv{F_Y_#KVz=6mGLB*`SA40fL2}Icm)_Bs@c*zg%^gBq+rsX>%em2Fc@*O{8 zpkUCAeTlW|z#_%jRoB5z z)ADwE)tYtdP#q~hx}#48?SB4r^-6-mhW9%y>_kbs72ghBViYuEG@YAWll1P-#=o%z z6+P{uITM~1)Hu~{Cu;YZ67<~U_enyTQdOJ(bZ)bo`}kYdMN8 z6|vox88SOHiRm(!Mn8q#GQ~V-H66P|->Z)rHk$X{q(Y_9zVAHknv|YZ!Smp3j!#yU zR`CuHdDD+L)U=3Xd|JiRnX%R?Y$Jv#VX#tgJr6Ry&L)ck7L=e@~M2V>o*j(-822@;y~IE<+ox|vqb(b?x{_h z-d4HDnz;?p30R?;IpF{b03RwsD;))iqBe*nT^#`L<0(_x0EDEAWb2iZ7V**-Z%WWB zB49I6(V2r#bfZ{nd(n1%+afDI^J~M~u!$D$n!0VxuE0g+t6(A8qo}{20!Jf2&4&tZ zm%r_LpOtu}xMl7<+oFah2+X`q#8Q4cId@^__w?w?$=S{c6?|pIl~cruwteC9`XF=~ zV{mNj2r(ut$iKE+?74`l^hu?43KgMpdoX8mX_I;`PIXbLIQ*dc|E%To>8Zw+2K5Hm zu6&}8pOMgI3lFBK$LV$+!azX9Le!Hb`pCpWZ7V`z4Htzkjbgldd1r%R`U=48g$jR; zyV%t1=4`YYGS?TT&c3wfsfiP7XgmC_d~JGKQKQ88H=$$r>l4H2PHi#QKZNiPQ+O5X z`Tj=R=00Q+CXmQG*iYm$gO={VaryTQWPzXEb)MRuA4*J2Lz1=AUtuEYiwI5ipB?L( zsOlEHw|Ptd_;|;XRJ7}YyB%V_heZ^bMSsdNqXJ`i61B22;y2VlHZZusi7p)km>IzY zi423Z0T-ffbM^L3p?#q&(F1@mVBhC*jHhe9xxXCD=^dv70WxKPt)Zey=ewTzl6EH5Xcx4o&rC8D0m<+T7)88qTAMhWPe|C(kqxQ$^Z35 zB9sy^AWCppen?&8?zo#Nl(J7^$5(2B({#zCl=707vz#qj*>|7O#(T3iI_Rfsr2bEx zcYVYAt|bDtH;VI%-JWUw7r^Ja4--zBeQEv^EN1|?_Mx(NNHFC~BNbyhlQz6jX*H3j zE&gLJciL4=^%eaB6eA|w9W)>Ew3P=;B5kWw74EjBnyi-3aAEsRmV4hSmhS8jIJVjp z(pA`P9WyptSgpA>t~~xk3K`nd&6a?FBL$BfCc=#;IRATCf7{kzTe)hV$o|K^#?sS+ zc%!@hcy%RjiEpCmYx-?-=-UUc+nNux!#9tgus1|R9tKqpR9csN=#1{37UF^Qm5CUb zP$f7yomDAAB1uFKYtu=Z&^)=tl*>3_Ncjw{RDnn!cTF0*eU&^d=?ci@BvQ02f&rHz zkcdb}tc)bEMo-wCN@1`CM(s$gPBpM^FsYV>VPqNkXx(dP^FSm%YxT{MUJrkfTO ze7x9+;I|W%`Th=1vnjcY4{QA|r4Ej=C{pM%fBb$VZp-)2#k_ZxoqW7OkMD z`RXxyFRQ&uhMDSB*Pj35*T?6CRi`zk&ZF@c38Or6q;)Q6;pNGJw*FDze`A9G;S|b~ z^$P$gNO((dG$31qQHBN}9&m7QerNd_NObPM`MLu+$2-a$Q?T?ID4kSSi5);SQ>+c7 zdv9r1KJE@tYxe%f${}6HsVJn`eEx^f=ci$P#3;JSoqzYx`urRiBuUdTaXBVC zhF?&8A=ho?bC+i$m`5r#XnI1L06d_wM!~0`>4oU^3Fb_JP zzrMm(J81{UC(@{rIAd#(q_P}0waP>hQRFR$z_LdbYn2YuI&~K}-}3)lIOq`MI(wQ( zNK%}KwZ!@@UO#T~Y@B^3#+2oKuXacmNQC$4BVVD#um8_L4Pgxg!RmJ$b<}1^qSS__thk%0PNH8M-;Re=xtTCQOx1O;o&T($38BTAByjjbyLKO z6D7=SBN8x;a+G&q%q%MWCiDexZDBn=&qAX7*AKbCs3v#DNB&s3a#`lm4L<8*`bt(W zOjvJD8^IVZ8Z4!1bJ(bd(p@&R;?y`P8g+%fGE$z>^;$ z?0s5HJ5Jdvi5Bg?oW?`h)pgvzwRs;tBE^CsWF4LtvYPT?aziN;)*&)d_WjdaTXRY< z2qKyh%0(1(NEt8!0+f9@dp1_rAN?vobR5MH)tH-4NH=vtorT4wvbVY6mzJ^E7)}S~ zN|}!(nsF53hnB`naih06+O7hlsYu(eY|c+Ci4x361CLp4(C@2gB-C6%Wbp`96mr35fws{`Qx{1-fsUj<&yOpr$NCe>yKyDB&Z ztS>ZjGZW>MhnYahz26c#3Ana596v_joBIQZP@$FxV>jx_i2efzGxBIcgJ9HxO(l-! zcB!e6|IQ++^VO#3BkRyGhrEa*ao3RG5wR%dWLuF$nLHGij_vLFypnBaRe`DTm#^+X z0*JO*+@wm(T76Bw_td^8MZhIyWYHZLD<)m7Qj@@IfX&|b4T$&b1 z7bU@meQMz3<0D2Gu9`)`$Fz)%&p+!EN+gX!Wab~Ck^d61tZ^ecQNoACe|bYLjabFAj=vrGadLT!K{RfsfWZRaW&$CX zjmIVI_}IFEUO7&*hl^WRJ2VtcY1Db@)Ip@ZaX)@O{JiU*vfSpg>uXJ!D0|i?B>xmn zak_IEFp4~8{t!|kqlEl4i7D9irJL`! z$NOKz{3SKj!6-SY+80qRAhG%8{S9%m+^0Iurlvj=K$(oVFNuW2l@K5;n}t!KWqZmv&@SB*u6UFtRxY6;VC%ZZ{cCM$iR`h^#(pQVp%-Na6Pliw>BsH$Fb1DJGQ^ zvXtni?oRT|$w}`;h_o^F6SRK#5u)JkkW}c3I7UTdD+0pnda5xJFtJqaBw>b{t8&;QwvU{NAPFR6u1&qiAB`!=O? zm~K(3xjDn(hL-fT9u<7$OW9I0+@Np)5iDHBXFIBKVvq_E3FA!8 zakD^=uCc;^W#`%fWs%@!T)AL?tO70Cn7$-fspT48Q=n@7RdB5*TId8#O=0xAR%-?$ zSGqScb@(U@$lpV><68KaT&*42IhgdOU=EaJDCTbC8{x6F*A8h$Uf~kolYa+zm zNT9b2*Wg%^rRnvo6sAQcMs&joyPNkn)cgmcnpKhKJ_}!ZIDEBrm{L@$fe2eXbN??5 z{TH(OkGBGzDwqJ^t0i=p8af0_=kcyEU>qz_rpV(th#_P3k~If}a>4*VuG8gMPHHEVOi()UM0Se!70DoCsH9}Rsu z2@qw((-3MBLy@I#WEKe;RN~35`p@ z&2ApxeF`5Y{kAcq$9(uo!W2FN!4nhO5rvdAvL-~KoEQ`YV*T-|lxp4vgS3qsUwvHj zSj_;vyT|Grh`^MFyhBUQK_9cG5@N4qhBM992xQQ6FI=SuqOg&hK;YJ*m}KGQDRD=< z?;}F&8b@OI%U@-Eu=>X5e=^$t_{)24)X{as6bpy=G%;scY9?)jl*7ICzbX3sgJBg_ z9{|rODr0gU`Az9-1ttz+J2R^ykuT+1s6IoIhe?E^HXxa+Ak>vc?ir1;jdn380h0v4 za8WnPR#j;d+!Sg#O`OG{R;P~fv>k*Z3RZRk!zHoL*Ndr_zFhm~aLP8)^=A_$H5RES z=>J$bJVG13iK4ZDKZI@yjhuzxO!^Dv29v!k9?{TsB8_z37)e5;-&svp=P*o6>Xi99 zZBIx!ImKaNJhEP(?#`^nWLuun<^m(EBvtoYgl+5WSS_3iE;M8^K{k1Co#?mrS)Y+(-SWNo47@YMX(Wq6Vt=&I3*}2JQkxr@oTSFJ2H*&@b<1BpGe+c1^y0KuG zMEuJIU6^AeeaaStdq@D}LMgDR;p!bYA zCr4HYsw5yg(bX%~?R}!J57ZTah86IfNz@oj=lxc_nCsI{yA@Yp| z@rsAJn!jr?7=Un*rx+e?94@mU&ZLsV zr%LD1-l^;-jFRF*G-CN_;UcJTYlT-d28Sr$e}JoB^=%+)MsyaSz*9<98XlsmS5FgD z7r!wb7K?$zh1Liw0w}$rtj#)|1b-8H47k}cSFmGIxcoziFd~7Kr8^b+M?){_;;l8& z3Gih4D95x>UpdtYkubiDXgTzIPMg~m$U_W4F@+5j7=Ovo|GfJK%Uq3H4;p#JZFL)- zyRCAwSQ$Hk-*}zBcEx+^*D?0_Fi(mIFy!|DJ>zx_jws>K2TxRC_GUcqw*@m)zSj{Y zNa-bP1a`{-50T(Wh(H8r(Vd3suj9&9C73#K93WSv7~F@xo&*4q)75JyT#V5Ot`)cr zQobq{0(7A3Z2tHCkVN<|rn>Qb+A$o|C5SMM57ZI4*pY^GbR6SjJ zY6!hJ&j!mlaGt6!6l<}-Q5;Sp)Iux>hI|+f!kGY;*Ss-+gcB_kiz}x<+?qx<_{g|z zm~#2u_|eD?TDv#@6@om9;xZ>4qg-iT1NV^fRPrnJ-9%jr*<4$$FCXDHHa#i_DlWKY z+m19z)C{Am1VbBTeiQnEe5<23&a7n7@P`nAMi5(7J@MbNob}zoo?h2$$LoErdDK?o zIk7e@7I_oCkK)!hx(MShOLMwS9`D&d+!JZCn~m{CjPY`Lv~V@x9E4sh#6Ackw&&oB3fYvokOS#)`6y^GS}9Mn19B z8E!FSl>*KJu@SMH)zYJef-Ze&Q)a-93DJu3LjAA~PyRigP6N8_VvW>Px108i8m-dE z7SkWe#%uFG^SFwH zirU8~t;21bDiFp>q;3ckG~sDlSFLe>TxEopeX<%{qaK9e34InlhYXZvNF)(0xN0Qc z6i^EliDWL9S;XfP3H@wMf>iW0_w7~<8iMXR!TAsJmgIr7%r|m0ejCeIkZLQ@{q<(7 zNU6f#gl+-1L{<~WEN?&mAw*1@L4_f*9Pmd&d?z0?99w4jdw*toT5mgUy${>{Sa;c7 zcS0p7NKqS5Tz3ag!_^CiO6Pgxp+Jd+2c1Q+Sf|zgQO+ZWJ5a!iip4haV9+WgXkts^x}7o5K%>voygm! zhtlAP8i!Jimy*UNs^e;^nwQx(Q;sw{4NlpSG*LSEVy8sM=JK{S#^z6r-=XxkQf-rm*S&@aR+ftE+Cgji6O!Y~>3GD^m z5}Az?%kUTcA%r8E#a+dTCH;p`+0)Gh5@|Eq;|Msw5zVu(n^Eb0&}v#@0(6ftG;F*u zNH!rcZ!r#O1SfhcF}hVX*(&Rvc++{phD37?j@gpR5l~?LS>A4tXM*GI1$tRU5m5X=my}38g08|P*w3U3Z>c~rs=z{&shFq^S*D>-ulzC_E6nTuZRhLV ztI>7`&$;W0;$oLu6h2PK2&aoxYobK4<%!>8;zZKODU}6oA|j;8{6wQS;HRC^P^m`y z<0ffYpR{s{NwAr@>QgV9bIcfPUCST;J0* z!n3WDkd>}$aM4ZmeWwc(!bcQ?Mvx^Rn}_oV8t{JT&#{PkVaEJ!)%_it0 z+!Ie}UI7LYav40o7jOxFI)1fz=-{UfsT`+3;mz;oTbS8iqFEz@jve?G-^ZS^AEdPm zguMJA&2;m`%fdUSXlt%H94*ZO7G!{^_n2lt3!$ncW`O?JCVV-h=sE^Bb9O!j9bO~+ zLs}9wARHHL7i$z|e$PcRoSMdGftQriqF25DOqcvOp{I=X(t1?QUSZ~Mq+pRig3^zGv7-U^_6V zK%F4v)gK~F%cUYeIB0c-r<_Jmwy*Y_MayKV%6V=spY^6LwdgeNb*k=+h67Px3CKoH zKKDIcl{eRCNt4T=j- z5#9cU=wnm`UN8ZaIErY_f%iq&nxuQPFD6tvmtp|yP0pZ zF+y2wQTptedXuh2`nZTCLv%Gxd*uA6BL#JGL-VM;K!LWGkISpRzG^KE@-YSV;x3f% z`hyeaP*%l-BOR7Ll)%t;UY~Q&eN{zkdowuxImY@_tO>vc0syKgZKzz*A_FKwXK=89 zPuKzylz5TM=8Y zF*m5Y*@{o9ck|9{TO6UrII)Fd4IMF{tgZpYFDQ)P6wFhg17zchwwK)B6B*~iF{!kJ zF{Ok!9!rkYD%JaFu%e#3zdQQ+J+)hYj>dR2l)r2LljZcoyVbYiZ;0#{tCR|izEkJ@ z+MlbG6M}(EDp+z|<57k>nz&bZ z0LFS{wXQUa_Z-kv(!BQQQ+~9S)V%F*6r*UwAvGwNvCL&QGj#vF&kCy#`avgqJ`7_X zQbqGjvXzm5or#bZMl}4%fwGm=MQ9jpANfXrGoPUiKZ_`^C(~8f_1SMi_wcuT*3!rF ze1EGxc&CN53N)*LKUVHAQj_aCNlia)vO40X`4=~pmR$xV4hkpSniG`*HnsJ`5c861 z?Yu^ve8x+X%Qq=WX#DSAN#g%_RzWTtLi{`%m^$ejOpvkQ@IoDJMitOECGPdrA%){~BT=uu2 zm5GjV+rtTbUt4jN!}alI!=dMAtW4O_i{@Z`0Mdf%#|{Yz@p9+h3L+F=xyYFEU;4g1 z(;h05R{;slIU^?mQA;$-wEgRQx6ItCb=LyV5Y}tC>IRnflike+GkKM#U&7ZvtlMum zp}&$zK&j_w#FazwkPys72d|;xLobmLrSz2hbRE564Q9UyJ%-*o*hu~7Na1TP(Nja? zlUw>HQa~=oSbdfKP;3!za#gOW$Enq=p&go%YyOdk*U)-LZ|SEl!=>O^;jswGBu}Xmh@y{+|Ig%ZEc}@`1}-4iY@$>iAkHHDHkgv z-RvN)nB)E#E0i3Y?P__vavJ-YExM{oV{-*6ijH-y?QwFqo=HlX+)MImgadp`fz|cY z=)Sh1n|b_q?cLbR-4A}J+!*PNIX*r=N(a6zIU!8E-Lg28-h~W*HjR+8?`s$O6uJsG z=e}VU-a-3s1@%Ab(|LfW%vDcijRk6fmK`9ji(Tvz0wKYRH?ueXa1gBfkV34IH=K{9)~Z6onlLqz$-gsfkpM*a|TOpJ=bG2mvlnRiHgS=G++ zZM}6Rz4IqwtSFyHa)?)uG{RgR-b@xVCe*%)xRTaJb_`t3-tzpt=DkhJl2gpp?v#v7 zdPQGAdM&v%%1DJkFIsGN;o=G$%ymquw+Do#1AlF;%Hni3c~553$Qr?Vq9HB zL0&WYapqkkGc1a8E3y-q&h9zEV_8`kRWjw*ce7~PSxOX>j;rq;PkDx=&E;ptffPy^ zuetbax!?)K>27FL*tou`e>g-d)3Z`d%lJH{@n4YXd5YV{xFjJONVdB1;q1-t#&hsE zxDe0n#tuB z6tI+qH}A7GB;kWl0O6#P=h(g739kfY@@HNb)2nl))1tW77;~R!EOa&^amC8ABLR726@*pRid#s)-e)puOO( z+3K?$zAm5E2f!XWtt8cyv=R-Ai@&vOq4j%;v5c) zMZg>kWC~5IDJnY^nNJuDp`xxKL6#)dQWdAemf=l*@si_Q2y;98Q0SSg24DSc5Kxjl zQ_%h1iK2eus{wpO!wdWGb}XAzR8R3NS4(q-q`^b4zEYCgC zj>98U!qWO@V+ol_kZ?WeWl)Nms;HVr1_c0$ijl5t6PSb;jL!1C!^A9sW!|eB3`dxk znVCe8F2JeHRSFJ*2-uY7Km_teOc}WQz%-I#xP*q|z>xBRyt19PMV$NP%%lF77+YZt z#h2^Cu`wB;GNNQ&5T9P!ZRk68G@zTw$6Y7;5`;=tJI@vYaV~L*w%xdbku)l6OX&y? zqgGkVXxYN}L>Y!CQRmC$n9MC*2}RfGIri#<$&yE+ee3R(j}`+%+|b}ULB_%3WQT8X$tJ#C&wQKM%ANQt%#gs z9rc4nV#E)rHvq&D#kwnS3nr?y1Tor1@S<1L@!ryLjr!7pafpo^Y<&R19ri>S>!mT` z9Bb~3c0X42f)2?d`v3T$NUNc7FL~9!`H;(7$bTZ_3~Uj4`j3_E5+29`?g1ldiZz7m zhDQV0F(w_~AjXSi!qwl>(Y?%2eC?tfT3VDMCVIGDIpxek&@3rY~IbG>+tUu3# zOB(D_3c|&i=Vah2bpGz*RaS?Hz)2yKh=@#%ClMAdmTo!(k`I>>7^Anp3;||pP*K8# zh&qKAaMghsWz-2{;mg4uwJD-SZ#CZ2^2Qf$-z3g4@61kH$o8P_t&am;ksEW_`{qQX%y0_y8)q;st060rJ%5D!3kzY(TCf1y8Aq=F$WM zK@TFL#xm;}tiv2OuOHqVDY|5=;5F(T)ZuM7?G<3Gl_Wz16CRtPWRE&w)mcDuDUucNzRL~PMWsK z4bvHk<$i91=n%pGtG)9KYHC~iI0?msb|^^*2pAw#Lk~#R0HJphkRnKj5JZXyC}?N~ zLXkiS5KtlXqDLumK~TC%ld6ECfFMP%5J8UT9DU;*eVw^;XYPl0=6-tjm%V28%-(y} zZ=PrUpS9NWEP(QzG+~Kw%t#9G*JFKDD@BnK%`U^`G zNhde;e>%l-?n`{^7wcoQCA+ZJ!h0n6&$HbLO-`P@HenAVuFOPxU%D0O@QT(yU&Ls= zw5oZ>qj>kM{o2lx6WTQIZ{DSUM=uOHjF0xd6n!w`TnpxLG+x2?^{^eFTY9||BJy0m z9@?^NZZ{%`X`~n zvoL{QN&%!heaz*Ylk3cGL)Na9OQ6oXs7J<6-YWmL)BS+ZvG}#ru<6s`gA~3@;?bk3 zwMWXMPOM+FY-P#YrQctC+Hzp<>Ts}T{__;}c_{SKv^7o8(A4A1rEOXOS|@^ZTN1$> z?la~&K8BJt$s=gF>wSC`x&jy5;&$JObw8ZV#Twr~%eCTP-#w`wYy0C&nr7 zI*+ZeQbeh3>@3@CxQr%481c2ZNQs1cI7ldVkkc&1HXU0Gc>T~p=#x&RV{%m*N?azR zSH(uGT!DmT1_A-ZOd&Cj?j@qDc>G*g06gWU7F0abowP#5V&uk07w3syB=3-1{L>oA zA{g`%59y_Wvg8=V_tCY4Odq4YUgmc~>{*|ap_aBNU7;U@;NTllcAC2EU;3xo##=X? zTCp`}cxdTlxm*twwzm)qsLB+k(NoLCOR4G^nRtsqd!DMQbOQc@7}LgH(#^3?d1%2$ zR7Zyu?AiRq*e%N=7#2u* z^|E@AU|vsooLX{x(G<&*->o&V)Bd>HfLltVijF!i&f!Qba%bB=s*n6U46cRTn$*Y5 zFirb6VFf(?-4nh8awkx2#X(QXo@20Gm$$)>4ihrfMrm0qj0<>~zwhZ5K203|T$H%I zSF#c_hQsT!O7DLgQy3Ihk=%Jt%P;FVCj)q)><3{+^V*djnf+$;TX~3SbNPFY_)d0r z+{sWvNYaApd5nCBt7cAem599l3GpKwkZr;=34a6E1#DXjU%NV8%e{D`wKtyy}4#eMTc% zY?6*$Ro|OGqQp*;%nSUIwtqilpvA-Xrwu{6Z^+pp=YA@M2Fu&Uv=>)H{*gT>&+ij` zsam1IS}v}pEv(3pl$wl;oeCALD_rmIcb?0(Ew}lDd;^>NB7B^H#${WE{Uzq;`qA!l zXBk>ziJ$B_8dA9Mrot}ujBeW*578XcZ=r}(B_nR%QI<0|r-3BVBS$Mt7}oQ|Uq;Kj z%?b_9(K(52OCBpH$sk+yJ)&F9lZ}nTnVe4&6_+RVXCs%2fOWtsC`h0QSQSdG=I~{SNa-(>q(X{D!LEKh zV5R0O8x*sLGAR8AiKn#25UNrW`Q(8V4A(4C5UcP9hXTkw|89({z9!?w`4tgeu6ym@ zO^CgK*G|MX#-mq$I=R@JFoD3apMb0eYa5Jq8!sQHRiaPJ+f-#Qr-=9q14YAS(?nt{ zk^=G41+rXrB{|LBeCirwi-h$tze)1NH{r3`Tjs9&C4a)GQeIlwG40+emHqv`C?ai5 zSu0Dnihl80K6AVDQ$5#MV#C}=`7atX20_ro6#p;98NdQPFTrF@7r!JvNFl+3^c34! zhV6r(?{Ua-g=T8J?R+xY2G3F4oX`~~nn;^T94e2^W^NsllQOltA+tr-`>mi3m)tbE z47(GDw2`;+nNm>GMB`4F3X2QYnK*hWDvv}P`#9+iD=hQd8yno$CA6^1$?-P21*|nM zUwxk$@s8Rh+hrOP%}CmKGaV-nRvorKYB0vg#I$#3$)qbU^{Mo*$+%``K<>Q(!UE)& zoJ-EVS(5NM0PQL%(5~r}28I_@pAX%ZgkxlRkBVpbo`ggxz$`bedVKwAj?MoF_s=Qgyc=Ab=mNs zy<5myOp>UKwrVez2kv*GC5F#*mTXIS!si7ekb*$Lbo7_7*ql-s{VDAr9hJ` z6eGaprcxQaZkb83#33z6eUbT)mo?uBu}J&sgdy7m?VnB#HeY!}6*&+3F${HVb~I61 z4=hE^Wg)rL*UpqpX&HN3XgL*Jq3NOp)Dn>s>1w<}QEVo>iV5KB`m}I>+rrma9Etf0 z2vW70)jkm@&` zB0HCd7a=>&>x%=j#D-yE0Az{pUB6O?VsR{EXo0VWg(tm#WC+wlB!fK~_9$8+2gml^ zt6l>(=XNp9Za0FdWyA>u)dInH=~1C~Wd2xPEC{XfR^0?8YULQRBGaaeF>{sKhH?Q$ zYGTofI$8Y=N%h$Aj_|OWhlxqy9q}x^qN`1Wy{Mbqa4C-_l^!5lu4P;Y@f4?79v3b~ z`=)S|6ay5?KK?H2FL)zQLGQLH+0|dCh9YQHf*s(<5M!SPM=74@dve`%p>Mik7Qsu| zd`S8|6XVufB!st;C5nB?MbT5qPf?%2(?z=)aD$ zL4TpVJjiTNS&mF&=M&DP3?oQN;z_w~=72bCjyx?a512k>hgin(`aGNXgVr$wUv+!Q z0m=&Bsnxfh83~!594C&#o|E`P+jjF^&8T&`IKCqMvH^HY=Wb$K5G%f&8P|UD!sG6y zeV>RO!~OQGn9J9Kj9;*qTIxiz(3_1dBSj}3plrD|lTeAeL1fcH69IvpS zy=O5vwRbvE{&?Q4->WNf7g?3K=RpjtOsoQ&ow`%Jm(Ffb#BJZnwp!9 z^Xy7f8KxxB6hwc87G3hC*<{gIMalRon%Z{oQKTs>+(}_*FZB?1LP?3R4C4W1o^moG zWi)oZmcFEZQTOZP=7R0$OjU@Y=lnIx!~(@H9XnoUb_!nd-=*8wpH_*SyQ{o89g<`5 zc+b!dI;il=X=pwWqm&`16xNV=Ns&GFr~&rgN=D+O`gqTY8b@K-U;V(BUO zP&zJmB>qW=Yo8c4nEGoR67#4%f~s2hX+uf{f2%es$|wPoXH`$4&IQ&hZ@1oCCz>&x z@@rL5H_zW~ZS8!@a;P-5`F(Zuy65$vRfs(7CYq|!z(Q1&c=AwDcoAe|pLPaFPT5H* zF;xjo#v33OM1{MPS}j%{6^%&v5qqh3kJV2`*bi1}@8>=354mUM40Ud?a`6#ZrwW4u z8stpSbXVj|nWD=G>YVzwJtC@kK8WsAk&?m#o`5^`^m1C-Kr}QkOF`$R?U4<2t)2wV z8g@T-5^5Oi+a@~$6#XwNslVp6|7)%9gx>J%Rrn8T^XoEycsY??2^v2#{wJaT+Ryy| vhyG0u;7u&!;^NfKpCtq&s6_;wi#r=lWb4RZ*Z<|ImWGzbuQ&a>*0=uw2lVyC literal 0 HcmV?d00001 diff --git a/com.hybrid.joshsoftware.lingoai/XMLFiles/e2e.xml b/com.hybrid.joshsoftware.lingoai/XMLFiles/e2e.xml new file mode 100644 index 0000000..bf2d9aa --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/XMLFiles/e2e.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/com.hybrid.joshsoftware.lingoai/pom.xml b/com.hybrid.joshsoftware.lingoai/pom.xml new file mode 100644 index 0000000..aedbb52 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + com.hybrid.joshsoftware.lingoai + com.hybrid.joshsoftware.lingoai + 0.0.1-SNAPSHOT + + + + org.seleniumhq.selenium + selenium-java + 4.29.0 + + + + + org.testng + testng + 7.10.2 + + + + org.apache.poi + poi + 5.4.0 + + + + org.apache.poi + poi-ooxml + 5.4.0 + + + + com.aventstack + chaintest-testng + 1.0.12 + + + \ No newline at end of file diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/BaseClass/BaseClass.java b/com.hybrid.joshsoftware.lingoai/src/main/java/BaseClass/BaseClass.java new file mode 100644 index 0000000..ee9331d --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/BaseClass/BaseClass.java @@ -0,0 +1,39 @@ +package BaseClass; + +import org.openqa.selenium.WebDriver; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; + +import com.aventstack.chaintest.plugins.ChainTestListener; + +import Helper.BrowserFactory; +import Helper.ConfigUtility; + +public class BaseClass { + + public WebDriver driver; + + // @Parameters({"browser_name"}) + @BeforeClass + public void startBrowser() { + + ChainTestListener.log(" *** Instantiating Browser *** "); + + driver = BrowserFactory.startBrowser("Chrome", ConfigUtility.getProperty("appUrl"), + ConfigUtility.getProperty("headless")); + + } + + @AfterClass + public void tearDown() { + ChainTestListener.log("LOG INFO: CLOSING BROWSER"); + if (driver != null) { + driver.quit(); + ChainTestListener.log("LOG INFO: BROWSER CLOSED"); + } else { + System.out.println("LOG INFO: BROWSER NOT INITIATED "); + } + + } + +} diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/BrowserFactory.java b/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/BrowserFactory.java new file mode 100644 index 0000000..df07050 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/BrowserFactory.java @@ -0,0 +1,82 @@ +package Helper; + +import java.time.Duration; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.edge.EdgeDriver; +import org.openqa.selenium.firefox.FirefoxDriver; + +import com.aventstack.chaintest.plugins.ChainTestListener; + +public class BrowserFactory { + + static WebDriver driver; + + // Initializing driver for screenshot in listener during failure + public static WebDriver getDriver() { + return driver; + } + + public static WebDriver startBrowser(String browser, String appUrl) { + if (browser.equalsIgnoreCase("Chrome")) { + driver = new ChromeDriver(); + } else if (browser.equalsIgnoreCase("Firefox")) { + driver = new FirefoxDriver(); + } + + else if (browser.equalsIgnoreCase("Edge")) { + driver = new EdgeDriver(); + } else { + System.out.println("We only support CHROME, FIREFOX, EDGE Browser"); + System.out.println("Starting Default Browser"); + driver = new ChromeDriver(); + } + driver.manage().window().maximize(); + driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(60)); + driver.get(appUrl); + driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)); + return driver; + } + + public static WebDriver startBrowser(String browser, String appUrl, String headless) { + + if (browser.equalsIgnoreCase("Chrome")) { + + if (headless.equalsIgnoreCase("true")) { + ChainTestListener.log("LOG INFO: CHROME BROWSER Initialized In HEADLESS"); + ChromeOptions options = new ChromeOptions(); + options.addArguments("headless"); + driver = new ChromeDriver(options); + } + + else { + ChainTestListener.log("LOG INFO: Chrome Browser Initialized "); + driver = new ChromeDriver(); + } + } + + else if (browser.equalsIgnoreCase("Firefox")) { + ChainTestListener.log("LOG INFO: FireFox Browser Initialized "); + driver = new FirefoxDriver(); + } else if (browser.equalsIgnoreCase("Edge")) { + ChainTestListener.log("LOG INFO: Edge Browser Initialized "); + driver = new EdgeDriver(); + } + + else { + ChainTestListener.log("LOG INFO: Sorry We Only support 'CHROME', 'FIREFOX', 'EDGE' "); + ChainTestListener.log("LOG INFO: Initializing Chrome Browser"); + driver = new ChromeDriver(); + } + + driver.manage().window().maximize(); + driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(60)); + ChainTestListener.log("LOG INFO: Launching Lingo AI URL"); + driver.get(appUrl); + driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)); + return driver; + } + +} diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/ConfigUtility.java b/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/ConfigUtility.java new file mode 100644 index 0000000..48ffeb8 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/ConfigUtility.java @@ -0,0 +1,27 @@ +package Helper; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Properties; + +public class ConfigUtility { + + public static String getProperty(String key) { + Properties prop = null; + + try { + + prop = new Properties(); + prop.load( + new FileInputStream(new File(System.getProperty("user.dir") + "/Configuration/lingo.properties"))); + } catch (FileNotFoundException e) { + System.out.println("File Not Found " + e.getMessage()); + } catch (IOException e) { + System.out.println("Issue On loading " + e.getMessage()); + } + return prop.getProperty(key); + } + +} diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/DateUtility.java b/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/DateUtility.java new file mode 100644 index 0000000..3b3042c --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/DateUtility.java @@ -0,0 +1,17 @@ +package Helper; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +public class DateUtility { + + public static String getDate() { + LocalDate today = LocalDate.now(); // gets current date + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy"); + String formattedDate = today.format(formatter); + + return formattedDate; // e.g., 22 July 2025 + } + +} \ No newline at end of file diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/Utility.java b/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/Utility.java new file mode 100644 index 0000000..2141b02 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/Helper/Utility.java @@ -0,0 +1,123 @@ +package Helper; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; + +import org.openqa.selenium.By; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.OutputType; +import org.openqa.selenium.TakesScreenshot; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; + +public class Utility { + + public static String getScreenshot(WebDriver driver) { + TakesScreenshot ts = (TakesScreenshot) driver; + return ts.getScreenshotAs(OutputType.BASE64); + } + + public static String getTitle(WebDriver driver) { + return driver.getTitle(); + } + + public static boolean isCurrentUrlMatch(WebDriver driver, String url) { + + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5)); + return wait.until(ExpectedConditions.urlContains(url)); + + } + + public static void pause(int millisec) { + try { + Thread.sleep(millisec); + } catch (InterruptedException e) { + System.out.println(e.getMessage()); + } + } + + public static boolean checkElementInvisibility(WebDriver driver, By locator) { + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); + return wait.until(ExpectedConditions.invisibilityOfElementLocated(locator)); + + } + + public static WebElement checkElement(WebDriver driver, By locator) { + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(300)); + + WebElement ele = wait.until(ExpectedConditions.elementToBeClickable(locator)); + + Utility.highlightElement(driver, ele); + + return ele; + + } + +// public static WebElement checkElementVisibility(WebDriver driver, By locator) { +// WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(60)); +// +// WebElement ele = wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); +// +// Utility.highlightElement(driver, ele); +// +// return ele; +// +// } + + public static List checkListElementPresence(WebDriver driver, By locator) { + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(60)); + return wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(locator)); + } + + public static void highlightElement(WebDriver driver, WebElement element) { + JavascriptExecutor js = (JavascriptExecutor) driver; + js.executeScript("arguments[0].setAttribute('style','background:yellow;border: 2px solid red;');", element); + pause(500); + js.executeScript("arguments[0].setAttribute('style','border: solid 2px white');", element); + } + + public static void typeonElement(WebDriver driver, By locator, String textToType) { + // System.out.println(textToType); + + Utility.checkElement(driver, locator).sendKeys(textToType); + } + + public static void clickOnElement(WebDriver driver, By locator) { + Utility.checkElement(driver, locator).click(); + } + + public static String getElementText(WebDriver driver, By locator) { + System.out.println(driver.findElement(locator).getText()); + return Utility.checkElement(driver, locator).getText(); + } + + public static boolean isElementDisplayed(WebDriver driver, By locator) { + return Utility.checkElement(driver, locator).isDisplayed(); + } + + public static List getActualList(WebDriver driver, By locator) { + return driver.findElements(locator); + } + + public static List getMenuList(WebDriver driver, int size, By locator) { + List actual_list = new ArrayList(); + List list_webElement = Utility.getActualList(driver, locator); + + if (list_webElement.size() == size) { + for (WebElement webElement : list_webElement) { + String str = webElement.getText(); + + actual_list.add(str); + } + + } else { + System.out.println("List Count Mismatch"); + } + + return actual_list; + } + +} \ No newline at end of file diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/Listeners/MyTestNGListener.java b/com.hybrid.joshsoftware.lingoai/src/main/java/Listeners/MyTestNGListener.java new file mode 100644 index 0000000..dc43206 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/Listeners/MyTestNGListener.java @@ -0,0 +1,47 @@ +package Listeners; + +import org.testng.ITestContext; +import org.testng.ITestListener; +import org.testng.ITestResult; + +import com.aventstack.chaintest.plugins.ChainTestListener; + +import Helper.BrowserFactory; +import Helper.Utility; + +public class MyTestNGListener implements ITestListener { + + public void onTestStart(ITestResult result) { + + ChainTestListener.log("Log:PASS - Test Pass " + result.getMethod().getMethodName()); + + } + + public void onTestSuccess(ITestResult result) { + ChainTestListener.log("Log:PASS - Test PASS " + result.getMethod().getMethodName()); + } + + public void onTestFailure(ITestResult result) { + ChainTestListener.log("Log:FAIL - Test FAIL " + result.getMethod().getMethodName() + " " + + result.getThrowable().getMessage()); + String screenshot = Utility.getScreenshot(BrowserFactory.getDriver()); + ChainTestListener.embed(screenshot, "image/png"); + + } + + public void onTestSkipped(ITestResult result) { + ChainTestListener.log("Log:SKIP - Test SKIPPED " + result.getMethod().getMethodName()); + + } + +// public void onStart(ITestContext context) { +// ChainTestListener.log(""); +// +// } +// +// public void onFinish(ITestContext context) { +// ChainTestListener.log(""); +// +// } + +} diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/Pages/AudioResultPage.java b/com.hybrid.joshsoftware.lingoai/src/main/java/Pages/AudioResultPage.java new file mode 100644 index 0000000..22da371 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/Pages/AudioResultPage.java @@ -0,0 +1,153 @@ +package Pages; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.Reporter; + +import Helper.DateUtility; +import Helper.Utility; + +public class AudioResultPage { + + WebDriver driver; + + public AudioResultPage(WebDriver driver) { + + this.driver = driver; + + } + + // Audio Processing Result Locators + By txt_uploaded_audio_file = By + .xpath("//p[text()='Complete analysis of your uploaded audio file with translation and insights']"); + + // Audio File Details Container Locators + By txt_audio_file_detais = By.xpath("//h3[text()='Audio File Details']"); + By list_actual_audio_file_Details_label = By.xpath( + "//h3[text()='Audio File Details']/parent::div/following-sibling::div//p[contains(@class,'text-muted-foreground')]"); + By button_playAudio = By.xpath("//button[text()='Play Audio']"); + By button_pauseAudio = By.xpath("//button[text()='Pause Audio']"); + By file_name = By.xpath("//p[text()='File Name']//following-sibling::p"); + By file_duration = By.xpath("//p[text()='Duration']//following-sibling::div"); + By file_actual_date = By.xpath("//p[text()='Upload Date']//following-sibling::p"); + By file_orignal_language = By.xpath("//p[text()='Original Language']//following-sibling::div"); + By button_timeline = By.xpath("//button[text()='Timeline']"); + + // Validate Transcribe button Options + By listButton_transcribe_Options = By.xpath("//div[@role='tablist']//button"); + + // Englsih Translation COntainer + By containerTxt_Englishtranslation = By.xpath("//h3[text()='English Translation']"); + + // Timeline Conversation Container + By conversation_container = By.xpath("//h3[text()='Conversation Timeline']"); + By conversation_timeline_text_seq = By.xpath( + "//h3[text()='Conversation Timeline']/parent::div/following-sibling::div//div[contains(@class,'items-start')]"); + + public boolean getAudioFileUploadedMsg() { + return Utility.isElementDisplayed(driver, txt_uploaded_audio_file); + } + + public List verifyLabelAudioContainer() { + + List actual_audio_file_Details_label_list = Utility.checkListElementPresence(driver, + list_actual_audio_file_Details_label); + + List actual_myList = new ArrayList(); + + if (actual_audio_file_Details_label_list.size() == 4) { + + for (int i = 0; i < actual_audio_file_Details_label_list.size(); i++) { + String a = actual_audio_file_Details_label_list.get(i).getText(); + + actual_myList.add(a); + } + } else { + Reporter.log("*** File Details List Count Mismatch ***", true); + } + return actual_myList; + } + + public boolean checkPlayAudioButtonStatus() { + return Utility.isElementDisplayed(driver, button_playAudio); + + } + + public boolean checkEnglishTranslationContainerText() { + return Utility.isElementDisplayed(driver, containerTxt_Englishtranslation); + + } + + public String getUploadedFileName() { + return Utility.getElementText(driver, file_name); + + } + + public String getUploadedFileDuration() { + return Utility.getElementText(driver, file_duration); + + } + + public String getTodayDate() { + return DateUtility.getDate(); + } + + public String getUploadedFileDate() { + return Utility.getElementText(driver, file_actual_date); + + } + + public String checkFileOrignalLanguage() { + return Utility.getElementText(driver, file_orignal_language); + + } + + public List checkTranscribeOptions() { + List actual_transcribe_Options_List = Utility.checkListElementPresence(driver, + listButton_transcribe_Options); + + List myList = new ArrayList(); + if (actual_transcribe_Options_List.size() == 3) { + for (int i = 0; i < actual_transcribe_Options_List.size(); i++) { + String a = actual_transcribe_Options_List.get(i).getText(); + + myList.add(a); + } + } else { + Reporter.log("*** Transcribe Options Count Mismatch ***", true); + } + + return myList; + + } + + public void clickPlayAudioButton() { + Utility.clickOnElement(driver, button_playAudio); + if (Utility.getElementText(driver, button_pauseAudio).equals("Pause Audio")) { + Utility.clickOnElement(driver, button_timeline); + } else { + Reporter.log("Pause Button Text Mismatch", true); + } + } + + public boolean checkConversationContainerStatus() { + return Utility.isElementDisplayed(driver, conversation_container); + } + + public void checkConversationTranscribe() { + List abc = Utility.checkListElementPresence(driver, conversation_timeline_text_seq); + for (WebElement xyz : abc) { + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(60)); + wait.until(ExpectedConditions.attributeContains(xyz, "class", "bg-green-100/50 border-green-50")); + System.out.println("TRUE > Getting Green Border"); + } + } + +} diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/Pages/HomePage.java b/com.hybrid.joshsoftware.lingoai/src/main/java/Pages/HomePage.java new file mode 100644 index 0000000..545d418 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/Pages/HomePage.java @@ -0,0 +1,180 @@ +package Pages; + +import java.util.ArrayList; +import java.util.List; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.testng.Assert; + +import com.aventstack.chaintest.plugins.ChainTestListener; + +import Helper.Utility; + +public class HomePage { + + WebDriver driver; + + // driver Initialization + public HomePage(WebDriver driver) { + this.driver = driver; + } + + // Locators > HomePage + By mic_container = By.xpath("//p[contains(text(),'upload an audio or video file')]"); + By button_uploadfile = By.xpath("//button[text()='Upload File']"); + By button_startRecording = By.xpath("//button[contains(text(),'Start Recording')]"); + By verifyFileUploaded = By.xpath("//p"); + By button_transcribe = By.xpath("//button[text()='Transcribe']"); + By button_restart = By.xpath("//button[text()='Restart']"); + By h1_checkAudioResults = By.xpath("//h1[text()='Audio Processing Results']"); + By transcribing_msg = By.xpath("//p[contains(text(),'Transcribing')]"); + By save_transcribe_msg = By.xpath("//p[contains(text(),'Saving')]"); + + // Locators > ProfileOptions Container + By profileIcon = By.xpath("//a[contains(text(),'View Records')]//parent::button/following-sibling::div"); + By profileOption_account = By.xpath("//div[@role='menu']/div[text()='My Account']"); + By profileOption_separator = By.xpath("//div[@role='separator']"); + By profile_menuOptions = By.xpath("//div[@role='menuitem']"); + By txt_profileOption = By.xpath("//div[text()='Profile']"); + By container_profile = By.xpath("//h2[text()='Profile']//parent::div"); + By heading_profileContainer = By.xpath("//h2[text()='Profile']"); + By profile_email = By.xpath("//h2[text()='Profile']//parent::div//p"); + By txt_email_initials = By.xpath("//h2[text()='Profile']//parent::div//div[contains(@class,'text-white')]"); + By close_profileContainer = By.xpath("//h2[text()='Profile']//parent::div//button"); + By list_profileTranscribeDetails = By.xpath("//div[contains(@class,'grid')]//div"); + + // Locators > LingoBot + By txt_lingoBot = By.xpath("//div[text()='Lingo bot']"); + By container_lingoBot = By.xpath("//h2[text()='Meeting Recorder Bot']/parent::div"); + By headingTxt_lingoBotContainer = By.xpath("//h2[text()='Meeting Recorder Bot']"); + By subHeadingTxt_lingoBotContainer = By.xpath("//h2[text()='Meeting Recorder Bot']/parent::div//p"); + By buttonCancel_LingoBot = By.xpath("//h2[text()='Meeting Recorder Bot']/parent::div//button[text()='Cancel']"); + + // Logout + By button_logout = By.xpath("//div[text()='Logout']"); + + public String uploadMp3File(String file_path) { + driver.findElement(By.xpath("//button[text()='Upload File']//preceding::input[@type='file']")) + .sendKeys(file_path); + return Utility.getElementText(driver, verifyFileUploaded); + + } + + public void clickTranscribe() { + ChainTestListener.log("LOG INFO: CLICKING ON TRANSCRIBE"); + Utility.clickOnElement(driver, button_transcribe); + } + + public String captureTranscribingMsg() { + + return Utility.getElementText(driver, transcribing_msg); + } + + public String captureTranscribeSaveMsg() { + return Utility.getElementText(driver, save_transcribe_msg); + } + + public String captureAudioProcessingResult() { + return Utility.getElementText(driver, h1_checkAudioResults); + } + + public void clickProfileIcon() { + Utility.clickOnElement(driver, profileIcon); + } + + public String getAccountText() { + return Utility.getElementText(driver, profileOption_account); + } + + public boolean isProfileSeparatorDisplayed() { + return Utility.isElementDisplayed(driver, profileOption_separator); + } + + public List getProfileMenuOptions() { + return Utility.getMenuList(driver, 4, profile_menuOptions); + } + + public void clickProfileOptiontxt() { + Utility.clickOnElement(driver, txt_profileOption); + } + + public boolean isProfileContainerDisplayed() { + return Utility.isElementDisplayed(driver, container_profile); + } + + public String getProfileContainerHeadingText() { + return Utility.getElementText(driver, heading_profileContainer); + } + + public String getProfileEmail() { + return Utility.getElementText(driver, profile_email); + } + + public String getemailInitials() { + return Utility.getElementText(driver, txt_email_initials); + } + + public String getInitials() { + String email = this.getProfileEmail(); + String email_upper = email.toUpperCase(); + char exp_c1 = email_upper.charAt(0); + return String.valueOf(exp_c1); + } + + public void clickProfileClose() { + Utility.clickOnElement(driver, close_profileContainer); + } + + public List getTranscribeDetails() throws Exception { + + List user_transcribe_details = Utility.getActualList(driver, list_profileTranscribeDetails); + + List actual_user_transcribe_details = new ArrayList(); + + for (WebElement element : user_transcribe_details) { + String str1 = element.getText(); + String arr[] = str1.split("\n"); + String strA = arr[0]; + String strB = arr[1]; + actual_user_transcribe_details.add(strA); + // Assert.assertNotNull(strB); + if (strB.equals(null)) { + throw new Exception("Null Value Observed at Transcribe Profile Details" + strB); + } + + } + return actual_user_transcribe_details; + } + + public void clickLingoBot() { + Utility.clickOnElement(driver, txt_lingoBot); + + } + + public boolean isLingoBotContainerDisplayed() { + return Utility.isElementDisplayed(driver, container_lingoBot); + } + + public boolean isLingoBotContainerHeadingDisplayed() { + return Utility.isElementDisplayed(driver, headingTxt_lingoBotContainer); + } + + public String getLingoBotSubHeading() { + return Utility.getElementText(driver, subHeadingTxt_lingoBotContainer); + } + + public void clickLingoCancelButton() { + Utility.clickOnElement(driver, buttonCancel_LingoBot); + } + + public boolean IsLingoBotContainerInvisible() { + return Utility.checkElementInvisibility(driver, container_lingoBot); + } + + public void clickLogout() { + Utility.clickOnElement(driver, button_logout); + } + +} \ No newline at end of file diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/Pages/LoginPage.java b/com.hybrid.joshsoftware.lingoai/src/main/java/Pages/LoginPage.java new file mode 100644 index 0000000..e522fd2 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/Pages/LoginPage.java @@ -0,0 +1,43 @@ +package Pages; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +import com.aventstack.chaintest.plugins.ChainTestListener; + +import Helper.Utility; + +public class LoginPage { + + WebDriver driver; + + public LoginPage(WebDriver driver) { + this.driver = driver; + } + + By email = By.name("userEmail"); + By password = By.xpath("//input[@name='password']"); + By signinButton = By.xpath("//button[@type='submit']"); + By signupLink = By.partialLinkText("Sign Up"); + By homepage_signIn = By.xpath("//button//a[text()='Sign In']"); + + public HomePage loginWithValidCreds(String user_email, String user_pw) { + + ChainTestListener.log("LOG INFO: ENTERING USER EMAIL"); + Utility.typeonElement(driver, email, user_email); + + ChainTestListener.log("LOG INFO: ENTERING USER PASSWORD"); + Utility.typeonElement(driver, password, user_pw); + + ChainTestListener.log("LOG INFO: ENTERING USER SIGNIN"); + Utility.clickOnElement(driver, signinButton); + + return new HomePage(driver); + + } + + public boolean isSignInButtonDisplayed() { + return Utility.isElementDisplayed(driver, homepage_signIn); + } + +} diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/dataproviders/DataProviders.java b/com.hybrid.joshsoftware.lingoai/src/main/java/dataproviders/DataProviders.java new file mode 100644 index 0000000..933dfe7 --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/dataproviders/DataProviders.java @@ -0,0 +1,15 @@ +package dataproviders; + +import org.testng.annotations.DataProvider; + +public class DataProviders { + + @DataProvider(name = "LoginCredsData") + public static Object[][] testData() { + + Object obj[][] = ExcelUtility.readExcelData("LoginCreds"); + return obj; + + } + +} diff --git a/com.hybrid.joshsoftware.lingoai/src/main/java/dataproviders/ExcelUtility.java b/com.hybrid.joshsoftware.lingoai/src/main/java/dataproviders/ExcelUtility.java new file mode 100644 index 0000000..94a78ce --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/main/java/dataproviders/ExcelUtility.java @@ -0,0 +1,62 @@ +package dataproviders; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; + +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +public class ExcelUtility { + static XSSFWorkbook wb; + + public static Object[][] readExcelData(String sheet_name) { + + FileInputStream fis = null; + + File src = new File(System.getProperty("user.dir") + "/TestData/TestData.xlsx"); + + try { + fis = new FileInputStream(src); + wb = new XSSFWorkbook(fis); + + } catch (FileNotFoundException e) { + System.out.println("File Not Found " + e.getMessage()); + } catch (IOException e) { + + System.out.println("File Not able to load " + e.getMessage()); + } + int row_count = wb.getSheet(sheet_name).getPhysicalNumberOfRows(); + int column_count = wb.getSheet(sheet_name).getRow(0).getPhysicalNumberOfCells(); + + Object obj[][] = new Object[row_count][column_count]; + for (int i = 0; i < row_count; i++) { + for (int j = 0; j < column_count; j++) { + obj[i][j] = ExcelUtility.getCellType(sheet_name, i, j); + + } + + } + + return obj; + + } + + public static String getCellType(String sheet_name, int row, int cell) { + String data = ""; + CellType cellType = wb.getSheet(sheet_name).getRow(row).getCell(cell).getCellType(); + + if (cellType == CellType.STRING) { + data = wb.getSheet(sheet_name).getRow(row).getCell(cell).getStringCellValue(); + } else if (cellType == CellType.NUMERIC) { + data = String.valueOf(wb.getSheet(sheet_name).getRow(row).getCell(cell).getNumericCellValue()); + } + + else if (cellType == CellType.BOOLEAN) { + data = String.valueOf(wb.getSheet(sheet_name).getRow(row).getCell(cell).getBooleanCellValue()); + } + return data; + } + +} diff --git a/com.hybrid.joshsoftware.lingoai/src/test/java/testcases/LingoAILogin.java b/com.hybrid.joshsoftware.lingoai/src/test/java/testcases/LingoAILogin.java new file mode 100644 index 0000000..0958f1c --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/test/java/testcases/LingoAILogin.java @@ -0,0 +1,128 @@ +package testcases; + + +import org.testng.annotations.Test; +import org.testng.AssertJUnit; +import java.util.ArrayList; +import java.util.List; + +import org.testng.Assert; +import org.testng.AssertJUnit; +import org.testng.annotations.Test; + +import com.aventstack.chaintest.plugins.ChainTestListener; + +//import com.aventstack.chaintest.plugins.ChainTestListener; + +import BaseClass.BaseClass; +import Helper.Utility; +import Pages.AudioResultPage; +import Pages.HomePage; +import Pages.LoginPage; +import dataproviders.DataProviders; + +//@Listeners(ChainTestListener.class) +public class LingoAILogin extends BaseClass { + + LoginPage login; + HomePage home; + AudioResultPage result; + + @Test(priority = 1, dataProvider = "LoginCredsData", dataProviderClass = DataProviders.class, description = "Validate E2E after Uploading MP3 File") + public void testMP3FileUpload(String u_name, String pw) { + + // batman.mp3 + // effective_communication.mp4" + + // String upload_file = "/home/ue/Downloads/batman.mp3"; + String upload_file = System.getProperty("user.dir") + "/TranscribeFiles/batman.mp3"; + + // Login With Valid Creds + login = new LoginPage(driver); + System.out.println("LOG INFO: LOGIN TO LIGO AI"); + home = login.loginWithValidCreds(u_name, pw); + + AssertJUnit.assertTrue(Utility.isCurrentUrlMatch(driver, "thelingo.co.in/new")); + + // Upload MP3 File + if (upload_file.contains("mp3")) { + ChainTestListener.log("LOG INFO: CHOSEN FILE TO UPLOAD ===> MP3 "); + + String actual_file_uploaded_title = home.uploadMp3File(upload_file); + Assert.assertTrue(actual_file_uploaded_title.contains("batman.mp3"), "File Mismatch"); + } + + // Upload MP4 + else if (upload_file.contains("mp4")) { + ChainTestListener.log("LOG INFO: CHOSEN FILE TO UPLOAD ===> MP4 "); + String actual_file_uploaded_title = home.uploadMp3File(upload_file); + Assert.assertTrue(actual_file_uploaded_title.contains("effective_communication.mp4"), "File Mismatch"); + } + // Options Not Supported + else { + ChainTestListener.log("LOG INFO: CURRENTLY WE SUPPORT MP3 AND MP4 FILES ONLY"); + } + // String actual_audio_result_title = + home.clickTranscribe(); + + // Validate Post Transcribe Click Message + Assert.assertTrue(home.captureTranscribingMsg().contains("Transcribing"), "Transcribe Text Mismatch"); + Assert.assertTrue(home.captureTranscribeSaveMsg().contains("Saving"), "Saving Text Mismatch"); + + // Validate Audio Processing Results + AssertJUnit.assertTrue(home.captureAudioProcessingResult().contains("Audio Processing Results")); + } + + @Test(priority = 2, description = "Validate E2E after uploading MP4", dependsOnMethods = { "testMP3FileUpload" }) + public void validateMP3Upload() { + + List expected_audio_file_Details_list = new ArrayList(); + expected_audio_file_Details_list.add("File Name"); + expected_audio_file_Details_list.add("Duration"); + expected_audio_file_Details_list.add("Upload Date"); + expected_audio_file_Details_list.add("Original Language"); + + result = new AudioResultPage(driver); + Assert.assertEquals(result.verifyLabelAudioContainer(), expected_audio_file_Details_list, + "Audio File Details Container Label Mismatch"); + + // Validate "Play Audio Button" + Assert.assertTrue(result.checkPlayAudioButtonStatus(), "*** Button Status Not enabled ***"); + + // Validate English Translation Container + Assert.assertTrue(result.checkEnglishTranslationContainerText()); + + // Validating File Name + Assert.assertTrue(result.getUploadedFileName().contains("batman.mp3")); + + // Validating Duration + Assert.assertNotNull(result.getUploadedFileDuration()); + + // Validate Date Format > Current Date + Assert.assertEquals(result.getUploadedFileDate(), result.getTodayDate(), "***** Date Mismatch *****"); + + // Validate Orignal Language > NOT NULL + Assert.assertNotNull(result.checkFileOrignalLanguage()); + + // Validate Transcribe button Options + List exp_transcribe_buttons_option = new ArrayList(); + exp_transcribe_buttons_option.add("Translation"); + exp_transcribe_buttons_option.add("Timeline"); + exp_transcribe_buttons_option.add("Summary"); + + Assert.assertEquals(result.checkTranscribeOptions(), exp_transcribe_buttons_option, + "Transcribe Option Mismatch"); + + } + + @Test(priority = 3, description = "Play Audio And Validate Transcribe") + public void playAudioFile() { + + result = new AudioResultPage(driver); + result.clickPlayAudioButton(); + AssertJUnit.assertTrue(result.checkConversationContainerStatus()); + result.checkConversationTranscribe(); + + } + +} \ No newline at end of file diff --git a/com.hybrid.joshsoftware.lingoai/src/test/java/testcases/ProfileIcon.java b/com.hybrid.joshsoftware.lingoai/src/test/java/testcases/ProfileIcon.java new file mode 100644 index 0000000..479ef6f --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/test/java/testcases/ProfileIcon.java @@ -0,0 +1,140 @@ +package testcases; + +import java.util.ArrayList; +import java.util.List; + +import org.testng.Assert; +import org.testng.AssertJUnit; +import org.testng.annotations.Test; + +import com.aventstack.chaintest.plugins.ChainTestListener; + +import BaseClass.BaseClass; +import Helper.Utility; +import Pages.HomePage; +import Pages.LoginPage; +import dataproviders.DataProviders; + +public class ProfileIcon extends BaseClass { + + HomePage home; + LoginPage login; + + @Test(priority = 1, dataProvider = "LoginCredsData", dataProviderClass = DataProviders.class, description = "Profile Icon Click and Validate Profile Options") + public void testProfileDropdownOptions(String u_name, String pw) { + + login = new LoginPage(driver); + home = login.loginWithValidCreds(u_name, pw); + + Assert.assertTrue(Utility.isCurrentUrlMatch(driver, "thelingo.co.in/new"), "URL Mismatch"); + + List expected_profileOption_list = new ArrayList(); + + expected_profileOption_list.add("Profile"); + expected_profileOption_list.add("Lingo bot"); + expected_profileOption_list.add("Upgrade plan"); + expected_profileOption_list.add("Logout"); + ChainTestListener.log(" Expected Profile option List loaded "); + + // Click Profile Icon and check Visibility + home.clickProfileIcon(); + ChainTestListener.log(" Clicked On Profile icon "); + + // Validating My Account Text + Assert.assertTrue(home.getAccountText().contains("My Account"), "Account Text Mismatch On Profile DD"); + ChainTestListener.log("Account Text Label Is Displayed "); + + // Validating Separator + Assert.assertTrue(home.isProfileSeparatorDisplayed(), " Separation Isn't displayed "); + ChainTestListener.log(" Profile Separator Is Displayed "); + + Assert.assertEquals(home.getProfileMenuOptions(), expected_profileOption_list, + "Mismatch In Actual Profile Options ANd Expected Profile Option"); + ChainTestListener.log("Profile List Option Matching Succesful"); + + } + + @Test(priority = 2, dataProvider = "LoginCredsData", dataProviderClass = DataProviders.class, dependsOnMethods = { + "testProfileDropdownOptions" }) + public void clickProfileOptions(String u_name, String pw) throws Exception { + + List exp_user_transcribe_details = new ArrayList(); + exp_user_transcribe_details.add("Recordings:"); + exp_user_transcribe_details.add("Limit:"); + exp_user_transcribe_details.add("Remaining:"); + exp_user_transcribe_details.add("Subscription:"); + + // Profile Option Click From dd + home.clickProfileOptiontxt(); + ChainTestListener.log("Clicked on Profile Option From DD"); + + // Verify Profile Container Visibility + Assert.assertTrue(home.isProfileContainerDisplayed(), "Profile COntainer Visibility Error"); + ChainTestListener.log("Verifiication for Profile Container visibility"); + + // Verify Profile Heading + Assert.assertTrue(home.getProfileContainerHeadingText().equals("Profile"), "Profile Header Text Mismatch"); + ChainTestListener.log("Verifiication for Profile Heading visibility"); + + // Verify Email Displayed + Assert.assertEquals(home.getProfileEmail(), u_name, "Profile Email Mismatch "); + ChainTestListener.log("Verifiication of Profile Email Successful"); + + // Verify Email Initials + Assert.assertEquals(home.getemailInitials(), home.getInitials(), "Initials Not Matching "); + ChainTestListener.log("Verifiication for Profile Email Initials visibility"); + + // Verify profile transcribe details + Assert.assertEquals(home.getTranscribeDetails(), exp_user_transcribe_details, + "Transcribe Details List Mismatch"); + ChainTestListener.log("Verifiication for Profile Transcribe Option"); + + home.clickProfileClose(); + + } + + @Test(priority = 3, dependsOnMethods = { "testProfileDropdownOptions" }) + public void testLingoBot() { + + home.clickProfileIcon(); + ChainTestListener.log("Clicked Profile Icon"); + + home.clickLingoBot(); + ChainTestListener.log("Clicked Lingo Bot From DD"); + + Assert.assertTrue(home.isLingoBotContainerDisplayed(), "Lingo Container Visibility Error "); + ChainTestListener.log("Lingo Bot Container Visibility Checked"); + + Assert.assertTrue(home.isLingoBotContainerHeadingDisplayed(), "Lingo Bot Container Heading Mismatch"); + ChainTestListener.log("Lingo Bot Container Heading Visibility Checked"); + + AssertJUnit.assertEquals(home.getLingoBotSubHeading(), "Do you want to add a bot for meeting Summarization?"); + ChainTestListener.log("Lingo Bot Container Sub-Heading Visibility Checked"); + + home.clickLingoCancelButton(); + ChainTestListener.log("Lingo Bot Cancel Button Clicked"); + + Assert.assertTrue(home.IsLingoBotContainerInvisible(), "Lingo Bot Container still Visible"); + ChainTestListener.log("Checked Invisibility after Lingo Bot Container Cancel "); + + /* + * + * Currently code missing for "ADD BOT" + * + */ + } + + @Test(priority = 3, dependsOnMethods = { "testProfileDropdownOptions" }) + public void testLogout() { + + home.clickProfileIcon(); + ChainTestListener.log("Clicked Profile Icon"); + + home.clickLogout(); + ChainTestListener.log(" Clicked On Logout "); + + Assert.assertTrue(login.isSignInButtonDisplayed(), "Logout Error, Signin Button Not Displayed"); + ChainTestListener.log(" Logout Assertion Successful"); + + } +} diff --git a/com.hybrid.joshsoftware.lingoai/src/test/resources/config.properties b/com.hybrid.joshsoftware.lingoai/src/test/resources/config.properties new file mode 100644 index 0000000..cdddc2a --- /dev/null +++ b/com.hybrid.joshsoftware.lingoai/src/test/resources/config.properties @@ -0,0 +1,36 @@ +# chaintest configuration +chaintest.project.name=Lingo AI + +# storage +chaintest.storage.service.enabled=false +# [azure-blob, aws-s3] +chaintest.storage.service=azure-blob +# s3 bucket or azure container name +chaintest.storage.service.container-name= + +# generators: +## chainlp +chaintest.generator.chainlp.enabled=false +chaintest.generator.chainlp.class-name=com.aventstack.chaintest.generator.ChainLPGenerator +chaintest.generator.chainlp.host.url=http://localhost/ +chaintest.generator.chainlp.client.request-timeout-s=30 +chaintest.generator.chainlp.client.expect-continue=false +chaintest.generator.chainlp.client.max-retries=3 +chaintest.generator.chainlp.persist-embeds=true + +## simple +chaintest.generator.simple.enabled=true +chaintest.generator.simple.document-title= LingoAI Automation Report +chaintest.generator.simple.class-name=com.aventstack.chaintest.generator.ChainTestSimpleGenerator +chaintest.generator.simple.output-file=Reports/chaintest/Index.html +chaintest.generator.simple.offline=true +chaintest.generator.simple.dark-theme=true +chaintest.generator.simple.datetime-format=yyyy-MM-dd hh:mm:ss a +chaintest.generator.simple.js= +chaintest.generator.simple.css= + +## email +chaintest.generator.email.enabled=true +chaintest.generator.email.class-name=com.aventstack.chaintest.generator.ChainTestEmailGenerator +chaintest.generator.email.output-file=Reports/chaintest/Email.html +chaintest.generator.email.datetime-format=yyyy-MM-dd hh:mm:ss a \ No newline at end of file