Skip to main content

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

Metadata

Release files for sarenza-automation-core 0.1.0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sarenza-automation-core 0.1.0.1.1
File Size Uploaded
sarenza_automation_core-0.1.0.1.1.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sarenza-automation-core 0.1.0.1.1
File Interpreter ABI Platform
sarenza_automation_core-0.1.0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 28.4 kB

Release files / sarenza_automation_core-0.1.0.1.1.tar.gz

Download URL sarenza_automation_core-0.1.0.1.1.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
7ff8290f3bbedb42a569ad3dea09e1a276b77f333293292a721eb628c8007b90
BLAKE2b-256 checksum
How to use checksums
bf6814f92eff58892b3cb513a3b4dd5720b1b0c235b91dcda8a0ca71bd99763d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.11.4 Darwin/24.3.0

Release files / sarenza_automation_core-0.1.0.1.1-py3-none-any.whl

Download URL sarenza_automation_core-0.1.0.1.1-py3-none-any.whl
Size 15.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
40c1959d1350e6ea22b0109f5bfd6a955a46a92c61d714688dc79d387ed018ce
BLAKE2b-256 checksum
How to use checksums
87acb28106644581334c104e62ddf3b1d9149b1c464673219efa18ac0fcb0e00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.11.4 Darwin/24.3.0

Release history Release notifications | RSS feed

This release

0.1.0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page