
    ki#                         S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
   " S S5      rS r\S:X  a  \R                  " \" 5       5        gg)	z9
Debug script for the RAG web interface using Playwright
    N)Path)async_playwrightc                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
WebDebugger   c                 <    S U l         S U l        S U l        S U l        g N)flask_processbrowsercontextpage)selfs    debug_web.py__init__WebDebugger.__init__   s    !	    c           	        #    [        S5        [        R                  R                  5       n[        R                  R                  [        R                  5       SUS    3US'   [        R                  " [        R                  S/SU[        R                  [        R                  [        R                  S9U l        [        R                  " S5        U R                  R                  5       Gc   U R                  R                   R#                  S	5      nU R                  R$                  R#                  S	5      nU(       a  UR'                  5       OS
nU(       a  UR'                  5       OS
n[        SU 35        [        SU 35        SSKnUR)                  UR*                  UR,                  5      nUR/                  S5      nUR1                  5         US:X  a  [        S5        g[        S5        gU R                  R5                  5       u  p[        S5        [        SU
R'                  5        35        [        SUR'                  5        35        g! [2         a  n	[        SU	 35         Sn	A	gSn	A	ff = f7f)z%Start the Flask app in the backgroundzStarting Flask app...:PATHzapp.pyz'/home/dmtnaga/Documents/work/airagagent)cwdenvstdoutstderr
preexec_fn   Ni    zFlask stdout: zFlask stderr: r   z	127.0.0.1  z$Flask app is responding on port 5000Tz1Flask app started but not responding on port 5000FzError checking Flask status: zFlask failed to start!zSTDOUT: zSTDERR: )printosenvironcopypathdirnamesys
executable
subprocessPopenPIPEsetsidr
   timesleeppollr   readr   decodesocketAF_INETSOCK_STREAM
connect_exclose	Exceptioncommunicate)r   r   stdout_datastderr_data
stdout_str
stderr_strr0   sockresulter   r   s               r   start_flask_appWebDebugger.start_flask_app   s    %& jjoo893v;-HF'--^^X&9????yy
 	

1 ""$,"0077<<TB"0077<<TB5@[//1b
5@[//1b
zl34zl34 }}V^^V5G5GH)<=

Q;@AMN  "//;;=NF*,HV]]_-./HV]]_-./  5aS9:s>   C,I5/C4I #I5$I /A!I5
I2I-(I5-I22I5c                 ^  #    [        S5        [        5       R                  5       I Sh  vN nUR                  R	                  SSS/S9I Sh  vN U l        U R
                  R                  5       I Sh  vN U l        U R                  R                  5       I Sh  vN U l	        U R                  R                  SS 5        U R                  R                  S	S
 5        U R                  R                  SS 5        U R                  R                  SS 5        [        S5        g N N N N7f)zSetup Playwright browserzSetting up browser...NFz--no-sandboxz--disable-setuid-sandbox)headlessargsconsolec                 L    [        SU R                   SU R                   35      $ )Nz	CONSOLE: z: )r   typetext)msgs    r   <lambda>+WebDebugger.setup_browser.<locals>.<lambda>[   s    EIchhZr#((2T,Ur   	pageerrorc                     [        SU  35      $ )NzPAGE ERROR: )r   )errs    r   rH   rI   \   s    el3%4H.Ir   requestc                 L    [        SU R                   SU R                   35      $ )Nz	REQUEST:  )r   methodurl)rM   s    r   rH   rI   _   s$    	'..AQQRSZS^S^R_6`0ar   responsec                 L    [        SU R                   SU R                   35      $ )Nz
RESPONSE: rO   )r   statusrQ   )rR   s    r   rH   rI   `   s$    %*X__DUUVW_WcWcVd8e2fr   zBrowser setup complete)r   r   startchromiumlaunchr   new_contextr   new_pager   on)r   
playwrights     r   setup_browserWebDebugger.setup_browserO   s     %&+-3355
'0077 "<= 8 
 
 "\\5577,,//11	 			Y UV		["IJ 			Y ab		Z!fg&'! 6
 81sF   'D-D%#D-D'&D-4D)5&D-D+B
D-'D-)D-+D-c                   #     [        S5        U R                  R                  S5      I Sh  vN   U R                  R                  S5      I Sh  vN   U R                  R	                  SSS9I Sh  vN   [        S5        U R                  R                  S5      nUR                  5       I Sh  vN n[        S	U 35        U R                  R                  S
5      nUR                  5       I Sh  vN n[        SU 35        Sn[        US5       nUR                  S5        SSS5        [        SU 35        U R                  R                  S5      I Sh  vN   UR                  U5      I Sh  vN   U R                  R                  S5      I Sh  vN   U R                  R                  S5      nUR                  5       I Sh  vN nUS:  a1  UR                  R                  5       I Sh  vN n	[        SU	 35        O[        S5        U R                  R                  S5      n
U
R                  5       I Sh  vN nUS:  a1  U
R                  R                  5       I Sh  vN n[        SU 35        O[        S5        U R                  R                  S5      nUR                  5       I Sh  vN (       a&  UR                  5       I Sh  vN n[        SU 35        [        R                   " U5        g GN GN GN GNQ GN! , (       d  f       GN= f GN GN GN GN[ GN6 N N Nz N_! ["         a,  n[        SU 35        SSKnUR'                  5          SnAgSnAff = f7f)z"Test the file upload functionalityzNavigating to web interface...zhttp://localhost:5000Nnetworkidlez#upload-area'  )timeoutzPage loaded successfullyzUpload area visible: z#file-inputzFile input visible: z7/home/dmtnaga/Documents/work/airagagent/test_upload.txtwz)This is a test file for upload debugging.zAttempting to upload file: z=document.getElementById("file-input").style.display = "block"r   z.alert-dangerr   zUPLOAD ERROR: zNo error alerts foundz.alert-successzUPLOAD SUCCESS: zNo success alerts foundz#system-statuszSystem status: zTest failed with error: )r   r   gotowait_for_load_statewait_for_selectorlocator
is_visibleopenwriteevaluateset_input_fileswait_for_timeoutcountfirst
inner_textr    remover5   	traceback	print_exc)r   upload_arearg   
file_inputfile_input_visibletest_file_pathferror_alertserror_count
error_textsuccess_alertssuccess_countsuccess_text
status_divstatus_textr=   rq   s                    r   test_upload_functionality%WebDebugger.test_upload_functionalityd   s    A	"23))..!8999))//>>> ))--ne-LLL,- ))++N;K*5577J)*67 **=9J'1'<'<'>!>();(<=> WNnc*aCD + //?@A ))$$%deee ,,^<<< )),,T222  99,,_=L , 2 2 44KQ#/#5#5#@#@#BB
zl34-. "YY../?@N"0"6"6"88Mq %3%9%9%D%D%FF(78/0 **+;<J**,,,$.$9$9$;;}56 IIn%u :> M
 8
 "?
 +* f = 3 5B 9F -;  	",QC01!!	"s=  M))L0 K8"L0 K;!L0 2K>3=L0 0L1A L0 1L2 L0 L$4L0 LL0 1L2"L0 L2L0 L"'L0 /L%0AL0 <L(='L0 $L*%AL0 1L,2L0 L.(L0 7M)8L0 ;L0 >L0 L0 L0 
L	L0 L0 L0 "L0 %L0 (L0 *L0 ,L0 .L0 0
M&:"M!M)!M&&M)c                   #     [        S5        U R                  R                  S5      nU R                  R                  S5      nUR                  5       I Sh  vN (       Ga  UR                  5       I Sh  vN (       a  [        S5        UR	                  S5      I Sh  vN   [        S5        UR                  5       I Sh  vN   [        S5        U R                  R                  S	5      I Sh  vN   U R                  R                  S
5      nUR                  5       I Sh  vN n[        SU S35        US:  a5  UR                  R                  5       I Sh  vN n[        SUSS  S35        g[        S5        g[        S5        g GN2 GN N N N Nr N=! [         a  n[        SU 35         SnAgSnAff = f7f)zTest the Q&A functionalityz
Testing Q&A functionality...z#question-inputz#ask-buttonNzQ&A interface elements foundzWhat is AI?zEntered test questionzClicked ask buttonr`   z.chat-messagezFound z chat messagesr   zLast message preview:    z...zNo chat messages foundz Q&A interface elements not foundzQ&A test failed: )r   r   rf   rg   fillclickrl   rm   lastro   r5   )r   question_input
ask_buttonchat_messagesmessage_countlast_messager=   s          r   test_ask_functionality"WebDebugger.test_ask_functionality   s    $	+23 "YY../@AN**=9J#..000:;P;P;R5R5R45 %))-888-. !&&(((*+ ii00777 !%		 1 1/ B&3&9&9&; ;}o^<= 1$)6););)F)F)H#HL2<3E2FcJK23 895 15R 9 ) 8 !< $I  	+%aS)**	+s   F?AF F
F 6F7(F F "F F-F 0F12F #F$6F FF 1F?2F =F?>F 	F?
F F F F F F F 
F<$F72F?7F<<F?c                   #     SSK nUR                  UR                  UR                  5      nUR                  S5      nUR	                  5         US:w  a  [        S5        U R                  5       I Sh  vN (       d  [        S5         U R                  (       a"  U R                  R	                  5       I Sh  vN   U R                  (       as  [        R                  " [        R                  " U R                  R                  5      [        R                  5        U R                  R                  5         [        S5        ggO[        S5        U R!                  5       I Sh  vN   U R#                  5       I Sh  vN   U R%                  5       I Sh  vN   [        S5        U R                  (       a"  U R                  R	                  5       I Sh  vN   U R                  (       as  [        R                  " [        R                  " U R                  R                  5      [        R                  5        U R                  R                  5         [        S5        gg GN GN N N N! [&         a,  n[        S	U 35        SSKnUR+                  5          SnANSnAff = f N! U R                  (       a#  U R                  R	                  5       I Sh  vN    U R                  (       as  [        R                  " [        R                  " U R                  R                  5      [        R                  5        U R                  R                  5         [        S5        f f = f7f)
zRun all testsr   Nr   z2Flask app not running on port 5000. Starting it...zFailed to start Flask appzFlask app stoppedz&Flask app already running on port 5000z
All tests completed!zTest suite failed: )r0   r1   r2   r3   r4   r   r>   r   r
   r    killpggetpgidpidsignalSIGTERMwaitr\   r   r   r5   rq   rr   )r   r0   r;   r<   r=   rq   s         r   	run_testsWebDebugger.run_tests   sb    '	+==1C1CDD__%89FJJL{JK!1133356, ||ll((***!!		"**T%7%7%;%;<fnnM""''))* "7 4 >? $$&&& 00222 --///*+ ||ll((***!!		"**T%7%7%;%;<fnnM""''))* "7 42 +% ' 3 0  	"'s+,!!	" + ||ll((***!!		"**T%7%7%;%;<fnnM""''))* "s   MA/I$ 3I4I$ 	.M7I8B	MI$  I!I$ 8I 9I$ I"I$  .MJB	MI$ MI$  I$ "I$ $
J."JJ JJ M/MKB
MM)r   r   r
   r   N)__name__
__module____qualname____firstlineno__r   r>   r\   r   r   r   __static_attributes__ r   r   r   r      s$    6p(*C"J&+P)+r   r   c                  T   #    [        5       n U R                  5       I S h  vN   g  N7fr	   )r   r   )debuggers    r   mainr      s     }H



s   (&(__main__)__doc__asyncior%   r    r'   r+   r   pathlibr   playwright.async_apir   r   r   r   runr   r   r   <module>r      sS     
 	     1j+ j+X zKK r   