Skip to main content

Non regression test automation framework core

Project description

sarenza-automation-core

sarenza-automation-core est une bibliothèque Python réutilisable pour l'automatisation de tests web et mobile (Selenium / Appium), conçue pour les équipes QA de Sarenza.
Elle fournit une base commune pour standardiser les drivers, les helpers, les interactions DOM, le support multi-navigateurs, et bien plus.


Fonctionnalités principales

Core modules

  • DriverFactory : instancie les drivers locaux ou distants (Chrome, Firefox, Appium).
  • Logger : wrapper autour de Loguru pour des logs lisibles et uniformes.
  • ConfigReaderHelper : lecture de fichiers de configuration INI ou JSON.
  • TranslationHelper : lecture de clés de traduction depuis un fichier languages.json.
  • Exceptions : gestion des exceptions spécifiques (ClickInterceptedException, etc).

Helpers intégrés

BasePage — la boîte à outils des pages web

from sarenza_automation_core.base.base_page import BasePage
Méthode Description
get_element_by((By.ID, "my-id")) Retourne un élément avec un By donné
get_element("_xpath", "//button") Retourne un élément via une chaîne _xpath, _css, etc.
click_element((By.ID, "submit")) Click + Retry avec gestion des erreurs
type_into_element_by(by, text) Envoie du texte dans un champ
select_from_dropdown_by_value/visible_text Sélectionne une valeur dans un select
click_using_javascript(css_selector) Force le clic JS si nécessaire
scroll_down_until_element_by(locator) Scrolling fluide jusqu'à un élément
verify_page_title(expected_title) Vérifie que le titre contient un texte
is_element_not_displayed(locator) Vérifie si un élément est caché ou absent
extract_pcid_from_url() Extrait un PCID de l’URL
go_to_page("/mon/url") Va vers une URL relative à SUT_URL
sleep(5) Pause utile pour les tests manuels

Module BrowserConsoleInteractor

Méthode Description
get_variable(variable_name: str) Exécute un script JavaScript pour récupérer une variable globale du navigateur. Renvoie la valeur ou None.
list_global_variables() Retourne la liste des variables globales disponibles dans window du navigateur.
execute_custom_script(script: str) Exécute un script JavaScript personnalisé dans le contexte du navigateur. Renvoie le résultat ou None.

Exemple d'utilisation de BrowserConsoleInteractor

from selenium import webdriver
from sarenza_automation_core.helpers.browser_console_interactor import BrowserConsoleInteractor

# Initialiser le navigateur (ex. Chrome)
driver = webdriver.Chrome()

# Accéder à une page contenant des variables globales
driver.get("https://sarenza.com")

# Initialiser l'interacteur console
console = BrowserConsoleInteractor(driver)

# 1. Récupérer la valeur d'une variable globale
tc_events = console.get_variable("tc_full_events")
print("tc_full_events:", tc_events)

# 2. Lister toutes les variables globales
globals_list = console.list_global_variables()
print("Variables globales:", globals_list)

# 3. Exécuter un script personnalisé
result = console.execute_custom_script("return document.title;")
print("Titre de la page :", result)

# Fermer le navigateur
driver.quit()

Note : Le navigateur doit être lancé avec les bons profils et autorisations pour permettre l’accès aux objets JavaScript globaux.

Module : LocalStorageHelper

Méthode Description
set_item(key: str, value) Stocke une paire clé/valeur dans le localStorage du navigateur (la valeur est sérialisée en JSON).
get_item(key: str) Récupère une valeur du localStorage par sa clé. Désérialise automatiquement en objet Python.
remove_item(key: str) Supprime une entrée du localStorage correspondant à la clé donnée.

Exemple d'utilisation de LocalStorageHelper

from selenium import webdriver
from sarenza_automation_core.helpers.local_storage_helper import LocalStorageHelper

# Initialiser le navigateur
driver = webdriver.Chrome()

# Accéder à une page qui utilise le localStorage
driver.get("https://sarenza.com")

# Initialiser le helper
storage = LocalStorageHelper(driver)

# 1. Stocker une valeur
storage.set_item("test_key", {"user": "Alice", "role": "admin"})

# 2. Lire la valeur
value = storage.get_item("test_key")
print("Valeur récupérée :", value)

# 3. Supprimer la clé
storage.remove_item("test_key")

# Fermer le navigateur
driver.quit()

Module : translation_helper.py

Fonction Description
_load_translations() Charge les traductions depuis un fichier JSON (défini par FILE_PATH ou par défaut languages/languages.json).
get_translation(lang, key) Retourne la traduction d’un mot-clé (key) dans une langue donnée (lang). Renvoie un message d'erreur si introuvable.
get_translated_value(key) Retourne la traduction d’un mot-clé (key) dans la langue par défaut définie via la variable d’environnement LANGUAGE.

Exemple d'utilisation

import os
from sarenza_automation_core.helpers.translation_helper import get_translation, get_translated_value

# Facultatif : définir manuellement la langue et le chemin du fichier
os.environ["LANGUAGE"] = "fr"
os.environ["FILE_PATH"] = "languages/languages.json"

# Traduction directe
print(get_translation("fr", "Mr"))  # Ex: "Monsieur"

# Traduction avec langue par défaut
print(get_translated_value("Mr"))   # Ex: "Monsieur"

Module : user_information_helper.py

Fonction Description
__init__(target_folder) Initialise l’instance avec un dossier cible (par défaut user_info) et crée un verrou pour les accès concurrents.
save_user_info(user_info) Sauvegarde un dictionnaire d’informations utilisateur dans un fichier JSON (par date + thread). Supprime les fichiers anciens.
fetch_user_info() Récupère les informations utilisateur sauvegardées pour la date et le thread en cours. Renvoie None si aucun fichier trouvé.

Exemple d'utilisation

from sarenza_automation_core.helpers.user_information_helper import UserInformationHelper

user_info_helper = UserInformationHelper()

# Sauvegarde d'information
user_info_helper.save_user_info({"username": "john_doe", "session_id": "abc123"})

# Récupération
info = user_info_helper.fetch_user_info()
print(info)

Installation

Pré-requis

  • Python 3.11

  • Poetry installé

Étapes d’installation

1. Cloner le repo si ce n’est pas déjà fait

git clone https://github.com/sarenza/sarenza-automation-core.git cd sarenza-automation-core  

2. Créer l’environnement virtuel avec Poetry

poetry install

3. Activer l’environnement

poetry shell

Lancer les tests

Tous les tests unitaires

 poetry run pytest -v

Variables d’environnement supportées

Variable

Description

Par défaut 5 secondes

TIMEOUT

Timeout global pour les éléments

SUT_URL

URL de base de l’application testée

FILE_PATH

Fichier JSON de traduction

languages.json

📄 Licence

MIT – © Sarenza QA Team

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sarenza_automation_core-0.1.0.1.1.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sarenza_automation_core-0.1.0.1.1-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file sarenza_automation_core-0.1.0.1.1.tar.gz.

File metadata

  • Download URL: sarenza_automation_core-0.1.0.1.1.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.11.4 Darwin/24.3.0

File hashes

Hashes for sarenza_automation_core-0.1.0.1.1.tar.gz
Algorithm Hash digest
SHA256 7ff8290f3bbedb42a569ad3dea09e1a276b77f333293292a721eb628c8007b90
MD5 74c271b67b3e1e4ac952a6b4ada8c40a
BLAKE2b-256 bf6814f92eff58892b3cb513a3b4dd5720b1b0c235b91dcda8a0ca71bd99763d

See more details on using hashes here.

File details

Details for the file sarenza_automation_core-0.1.0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sarenza_automation_core-0.1.0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 40c1959d1350e6ea22b0109f5bfd6a955a46a92c61d714688dc79d387ed018ce
MD5 11dfb6f76778e9020d448758edf166f9
BLAKE2b-256 87acb28106644581334c104e62ddf3b1d9149b1c464673219efa18ac0fcb0e00

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page