o
    63i                     @   s>   d dl mZ ddlmZ ddlmZmZ deddfdd	ZdS )
    )Page   )shot)log_steppausepagereturnNc                    sj  |  d|  d dtf fdd} rA  rA| sAz|  dj}| r6|jddd	 | d
 W n	 ty@   Y nw | jddd j|j	  j|j
 t| |d td|  t|d |  d}| rv|jjdd t| |d td|  t|d |  d}| s|  d}| std|j  | jddd t| |d td|  d S )Nz:input[name="username"], input#username, input[type="text"]z>input[name="password"], input#password, input[type="password"]r   c                      s@   zj  o j  oj  o j  W S  ty   Y dS w )NF)first
is_visible
is_enabled	Exception pwuserr   V/var/www/html/flask_server/apps/aroflo_connector_app/ui_automation_zones/auth/login.py_inputs_enabled   s   
z#fill_login.<locals>._inputs_enabledz;button:has-text('Change User'), button:has-text('Not you?')i  T)timeoutforcei  a  () => {
            const u = document.querySelector('input[name="username"],input#username,input[type="text"]');
            const p = document.querySelector('input[name="password"],input#password,input[type="password"]');
            if (!u || !p) return false;
            const uv = u.offsetParent !== null;
            const pv = p.offsetParent !== null;
            const uok = !u.disabled && !u.readOnly;
            const pok = !p.disabled && !p.readOnly;
            return uv && pv && uok && pok;
        }iȯ  )r   zstep2-login-filledzLogin filledz label:has-text("Remember Login"))r   zstep3-remember-loginzRemember Login clickedzXbutton:has-text("Office Login"), button:has-text("OFFICE LOGIN"), button.af-btn--primaryz)#loginInstance form button[type="submit"]zOffice Login button not founda  () => {
            const txt = document.body && document.body.innerText ? document.body.innerText : '';
            const postLogin = document.querySelector('#postLoginType');
            const v = postLogin ? (postLogin.value || '') : '';
            const isVerifyMFA = v === 'verifyMFA' || txt.includes('Verify Your Account');
            const isTerminateSessions = v === 'terminateSessions';
            const inIMS = location.href.includes('/ims/');
            const hasPwVisible = Array.from(document.querySelectorAll('input[type="password"]'))
              .some(e => e.offsetParent !== null);
            if (isVerifyMFA) return true;
            if (isTerminateSessions) return true;
            if (inIMS && !hasPwVisible) return true;
            return false;
        }i`  zstep4-after-login-click)locatorboolcountr	   clickwait_for_timeoutr   wait_for_functionfillusernamepasswordr   r   r   RuntimeError)r   cfgrun_dirr   
change_btnlblbtnr   r   r   
fill_login   s\   










r$   )playwright.sync_apir   core.artifactsr   core.logr   r   r$   r   r   r   r   <module>   s   