|
@@ -15,18 +15,7 @@ import os
|
|
|
|
|
|
|
|
|
class TestSauceDemo:
|
|
|
- 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)
|
|
|
+ ##### METHODES PYTEST
|
|
|
|
|
|
def setup_method(self, method):
|
|
|
log.info("Methode de SETUP AVANT CHAQUE TEST")
|
|
@@ -47,6 +36,20 @@ class TestSauceDemo:
|
|
|
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")
|
|
@@ -56,47 +59,61 @@ class TestSauceDemo:
|
|
|
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()
|
|
|
|
|
|
- ##### MATTHIEU
|
|
|
-
|
|
|
-##### MANEL
|
|
|
-
|
|
|
- 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()
|
|
|
-
|
|
|
+ ##### 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é"
|
|
|
+ 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]')
|
|
|
+ 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é"
|
|
|
+ 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é"
|
|
|
|
|
|
|
|
|
def test_login_bad_username_and_bad_passwrd(self):
|
|
@@ -159,8 +176,7 @@ class TestSauceDemo:
|
|
|
self.login()
|
|
|
|
|
|
# ajout "Sauce Labs Bike Light" au panier -- A changer si Tiff implémente une fonction pour le faire
|
|
|
- item_lamp = self.driver.find_element(By.ID, "add-to-cart-sauce-labs-bike-light")
|
|
|
- item_lamp.click()
|
|
|
+ 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")
|
|
@@ -174,17 +190,23 @@ class TestSauceDemo:
|
|
|
== "https://www.saucedemo.com/checkout-step-one.html"
|
|
|
), "Nous ne somme pas sur la bonne page"
|
|
|
|
|
|
- ##### TIFF
|
|
|
- def add_item(self):
|
|
|
+ ##### TEST TIFF
|
|
|
+
|
|
|
+ @pytest.mark.skip("")
|
|
|
+ def test_add_item(self):
|
|
|
self.login()
|
|
|
- sauce_labs_backpack = self.driver.find_element(
|
|
|
- By.ID, "add-to-cart-sauce-labs-backpack"
|
|
|
- ).click()
|
|
|
- shopping_container = self.driver.find_element(By.ID, "shopping_cart_container")
|
|
|
+ backpack_item = "backpack"
|
|
|
+ add_to_cart_button = self.driver.find_element(
|
|
|
+ By.ID, f"add-to-cart-sauce-labs-{backpack_item}"
|
|
|
+ )
|
|
|
+ self.add_item(backpack_item)
|
|
|
+ log.info(f"Le bouton : {add_to_cart_button} est cliqué")
|
|
|
+ post_add_item_click = self.driver.find_element(
|
|
|
+ By.ID, f"remove-sauce-labs-{backpack_item}"
|
|
|
+ )
|
|
|
assert (
|
|
|
- sauce_labs_backpack != shopping_container.text
|
|
|
- ), f"L'item {sauce_labs_backpack} ne correspond pas à l'item {shopping_container.text} présent dans le panier."
|
|
|
+ add_to_cart_button == post_add_item_click
|
|
|
+ ), f"Le bouton {add_to_cart_button} ne correspond pas au résultat attendu qui est : {post_add_item_click}"
|
|
|
log.info(
|
|
|
- f"L'item : {shopping_container.text} a été ajouté et l'item : {sauce_labs_backpack} était attendu"
|
|
|
+ f"Avant d'ajouter l'item le bouton proposé est : {add_to_cart_button} et le bouton est : {post_add_item_click} après ajout de l'item"
|
|
|
)
|
|
|
- self.driver.quit()
|