Ë
    ¹ûàgÕ%  ã                   óè   — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dlmZ d dlmZ d d	lmZ  G d
„ d ee«      «      Z G d„ d«      Z ed«       G d„ dee¬«      «       Zd„ Zy)é    N)Úcontextmanager)Úwraps)ÚPath)Úsettings)ÚLiveServerTestCaseÚoverride_settingsÚtag)Úclassproperty©Úimport_string)Úcapfirstc                   ón   ‡ — e Zd Zg ZdZdZdZdZˆ fd„Ze	d„ «       Z
e	d„ «       Ze	d„ «       Zd„ Zd„ Zˆ xZS )	ÚSeleniumTestCaseBaseNFc                 ól  •— t         ‰
| �  | |||«      }|j                  s t        d„ |j	                  «       D «       «      s|S |j
                  rÍ|j
                  d   }||_        |j                  s|j                  nd}||_        | j                  |_        t        j                  |j                     }|j
                  dd D ]T  }| j                  | t        |«      ›|›�|f||| j                  |j                  dœ«      }	t        ||	j                  |	«       ŒV |S  t        j                   d«      |«      S )z¤
        Dynamically create new classes and add them to the test module when
        multiple browsers specs are provided (e.g. --selenium=firefox,chrome).
        c              3   ó^   K  — | ]%  \  }}|j                  d «      xr t        |«      –— Œ' y­w)ÚtestN)Ú
startswithÚcallable)Ú.0ÚnameÚvalues      úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/test/selenium.pyú	<genexpr>z/SeleniumTestCaseBase.__new__.<locals>.<genexpr>!   s.   è ø€ ò )
Ù<G¸DÀ%ˆD�O‰O˜FÓ#Ò7¬°«Ó7ñ)
ùs   ‚+-r   z0.0.0.0é   N)ÚbrowserÚhostÚexternal_hostÚ
__module__zNo browsers specified.)ÚsuperÚ__new__r   ÚanyÚitemsÚbrowsersÚselenium_hubr   r   ÚsysÚmodulesr   r   ÚsetattrÚ__name__ÚunittestÚskip)Úclsr   ÚbasesÚattrsÚ
test_classÚfirst_browserr   Úmoduler   Úbrowser_test_classÚ	__class__s             €r   r    zSeleniumTestCaseBase.__new__   s9  ø€ ô
 ‘W‘_ S¨$°°uÓ=ˆ
à×Ò¤Sñ )
ØKPÏ;É;Ë=ô)
ô &
ð ÐØ× Ò ð
 '×/Ñ/°Ñ2ˆMØ!.ˆJÔà*4×*AÒ*A�:—?’?ÀyˆDØ"ˆJŒOØ'*×'8Ñ'8ˆJÔ$ô —[‘[ ×!6Ñ!6Ñ7ˆFØ%×.Ñ.¨q¨rÐ2ò Q�Ø%(§[¡[ØÜ& wÔ/±Ð6Ø�Mà#*Ø $Ø),×):Ñ):Ø&0×&;Ñ&;ñ	ó	
&Ð"ô ˜Ð 2× ;Ñ ;Ð=OÕPðQð Ðà6Œx�}‰}Ð5Ó6°zÓBÐBó    c                 ó   — t        d|z  «      S )Nz)selenium.webdriver.%s.webdriver.WebDriverr   ©r+   r   s     r   Úimport_webdriverz%SeleniumTestCaseBase.import_webdriverD   s   € äÐHÈ7ÑRÓSÐSr3   c                 ó   — t        d|z  «      S )Nz%selenium.webdriver.%s.options.Optionsr   r5   s     r   Úimport_optionsz#SeleniumTestCaseBase.import_optionsH   s   € äÐDÀwÑNÓOÐOr3   c                 óB   — ddl m} t        ||j                  «       «      S )Nr   )ÚDesiredCapabilities)Ú.selenium.webdriver.common.desired_capabilitiesr:   ÚgetattrÚupper)r+   r   r:   s      r   Úget_capabilityz#SeleniumTestCaseBase.get_capabilityL   s   € åVäÐ*¨G¯M©M«OÓ<Ð<r3   c                 óê   —  | j                  | j                  «      «       }| j                  rF| j                  xxdk(  rnxdk(  rn n  |j                  d«       |S dk(  r|j                  d«       |S |S )NÚchromeÚedgez--headless=newÚfirefoxz	-headless)r8   r   ÚheadlessÚadd_argument)ÚselfÚoptionss     r   Úcreate_optionsz#SeleniumTestCaseBase.create_optionsR   se   € Ø3�$×%Ñ% d§l¡lÓ3Ó5ˆØ�=Š=Ø—,‘,Ø&•X¥Ó&Ø×(Ñ(Ð)9Ô:ð ˆó Ø×(Ñ(¨Ô5Øˆˆwˆr3   c                 óJ  — | j                  «       }| j                  rfddlm} | j	                  | j
                  «      j                  «       D ]  \  }}|j                  ||«       Œ |j                  | j                  |¬«      S  | j                  | j
                  «      |¬«      S )Nr   )Ú	webdriver)Úcommand_executorrF   )rF   )
rG   r$   ÚseleniumrI   r>   r   r"   Úset_capabilityÚRemoter6   )rE   rF   rI   Úkeyr   s        r   Úcreate_webdriverz%SeleniumTestCaseBase.create_webdriver\   s’   € Ø×%Ñ%Ó'ˆØ×ÒÝ*à"×1Ñ1°$·,±,Ó?×EÑEÓGò 3‘
��UØ×&Ñ& s¨EÕ2ð3ð ×#Ñ#°T×5FÑ5FÐPWÐ#ÓXÐXØ2ˆt×$Ñ$ T§\¡\Ó2¸7ÔCÐCr3   )r(   r   Ú__qualname__r#   r$   r   r   rC   r    Úclassmethodr6   r8   r>   rG   rO   Ú__classcell__©r2   s   @r   r   r      sn   ø„ à€Hà€Là€Mà€Gà€Hô(CðT ñTó ðTð ñPó ðPð ñ=ó ð=ò
ö	Dr3   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚChangeWindowSizec                 ó$   — || _         ||f| _        y ©N)rK   Únew_size)rE   ÚwidthÚheightrK   s       r   Ú__init__zChangeWindowSize.__init__i   s   € Ø ˆŒØ ˜ˆ�r3   c                 óŠ   — | j                   j                  «       | _         | j                   j                  | j                  Ž  | S rW   )rK   Úget_window_sizeÚold_sizeÚset_window_sizerX   ©rE   s    r   Ú	__enter__zChangeWindowSize.__enter__m   s3   € ØŸ™×5Ñ5Ó7ˆŒØ%ˆ�‰×%Ñ% t§}¡}Ñ5Øˆr3   c                 óp   — | j                   j                  | j                  d   | j                  d   «       y )NrY   rZ   )rK   r_   r^   )rE   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú__exit__zChangeWindowSize.__exit__r   s(   € Ø�‰×%Ñ% d§m¡m°GÑ&<¸d¿m¹mÈHÑ>UÕVr3   N)r(   r   rP   r[   ra   rf   © r3   r   rU   rU   h   s   „ ò(òó
Wr3   rU   rK   c                   óü   ‡ — e Zd ZdZdZdZeˆ fd„«       Zed„ «       Z	ed„ «       Z
eˆ fd„«       Zed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zdddœd„Zed„ «       Zd„ Zed„ «       Zed„ «       Zˆ xZS )ÚSeleniumTestCaseé
   NFc                 ó   •— t        ‰| �  di |¤Ž | j                  sy t        | j                  j                  «       «      D ]‹  \  }}t        |d«      sŒt        | |«       t        |d«      D ]^  }t        |«      ||dœd„«       }|› d|› �|_
        |j                  › d|› �|_        ||_        ||_        t        | |j                  |«       Œ` Œ� y )NÚ_screenshot_cases)Ú_funcÚ_casec                óh   —  t        | |«      «       5   || g|¢­i |¤Žcd d d «       S # 1 sw Y   y xY wrW   )r<   )rE   rm   rn   ÚargsÚkwargss        r   r   z0SeleniumTestCase.__init_subclass__.<locals>.testŠ   s8   € à-œ  uÓ-Ó/ñ <Ù$ TÐ;¨DÒ;°FÑ;÷<÷ <ò <ús   ’(¨1Ú_rg   )r   Ú__init_subclass__ÚscreenshotsÚlistÚ__dict__r"   ÚhasattrÚdelattrr<   r   r(   rP   Ú_screenshot_nameÚ_screenshot_caser'   )r+   rq   r   ÚfuncÚscreenshot_caser   r2   s         €r   rs   z"SeleniumTestCase.__init_subclass__|   sÜ   ø€ ä‰Ñ!Ñ+ FÒ+Ø�ŠØä˜sŸ|™|×1Ñ1Ó3Ó4ò 	2‰JˆD�$Ü˜4Ð!4Ô5Øä�C˜Ôä#*¨4Ð1DÓ#Eò 2�ä�t“Ø,0¸ó <ó ð<ð $( &¨¨/Ð):Ð ;�”Ø'+×'8Ñ'8Ð&9¸¸?Ð:KÐ$L�Ô!Ø(,�Ô%Ø(7�Ô%Ü˜˜TŸ]™]¨DÕ1ñ2ñ	2r3   c                 ój   — d| j                   xs | j                  ›d| j                  j                  ›�S )Nzhttp://ú:)r   r   Úserver_threadÚport©r+   s    r   Úlive_server_urlz SeleniumTestCase.live_server_url•   s+   � à!$×!2Ñ!2Ò!>°c·h±hÑ!>À×@QÑ@Q×@VÒ@VÐWÐWr3   c                 ó6   — | j                   xs | j                  S rW   )r   r   r�   s    r   Úallowed_hostzSeleniumTestCase.allowed_host™   s   € à× Ñ Ò, C§H¡HÐ,r3   c                 óÌ   •— | j                  «       | _        | j                  j                  | j                  «       t        ‰| �  «        | j                  | j                  «       y rW   )rO   rK   Úimplicitly_waitÚimplicit_waitr   Ú
setUpClassÚaddClassCleanupÚ_quit_selenium)r+   r2   s    €r   rˆ   zSeleniumTestCase.setUpClass�   sJ   ø€ à×+Ñ+Ó-ˆŒØ�‰×$Ñ$ S×%6Ñ%6Ô7Ü‰ÑÔØ×Ñ˜C×.Ñ.Õ/r3   c              #   ól   K  — t        dd| j                  «      5  d –— d d d «       y # 1 sw Y   y xY w­w)Ni   iÐ  ©rU   rK   r`   s    r   Údesktop_sizezSeleniumTestCase.desktop_size¤   ó-   è ø€ ä˜d C¨¯©Ó7ñ 	Û÷	÷ 	ñ 	üó   ‚4š(Ÿ	4¨1­4c              #   ól   K  — t        dd| j                  «      5  d –— d d d «       y # 1 sw Y   y xY w­w)Ni   i   rŒ   r`   s    r   Úsmall_screen_sizez"SeleniumTestCase.small_screen_size©   rŽ   r�   c              #   ól   K  — t        dd| j                  «      5  d –— d d d «       y # 1 sw Y   y xY w­w)Nih  i   rŒ   r`   s    r   Úmobile_sizezSeleniumTestCase.mobile_size®   s-   è ø€ ä˜c 3¨¯©Ó6ñ 	Û÷	÷ 	ñ 	ür�   c              #   óÂ   K  — | j                  «       5  t        t        j                  d   ¬«      5  d –— d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Néÿÿÿÿ)ÚLANGUAGE_CODE)r�   r   r   ÚLANGUAGES_BIDIr`   s    r   ÚrtlzSeleniumTestCase.rtl³   sV   è ø€ à×ÑÓ ñ 	Ü"´×1HÑ1HÈÑ1LÔMñ Û÷÷	ð 	÷ð ú÷	ð 	üs1   ‚A“A±A¶A¾	AÁA	ÁAÁAÁAc              #   óX  K  — | j                   j                  | j                  «       | j                   j                  d«       | j	                  «       5  	 d –— | j                   j                  d«       	 d d d «       y # | j                   j                  d«       w xY w# 1 sw Y   y xY w­w)Nz&localStorage.setItem('theme', 'dark');z!localStorage.removeItem('theme');)rK   Úgetr‚   Úexecute_scriptr�   r`   s    r   ÚdarkzSeleniumTestCase.dark¹   s�   è ø€ ð 	�‰×Ñ˜$×.Ñ.Ô/Ø�‰×$Ñ$Ð%MÔNØ×ÑÓ ñ 	RðRÛà—‘×,Ñ,Ð-PÕQ÷		Rð 	Røð —‘×,Ñ,Ð-PÕQú÷		Rð 	Rüs6   ‚AB*ÁBÁA>ÁBÁ5	B*Á>BÂBÂB'Â#B*)ÚmediaÚfeaturesc                ó¢   — | j                   dvr| j                  d«       i }|�||d<   |�||d<   | j                  j                  dd|dœ¬«       y )	N>   rA   r@   zÃEmulation.setEmulatedMedia is only supported on Chromium and Chrome-based browsers. See https://chromedevtools.github.io/devtools-protocol/1-3/Emulation/#method-setEmulatedMedia for more details.r�   rž   ÚexecuteCdpCommandzEmulation.setEmulatedMedia)ÚcmdÚparams)Údriver_commandr¢   )r   ÚskipTestrK   Úexecute)rE   r�   rž   r¢   s       r   Úset_emulated_mediaz#SeleniumTestCase.set_emulated_mediaÄ   sk   € Ø�<‰<Ð1Ñ1Ø�M‰MðTôð
 ˆØÐØ#ˆF�7‰OØÐØ!)ˆF�:Ñð 	�‰×ÑØ.Ø7À6ÑJð 	õ 	
r3   c              #   óð   K  — | j                  dddœg¬«       | j                  «       5  	 d –— | j                  dddœg¬«       	 d d d «       y # | j                  dddœg¬«       w xY w# 1 sw Y   y xY w­w)Nzforced-colorsÚactive)r   r   )rž   Únone)r¦   r�   r`   s    r   Úhigh_contrastzSeleniumTestCase.high_contrastØ   sŒ   è ø€ à×Ñ°?ÈXÑ*VÐ)WÐÔXØ×ÑÓ ñ 	ðÛà×'Ñ'Ø'6ÀÑHÐIð (õ ÷		ð 	øð ×'Ñ'Ø'6ÀÑHÐIð (õ ú÷		ð 	üs2   ‚'A6©A*«A¯A*Á	A6ÁA'Á'A*Á*A3Á/A6c                 ó,  — | j                   sy t        | | j                  «      }|j                  › d|› d|j                  › d�}t        j                  «       dz  |z  }|j                  j                  dd¬«       | j                  j                  |«       y )Nz--z.pngrt   T)Úexist_okÚparents)rt   r<   Ú_testMethodNamery   rz   r   ÚcwdÚparentÚmkdirrK   Úsave_screenshot)rE   r   r   ÚfilenameÚpaths        r   Útake_screenshotz SeleniumTestCase.take_screenshotã   s„   € Ø×ÒØÜ�t˜T×1Ñ1Ó2ˆØ×+Ñ+Ð,¨B¨t¨f°B°t×7LÑ7LÐ6MÈTÐRˆÜ�x‰x‹z˜MÑ)¨HÑ4ˆØ�‰×Ñ 4°ÐÔ6Ø�‰×%Ñ% dÕ+r3   c                 óR   — t        | d«      r| j                  j                  «        y y )NrK   )rw   rK   Úquitr�   s    r   rŠ   zSeleniumTestCase._quit_seleniumì   s#   € ô
 �3˜
Ô#Ø�L‰L×ÑÕð $r3   c              #   óê   K  — | j                   j                  d«       	 d–— | j                   j                  | j                  «       y# | j                   j                  | j                  «       w xY w­w)z"Disable the default implicit wait.r   N)rK   r†   r‡   r`   s    r   Údisable_implicit_waitz&SeleniumTestCase.disable_implicit_waitô   sR   è ø€ ð 	�‰×%Ñ% aÔ(ð	>Ûà�M‰M×)Ñ)¨$×*<Ñ*<Õ=øˆD�M‰M×)Ñ)¨$×*<Ñ*<Õ=üs   ‚A3ŸA	 £&A3Á	'A0Á0A3)r(   r   rP   r‡   r   rt   rQ   rs   r
   r‚   r„   rˆ   r   r�   r‘   r“   r˜   rœ   r¦   rª   rµ   rŠ   r¹   rR   rS   s   @r   ri   ri   v   s  ø„ à€MØ€MØ€Kàó2ó ð2ð0 ñXó ðXð ñ-ó ð-ð ó0ó ð0ð ñó ðð ñó ðð ñó ðð ñó ðð
 ñRó ðRð +/¸ô 
ð( ñó ðò,ð ñ ó ð ð ñ>ó ô>r3   ri   )Ú	metaclassc                 óT   ‡ — t        ‰ t        «      r‰ j                  d«      Š ˆ fd„}|S )Nú,c                 óv   •— ‰| _         t        | ddhj                  t        | dt	        «       «      «      «       | S )NÚtagsÚ
screenshot)rl   r'   Úunionr<   Úset)r{   Úmethod_namess    €r   Úwrapperz!screenshot_cases.<locals>.wrapper  s4   ø€ Ø!-ˆÔÜ��f˜|˜n×2Ñ2´7¸4ÀÌËÓ3OÓPÔQØˆr3   )Ú
isinstanceÚstrÚsplit)rÂ   rÃ   s   ` r   Úscreenshot_casesrÇ   þ   s)   ø€ Ü�,¤Ô$Ø#×)Ñ)¨#Ó.ˆôð
 €Nr3   )r%   r)   Ú
contextlibr   Ú	functoolsr   Úpathlibr   Údjango.confr   Údjango.testr   r   r	   Údjango.utils.functionalr
   Údjango.utils.module_loadingr   Údjango.utils.textr   Útyper   rU   ri   rÇ   rg   r3   r   ú<module>rÑ      su   ðÛ 
Û Ý %Ý Ý å  ß BÑ BÝ 1Ý 5Ý &ôWD™4Ð 2Ó3ô WD÷tWñ Wñ €ZƒôD>Ð)Ð5Iô D>ó ðD>óN	r3   