123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- ##### IMPORT
- import pytest
- import logging as log
- import time
- from selenium import webdriver
- from selenium.webdriver.common.by import By
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.common.exceptions import TimeoutException
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.support.ui import Select
- from selenium.webdriver.firefox.options import Options
- from test_saucedemo import writeInInput
- import os
- class TestSauceDemo:
- ##### METHODES PYTEST
- def setup_method(self, method):
- log.info("Methode de SETUP AVANT CHAQUE TEST")
- if self.is_windows():
- self.driver = webdriver.Firefox()
- else:
- options = webdriver.FirefoxOptions()
- options.add_argument("--headless")
- self.driver = webdriver.Firefox(options=options)
- self.driver.get("http://www.saucedemo.com")
- assert (
- self.driver.current_url == "https://www.saucedemo.com/"
- ), "Nous ne somme pas sur la bonne page"
- def teardown_method(self, method):
- log.info("Methode de TEARDOWN APRES CHAQUE TEST")
- self.driver.quit()
- ##### METHODES DIVERS
- def is_windows(self):
- # oups
- res = False
- if os.name == "nt":
- res == True
- return res
- def writeInInput(self, 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)
- def login(self):
- username = self.driver.find_element(By.ID, "user-name")
- password = self.driver.find_element(By.ID, "password")
- login = self.driver.find_element(By.ID, "login-button")
- writeInInput(inputElement=username, text="standard_user")
- writeInInput(password, text="secret_sauce")
- login.click()
-
- def login_custum(self, user, pwd):
- username = self.driver.find_element(By.ID, "user-name")
- password = self.driver.find_element(By.ID, "password")
- login = self.driver.find_element(By.ID, "login-button")
- writeInInput(inputElement=username, text=user)
- writeInInput(password, text=pwd)
- login.click()
- def logout(self):
- burger = self.driver.find_element(By.ID, "react-burger-menu-btn")
- burger.click()
- logout = self.driver.find_element(By.ID, "logout_sidebar_link")
- logout.click()
- def add_item(self, item):
- self.driver.find_element(By.ID, f"add-to-cart-sauce-labs-{item}").click()
- return item
- def go_to_checkout(self):
- checkout = self.driver.find_element(By.CSS_SELECTOR, "#checkout")
- checkout.click()
- ##### TEST ABBAS
-
- @pytest.mark.skip("")
- def test_saucedemo_boutenbout(self):
- self.login()
- self.logout()
- ##### TEST MANEL
- @pytest.mark.skip("")
- def test_login_bad_username(self):
- self.login_custum("test", "secret_sauce")
- erreur_message = self.driver.find_element(By.CSS_SELECTOR, "[data-test=error]")
- assert erreur_message.is_displayed(), "Pas de message d'erreur "
- assert (
- erreur_message.text
- == "Epic sadface: Username and password do not match any user in this service"
- ), "le message est erroné"
- @pytest.mark.skip("")
- def test_login_bad_passwrd(self):
- self.login_custum("standard_user", "test")
- erreur_message = self.driver.find_element(By.CSS_SELECTOR, "[data-test=error]")
- assert erreur_message.is_displayed(), "Pas de message d'erreur "
- assert (
- erreur_message.text
- == "Epic sadface: Username and password do not match any user in this service"
- ), "le message est erroné"
- ##### TEST MATTHIEU
- #@pytest.mark.skip("")
- def test_affichage_Checkout(self):
- log.info("Test de la redirection sur la page de Checkout")
- # connexion Swag Labs
- self.login()
- # ajout "Sauce Labs Bike Light" au panier -- A changer si Tiff implémente une fonction pour le faire
- self.add_item("bike-light")
- # affichage panier -- A changer si Tiff implémente une fonction pour le faire
- panier_btn = self.driver.find_element(By.ID, "shopping_cart_container")
- panier_btn.click()
- # redirection vers la page de checkout
- self.go_to_checkout()
- assert (
- self.driver.current_url
- == "https://www.saucedemo.com/checkout-step-one.html"
- ), "Nous ne somme pas sur la bonne page"
- ##### TEST TIFF
-
- @pytest.mark.skip("")
- def test_add_item(self):
- self.login()
- sauce_labs_item = self.add_item("backpack")
- shopping_container = self.driver.find_element(By.ID, "shopping_cart_container")
- assert (
- sauce_labs_item != shopping_container.text
- ), f"L'item {sauce_labs_item} ne correspond pas à l'item {shopping_container.text} présent dans le panier."
- log.info(
- f"L'item : {shopping_container.text} a été ajouté et l'item : {sauce_labs_item} était attendu"
- )
|