diff --git a/conftest.py b/conftest.py index c7066ad..ea9c259 100644 --- a/conftest.py +++ b/conftest.py @@ -132,8 +132,8 @@ def navigate_to_login(setup): browser, wait = setup login_page = LoginPage(browser, wait) - username = os.environ.get("USERNAME") - password = os.environ.get("PASSWORD") + username = os.environ.get("OBI_USERNAME") + password = os.environ.get("OBI_PASSWORD") if not username or not password: raise ValueError("Missing USERNAME or PASSWORD environment variables.") @@ -154,9 +154,15 @@ def login(setup, navigate_to_login): """Fixture to log in and ensure user is authenticated.""" browser, wait = setup login_page = navigate_to_login + config = load_config() - username = config['username'] - password = config['password'] + if not config: + raise ValueError("Failed to load configuration") + username = config.get('username') + password = config.get('password') + + if not username or not password: + raise ValueError("Username or password is missing in the configuration!") login_page.perform_login(username, password) login_page.wait_for_login_complete() diff --git a/pages/login_page.py b/pages/login_page.py index 4263fd6..98854e3 100644 --- a/pages/login_page.py +++ b/pages/login_page.py @@ -1,7 +1,7 @@ # Copyright (c) 2024 Blue Brain Project/EPFL # # SPDX-License-Identifier: Apache-2.0 - +import logging import time from selenium.common import TimeoutException @@ -15,6 +15,7 @@ class LoginPage(CustomBasePage): def __init__(self, browser, wait): super().__init__(browser, wait) + self.logger = logging.getLogger(__name__) def navigate_to_homepage(self): self.browser.delete_all_cookies() @@ -53,6 +54,8 @@ def find_submit(self): return self.wait.until(EC.element_to_be_clickable(LoginPageLocators.SUBMIT)) def perform_login(self, username, password): + self.logger.info("Performing login with the provided credentials.") + username_field = self.find_username_field() password_field = self.find_password_field() diff --git a/util/util_base.py b/util/util_base.py index 4fc1596..2a9658a 100644 --- a/util/util_base.py +++ b/util/util_base.py @@ -8,25 +8,53 @@ def load_config(): try: + # Check if running in CI (e.g., GitHub Actions) if os.getenv('CI'): - print(""" Running in GitLab CI/CD pipeline""") - username = os.environ['USERNAME'] - password = os.environ['PASSWORD'] + print("Running in CI environment (GitHub Actions)") + # Use GitHub Secrets - these need to be set in the GitHub repository settings + username = os.environ.get("OBI_USERNAME") + password = os.environ.get("OBI_PASSWORD") + if not username or not password: + raise ValueError("USERNAME or PASSWORD not set in GitHub Secrets.") config = { 'username': username, 'password': password } else: - print("""Running locally""") + # Running locally, use config.json file + print("Running locally") base_dir = os.path.abspath(os.path.dirname(__file__)) config_path = os.path.join(base_dir, '..', 'util', 'config.json') with open(config_path, 'r') as f: config = json.load(f) + return config except Exception as e: print(f"Error loading config: {e}") return None +# def load_config(): +# try: +# if os.getenv('CI'): +# print(""" Running in GitLab CI/CD pipeline""") +# username = os.environ['USERNAME'] +# password = os.environ['PASSWORD'] +# config = { +# 'username': username, +# 'password': password +# } +# else: +# print("""Running locally""") +# base_dir = os.path.abspath(os.path.dirname(__file__)) +# config_path = os.path.join(base_dir, '..', 'util', 'config.json') +# with open(config_path, 'r') as f: +# config = json.load(f) +# return config +# except Exception as e: +# print(f"Error loading config: {e}") +# return None + +