import logging as log
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options
import time

#@pytest.mark.skip("je veux pas le faire")
@pytest.mark.skip("je veux pas le faire")
def element_visible_actif(element):
    assert element.is_displayed()
    assert element.is_enabled()

#def writeInInput(inputElement, text):
   # assert inputElement.is_displayed(), "Le champ texte n'est pas affiché"
    #assert inputElement.is_enabled(), "Le champ texte n'est pas activé"
    #inputElement.clear()
    #inputElement.send_keys(text)

@pytest.mark.skip("je veux pas le faire")
def test_loginOK():
   #serveur
    log.info("Test du Login avec succès")
    options = webdriver.FirefoxOptions()
    options.add_argument('--headless')

    driver = webdriver.Firefox(options=options)
    driver.get("https://www.saucedemo.com/")
    assert driver.current_url == "https://www.saucedemo.com/", "Nous ne somme pas sur la bonne page"

    username = driver.find_element(By.ID,"user-name")
    password = driver.find_element(By.ID,"password")
    login = driver.find_element(By.ID, "login-button")

    writeInInput(inputElement=username, text="standard_user")
    writeInInput(password, text="secret_sauce")
    login.click()

    assert driver.current_url == "https://www.saucedemo.com/inventory.html", "Nous ne somme pas sur la bonne page"

    driver.quit()

def test_D():
    pass 

#@pytest.mark.skip("je veux pas le faire")
def test_login_KO_saucedemo():
    #driver = webdriver.Chrome()
    log.info("Test du Login avec succès")
    options = webdriver.FirefoxOptions()
    options.add_argument('--headless')

    driver = webdriver.Firefox(options=options)

    url_sauce_demo = "https://www.saucedemo.com/"
    titre_page = "Swag Labs"
    driver.get(url_sauce_demo)
    log.info("Le titre de la page : "+driver.title)
    log.info("L'URL de la page : "+driver.current_url)
    assert driver.current_url == url_sauce_demo, "L'url de la page ouverte ("+driver.current_url+") n'est pas égale a "+url_sauce_demo
    assert driver.title == titre_page, "Le titre de la page n'est pas egale a "+titre_page


    champ_username = driver.find_element(By.XPATH, '//*[@id="user-name"]')
    champ_username.send_keys("Pas Bon")
    assert champ_username.get_attribute("value") != "standard_user", "MON MESSAGE D'ERREUR PERSONEL"


    log.info("TEXTE DU CHAMP USERNAME: "+champ_username.text)
    log.info("ATTRIBUT PLACEHOLDER DU CHAMP USERNAME: "+champ_username.get_attribute("placeholder"))
   
    champ_mdp = driver.find_element(By.CSS_SELECTOR, '#password')
    champ_mdp.send_keys("secret_sauce")


    #Appuyer sur la touche entree dans le champ mdp
    #champ_mdp.send_keys(Keys.RETURN)


    button_login = driver.find_element(By.ID, "login-button")
    button_login.click()


    assert driver.current_url == url_sauce_demo, "L'url de la page ouverte ("+driver.current_url+") n'est pas égale a "+url_sauce_demo
    message_erreur = driver.find_element(By.CSS_SELECTOR, "[data-test=error]")
    assert message_erreur.is_displayed(), "Le message d'erreur n'est pas afficher a l'ecrant"
    assert message_erreur.text ==  "Epic sadface: Username and password do not match any user in this service"


    time.sleep(3)
    driver.quit()

@pytest.mark.skip("JE VEUX PAS LE FAIRE")
def test_login_OK_logout_saucedemo():

    #driver = webdriver.Chrome()
    log.info("Test du Login avec succès")
    options = webdriver.FirefoxOptions()
    options.add_argument('--headless')

    driver = webdriver.Firefox(options=options)
    
    driver.implicitly_wait(15)
    #wait = WebDriverWait(driver, 15)
    url_sauce_demo="https://www.saucedemo.com/"
    titre_page="Swag Labs"
    driver.get(url_sauce_demo)
    log.info("Le titre de la page" + driver.title)
    log.info("L'URL de la page " + driver.current_url)
    assert driver.current_url==url_sauce_demo, "L'url de la page ouverte ("+ driver.current_url+") n'est pas égal à "+url_sauce_demo
    assert driver.title==titre_page, "Le titre de la page ("+driver.title+") n'est pas égal à " + titre_page
    champ_username = driver.find_element(By.XPATH,'//*[@id="user-name"]')
    log.info(champ_username)
    champ_username.send_keys("standard_user")
    log.info("texte du champ username"+champ_username.text)
    log.info("L'attribut du champ username est "+ champ_username.get_attribute("placeholder") )
    assert champ_username.get_attribute("value")=="standard_user"
    champ_mdp = driver.find_element(By.CSS_SELECTOR,'#password')
    champ_mdp.send_keys("secret_sauce")
    button_login = driver.find_element(By.ID,"login-button")
    element_visible_actif(button_login)
    button_login.click()
    assert driver.current_url=="https://www.saucedemo.com/inventory.html", "l'url de la page ouverte ("+ driver.current_url + ") n'est pas égal à https://www.saucedemo.com/inventory.html"
   
    button_burger= driver.find_element(By.ID,"react-burger-menu-btn")
    element_visible_actif(button_burger)
    time.sleep(5)
    button_burger.click()


    button_logout= driver.find_element(By.ID,"logout_sidebar_link")

    time.sleep(5)
    button_logout.click()
    assert driver.current_url==url_sauce_demo, "L'url de la page ouverte ("+ driver.current_url+") n'est pas égal à "+url_sauce_demo

    time.sleep(5)
    driver.quit()