§
    ŸjÕ%  ã                   ó  — 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dS )é    N)Úcontextmanager)Úwraps)ÚPath)Úsettings)ÚLiveServerTestCaseÚoverride_settingsÚtag)Úclassproperty©Úimport_string)Úcapfirstc                   ó€   ‡ — 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                 ó^  •— t          ¦   «                              | |||¦  «        }|j        s+t          d„ |                     ¦   «         D ¦   «         ¦  «        s|S |j        r±|j        d         }||_        |j        s|j        nd}||_        | j        |_        t          j
        |j                 }|j        dd…         D ]Q}|                      | t          |¦  «        ›|›�|f||| j        |j        dœ¦  «        }	t          ||	j        |	¦  «         ŒR|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   ód   K  — | ]+\  }}|                      d ¦  «        ot          |¦  «        V — Œ,dS )ÚtestN)Ú
startswithÚcallable)Ú.0ÚnameÚvalues      úa/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/django/test/selenium.pyú	<genexpr>z/SeleniumTestCaseBase.__new__.<locals>.<genexpr>!   sN   è è € ð )
ð )
Ù<G¸DÀ%ˆD�OŠO˜FÑ#Ô#Ð7­°©¬ð)
ð )
ð )
ð )
ð )
ð )
ó    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__   sg  ø€ õ
 ‘W”W—_’_ S¨$°°uÑ=Ô=ˆ
àÔð 	¥Sð )
ð )
ØKPÏ;Ê;É=Ì=ð)
ñ )
ô )
ñ &
ô &
ð 	ð ÐØÔ ð 	ð
 'Ô/°Ô2ˆMØ!.ˆJÔà*4Ô*AÐP�:”?�?ÀyˆDØ"ˆJŒOØ'*Ô'8ˆJÔ$õ ”[ Ô!6Ô7ˆFØ%Ô.¨q¨r¨rÔ2ð Qð Q�Ø%(§[¢[ØÝ& wÑ/Ô/Ð/°°Ð6Ø�Mà#*Ø $Ø),Ô):Ø&0Ô&;ð	ð ñ	
&ô 
&Ð"õ ˜Ð 2Ô ;Ð=OÑPÔPÐPÐPØÐà6�xŒ}Ð5Ñ6Ô6°zÑBÔBÐBr   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ÔSÐSr   c                 ó&   — t          d|z  ¦  «        S )Nz%selenium.webdriver.%s.options.Optionsr   r5   s     r   Úimport_optionsz#SeleniumTestCaseBase.import_optionsH   s   € åÐDÀwÑNÑOÔOÐOr   c                 óR   — ddl m} t          ||                     ¦   «         ¦  «        S )Nr   )ÚDesiredCapabilities)Ú.selenium.webdriver.common.desired_capabilitiesr:   ÚgetattrÚupper)r,   r   r:   s      r   Úget_capabilityz#SeleniumTestCaseBase.get_capabilityL   s-   € àVÐVÐVÐVÐVÐVåÐ*¨G¯MªM©O¬OÑ<Ô<Ð<r   c                 óê   —  |                       | j        ¦  «        ¦   «         }| j        rI| j        xxdk    rn	xdk    rn n  |                     d¦  «         ndk    r|                     d¦  «         |S )NÚchromeÚedgez--headless=newÚfirefoxz	-headless)r8   r   ÚheadlessÚadd_argument)ÚselfÚoptionss     r   Úcreate_optionsz#SeleniumTestCaseBase.create_optionsR   s…   € Ø3�$×%Ò% d¤lÑ3Ô3Ñ5Ô5ˆØŒ=ð 	6Ø”,Ø&�X�X’X�X�X  ¢      Ø×(Ò(Ð)9Ñ:Ô:Ð:Ð:Ø’Y�YØ×(Ò(¨Ñ5Ô5Ð5Øˆr   c                 óT  — |                       ¦   «         }| j        rjddlm} |                      | j        ¦  «                             ¦   «         D ]\  }}|                     ||¦  «         Œ|                     | j        |¬¦  «        S  |  	                    | 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¹   € Ø×%Ò%Ñ'Ô'ˆØÔð 	YØ*Ð*Ð*Ð*Ð*Ð*à"×1Ò1°$´,Ñ?Ô?×EÒEÑGÔGð 3ð 3‘
��UØ×&Ò& s¨EÑ2Ô2Ð2Ð2à×#Ò#°TÔ5FÐPWÐ#ÑXÔXÐXØ2ˆt×$Ò$ T¤\Ñ2Ô2¸7ÐCÑCÔCÐCr   )r)   r   Ú__qualname__r$   r%   r   r   rC   r!   Úclassmethodr6   r8   r>   rG   rO   Ú__classcell__©r3   s   @r   r   r      sÓ   ø€ € € € € à€Hà€Là€Mà€Gà€Hð(Cð (Cð (Cð (Cð (CðT ðTð Tñ „[ðTð ðPð Pñ „[ðPð ð=ð =ñ „[ð=ð
ð ð ð	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dr   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚChangeWindowSizec                 ó&   — || _         ||f| _        d S ©N)rK   Únew_size)rE   ÚwidthÚheightrK   s       r   Ú__init__zChangeWindowSize.__init__i   s   € Ø ˆŒØ ˜ˆŒˆˆr   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   s0   € Øœ×5Ò5Ñ7Ô7ˆŒØ%ˆŒÔ% t¤}Ð5Ð5Øˆr   c                 óh   — | j                              | j        d         | j        d         ¦  «         d S )NrY   rZ   )rK   r_   r^   )rE   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú__exit__zChangeWindowSize.__exit__r   s.   € ØŒ×%Ò% d¤m°GÔ&<¸d¼mÈHÔ>UÑVÔVÐVÐVÐVr   N)r)   r   rP   r[   ra   rf   © r   r   rU   rU   h   sF   € € € € € ð(ð (ð (ðð ð ð
Wð Wð Wð Wð Wr   rU   rK   c                   óD  ‡ — 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          ¦   «         j        di |¤Ž | j        sd S t          | j                             ¦   «         ¦  «        D ]–\  }}t          |d¦  «        sŒt          | |¦  «         t          |d¦  «        D ]_}t          |¦  «        ||dœd„¦   «         }|› d|› �|_
        |j        › d|› �|_        ||_        ||_        t          | |j
        |¦  «         Œ`Œ—d S )NÚ_screenshot_cases)Ú_funcÚ_casec                ó~   —  t          | |¦  «        ¦   «         5   || g|¢R i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S rW   )r<   )rE   rm   rn   ÚargsÚkwargss        r   r   z0SeleniumTestCase.__init_subclass__.<locals>.testŠ   s›   € à-�  uÑ-Ô-Ñ/Ô/ð <ð <Ø$˜u TÐ;¨DÐ;Ð;Ð;°FÐ;Ð;ð<ð <ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <s   ™2²6¹6Ú_rg   )r    Ú__init_subclass__ÚscreenshotsÚlistÚ__dict__r#   ÚhasattrÚdelattrr<   r   r)   rP   Ú_screenshot_nameÚ_screenshot_caser(   )r,   rq   r   ÚfuncÚscreenshot_caser   r3   s         €r   rs   z"SeleniumTestCase.__init_subclass__|   s,  ø€ à!�‰ŒÔ!Ð+Ð+ FÐ+Ð+Ð+ØŒð 	ØˆFå˜sœ|×1Ò1Ñ3Ô3Ñ4Ô4ð 	2ð 	2‰JˆD�$Ý˜4Ð!4Ñ5Ô5ð Øå�C˜ÑÔÐå#*¨4Ð1DÑ#EÔ#Eð 2ð 2�å�t‘”Ø,0¸ð <ð <ð <ð <ñ ”ð<ð $(Ð ;Ð ;¨/Ð ;Ð ;�”Ø'+Ô'8Ð$LÐ$L¸?Ð$LÐ$L�Ô!Ø(,�Ô%Ø(7�Ô%Ý˜˜Tœ]¨DÑ1Ô1Ð1Ð1ð2ð	2ð 	2r   c                 ó>   — d| j         p| j        ›d| j        j        ›�S )Nzhttp://ú:)r   r   Úserver_threadÚport©r,   s    r   Úlive_server_urlz SeleniumTestCase.live_server_url•   s(   € € à!$Ô!2Ð!>°c´hÐ!>Ð!>ÀÔ@QÔ@VÐ@VÐWÐWr   c                 ó   — | j         p| j        S rW   )r   r   r�   s    r   Úallowed_hostzSeleniumTestCase.allowed_host™   s   € àÔ Ð, C¤HÐ,r   c                 óì   •— |                       ¦   «         | _        | j                             | j        ¦  «         t	          ¦   «                              ¦   «          |                      | j        ¦  «         d S rW   )rO   rK   Úimplicitly_waitÚimplicit_waitr    Ú
setUpClassÚaddClassCleanupÚ_quit_selenium)r,   r3   s    €r   rˆ   zSeleniumTestCase.setUpClass�   sb   ø€ à×+Ò+Ñ-Ô-ˆŒØŒ×$Ò$ SÔ%6Ñ7Ô7Ð7Ý‰Œ×ÒÑÔÐØ×Ò˜CÔ.Ñ/Ô/Ð/Ð/Ð/r   c              #   óp   K  — t          dd| j        ¦  «        5  d V — d d d ¦  «         d S # 1 swxY w Y   d S )Ni   iÐ  ©rU   rK   r`   s    r   Údesktop_sizezSeleniumTestCase.desktop_size¤   ó‡   è è € å˜d C¨¬Ñ7Ô7ð 	ð 	ØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   ™+«/²/c              #   óp   K  — t          dd| j        ¦  «        5  d V — d d d ¦  «         d S # 1 swxY w Y   d S )Ni   i   rŒ   r`   s    r   Úsmall_screen_sizez"SeleniumTestCase.small_screen_size©   rŽ   r�   c              #   óp   K  — t          dd| j        ¦  «        5  d V — d d d ¦  «         d S # 1 swxY w Y   d S )Nih  i   rŒ   r`   s    r   Úmobile_sizezSeleniumTestCase.mobile_size®   s‡   è è € å˜c 3¨¬Ñ6Ô6ð 	ð 	ØˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	r�   c              #   óÜ   K  — |                       ¦   «         5  t          t          j        d         ¬¦  «        5  d V — d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Néÿÿÿÿ)ÚLANGUAGE_CODE)r�   r   r   ÚLANGUAGES_BIDIr`   s    r   ÚrtlzSeleniumTestCase.rtl³   só   è è € à×ÒÑ Ô ð 	ð 	Ý"µÔ1HÈÔ1LÐMÑMÔMð ð Ø���ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s3   —!A!¸A	½A!Á	A	ÁA!ÁA	ÁA!Á!A%Á(A%c              #   óV  K  — | j                              | j        ¦  «         | j                              d¦  «         |                      ¦   «         5  	 d V — | j                              d¦  «         n# | j                              d¦  «         w xY w	 d d d ¦  «         d S # 1 swxY w Y   d S )Nz&localStorage.setItem('theme', 'dark');z!localStorage.removeItem('theme');)rK   Úgetr‚   Úexecute_scriptr�   r`   s    r   ÚdarkzSeleniumTestCase.dark¹   s  è è € ð 	Œ×Ò˜$Ô.Ñ/Ô/Ð/ØŒ×$Ò$Ð%MÑNÔNÐNØ×ÒÑ Ô ð 	Rð 	RðRØ���à”×,Ò,Ð-PÑQÔQÐQÐQø�”×,Ò,Ð-PÑQÔQÐQÐQøøøÐQð		Rð 	Rð 	Rñ 	Rô 	Rð 	Rð 	Rð 	Rð 	Rð 	Rð 	Rð 	Røøøð 	Rð 	Rð 	Rð 	Rð 	Rð 	Rs*   ÁBÁA1ÁBÁ1BÂBÂB"Â%B")ÚmediaÚfeaturesc                ó    — | j         dvr|                      d¦  «         i }|�||d<   |�||d<   | j                             dd|dœ¬¦  «         d S )	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Ä   s‹   € ØŒ<Ð1Ð1Ð1Ø�MŠMðTñô ð ð
 ˆØÐØ#ˆF�7‰OØÐØ!)ˆF�:Ñð 	Œ×ÒØ.Ø7À6ÐJÐJð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c              #   ó  K  — |                       dddœg¬¦  «         |                      ¦   «         5  	 d V — |                       dddœg¬¦  «         n# |                       dddœg¬¦  «         w xY w	 d d d ¦  «         d S # 1 swxY w Y   d S )Nzforced-colorsÚactive)r   r   )rž   Únone)r¦   r�   r`   s    r   Úhigh_contrastzSeleniumTestCase.high_contrastØ   s  è è € à×Ò°?ÈXÐ*VÐ*VÐ)WÐÑXÔXÐXØ×ÒÑ Ô ð 	ð 	ðØ���à×'Ò'Ø'6ÀÐHÐHÐIð (ñ ô ð ð ø�×'Ò'Ø'6ÀÐHÐHÐIð (ñ ô ð ð øøøð ð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s'   ±A?³A·A?ÁA.Á.A?Á?BÂBc                 ó
  — | j         sd S t          | | j        ¦  «        }|j        › d|› d|j        › d�}t          j        ¦   «         dz  |z  }|j                             dd¬¦  «         | j	         
                    |¦  «         d S )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”   € ØÔð 	ØˆFÝ�t˜TÔ1Ñ2Ô2ˆØÔ+ÐRÐR¨tÐRÐR°tÔ7LÐRÐRÐRˆÝŒx‰zŒz˜MÑ)¨HÑ4ˆØŒ×Ò 4°ÐÑ6Ô6Ð6ØŒ×%Ò% dÑ+Ô+Ð+Ð+Ð+r   c                 ó\   — t          | d¦  «        r| j                             ¦   «          d S d S )NrK   )rw   rK   Úquitr�   s    r   rŠ   zSeleniumTestCase._quit_seleniumì   s:   € õ
 �3˜
Ñ#Ô#ð 	 ØŒL×ÒÑÔÐÐÐð	 ð 	 r   c              #   óÎ   K  — | j                              d¦  «         	 dV — | j                              | j        ¦  «         dS # | j                              | j        ¦  «         w xY w)z"Disable the default implicit wait.r   N)rK   r†   r‡   r`   s    r   Údisable_implicit_waitz&SeleniumTestCase.disable_implicit_waitô   sj   è è € ð 	Œ×%Ò% aÑ(Ô(Ð(ð	>ØˆEˆEˆEàŒM×)Ò)¨$Ô*<Ñ=Ô=Ð=Ð=Ð=øˆDŒM×)Ò)¨$Ô*<Ñ=Ô=Ð=Ð=øøøs   žA Á!A$)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ð 2ð 2ñ „[ð2ð0 ðXð Xñ „]ðXð ð-ð -ñ „]ð-ð ð0ð 0ð 0ð 0ñ „[ð0ð ðð ñ „^ðð ðð ñ „^ðð ðð ñ „^ðð ðð ñ „^ðð
 ðRð Rñ „^ðRð +/¸ð 
ð 
ð 
ð 
ð 
ð( ðð ñ „^ðð,ð ,ð ,ð ð ð  ñ „[ð ð ð>ð >ñ „^ð>ð >ð >ð >ð >r   ri   )Ú	metaclassc                 óf   ‡ — t          ‰ t          ¦  «        r‰                      d¦  «        Š ˆ fd„}|S )Nú,c                 ó–   •— ‰| _         t          | ddh                     t          | dt	          ¦   «         ¦  «        ¦  «        ¦  «         | S )NÚtagsÚ
screenshot)rl   r(   Úunionr<   Úset)r{   Úmethod_namess    €r   Úwrapperz!screenshot_cases.<locals>.wrapper  sB   ø€ Ø!-ˆÔÝ��f˜|˜n×2Ò2µ7¸4ÀÍÉÌÑ3OÔ3OÑPÔPÑQÔQÐQØˆr   )Ú
isinstanceÚstrÚsplit)rÂ   rÃ   s   ` r   Úscreenshot_casesrÇ   þ   sH   ø€ Ý�,¥Ñ$Ô$ð /Ø#×)Ò)¨#Ñ.Ô.ˆðð ð ð ð ð
 €Nr   )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   r   r   ú<module>rÑ      s“  ðØ 
€
€
€
Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø &Ð &Ð &Ð &Ð &Ð &ðWDð WDð WDð WDð WD˜4˜4Ð 2Ñ3Ô3ñ WDô WDð WDðtWð Wð Wð Wð Wñ Wô Wð Wð €€Z�„ðD>ð D>ð D>ð D>ð D>Ð)Ð5Ið D>ñ D>ô D>ñ „ðD>ðN	ð 	ð 	ð 	ð 	r   