o
    Wdif
                     @  sx   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	 ddl
mZmZ ddddZd ddZdddd!ddZdS )"    )annotations)Path)Optional)Page   )shot)log_steppausea  pager   target_valuestr
timeout_msintreturnNonec                 C  s   | j d||d d S )Nz(val) => {
            const sel = document.querySelector("select#user_id");
            if (!sel) return false;
            return sel.value === val;
        })argtimeout)wait_for_function)r   r   r    r   a/var/www/html/flask_server/apps/aroflo_connector_app/ui_automation/flows/timesheet_select_user.py_wait_user_applied   s
   
r   	user_namec                 C  s^   |  dj}| dj|dj}| dkrtd| d|d}|s-td| d	|S )
Nselect#user_idoption)has_textr   u   No encontré el usuario 'z ' en el selector select#user_id.valuezEl option del usuario 'z' no tiene atributo value.)locatorfirstfiltercountRuntimeErrorget_attribute)r   r   seloptvalr   r   r   _resolve_user_value_by_name   s   
r&    )user_idr   run_dirr   r(   c                C  s  |pd  }|p	d  }|s|sdS | dj}| dkr"td|p%|}t| |d|  td| |  t|d|  |rD|}nt| |}|j	|d z	| j
d	d
d W n	 tya   Y nw t| | t| |d|  td| |  t|d|  dS )uI  
    Selecciona el usuario en Timesheets (select#user_id) y espera a que se aplique.

    Prioridad:
      1) user_id (único, recomendado)
      2) user_name (fallback; puede ser ambiguo si hay duplicados)

    Nota: El <select> tiene onchange="form.submit()", por lo que select_option dispara submit y navegación/recarga.
    r'   Nr   r   z3No existe select#user_id en la vista de Timesheets.zts-user-01-before-z!Before selecting Timesheet user: )r   domcontentloadedi N  )r   zts-user-02-after-z After selecting Timesheet user: )stripr   r   r    r!   r   r   r	   r&   select_optionwait_for_load_state	Exceptionr   )r   cfgr)   r(   r   r#   labelr   r   r   r   run$   s0   

r1   N)r
   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )
r   r   r)   r   r(   r   r   r   r   r   )
__future__r   pathlibr   typingr   playwright.sync_apir   core.artifactsr   core.logr   r	   r   r&   r1   r   r   r   r   <module>   s   
