CP_AUTOMATION/config/config.py
2025-12-12 19:54:54 +05:30

81 lines
3.0 KiB
Python

"""
Configuration file for Cognitive Prism Automation Tests
"""
import os
from pathlib import Path
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Base paths
BASE_DIR = Path(__file__).parent.parent
REPORTS_DIR = BASE_DIR / "reports"
LOGS_DIR = BASE_DIR / "logs"
DOWNLOADS_DIR = BASE_DIR / "downloads"
# Create directories if they don't exist
REPORTS_DIR.mkdir(exist_ok=True)
LOGS_DIR.mkdir(exist_ok=True)
DOWNLOADS_DIR.mkdir(exist_ok=True)
# Environment Configuration
# DEFAULT: LOCAL (as per requirements - we'll switch to live only after local automation is complete)
ENVIRONMENT = os.getenv("ENVIRONMENT", "local").lower() # "live" or "local"
# Base URLs for different environments
LIVE_BASE_URL = "https://cognitiveprism.tech4bizsolutions.com"
LOCAL_BASE_URL = os.getenv("LOCAL_BASE_URL", "http://localhost:3983") # Local URL (default port 3983)
# Select base URL based on environment
if ENVIRONMENT == "local":
BASE_URL = LOCAL_BASE_URL
print(f"🌐 Using LOCAL environment: {BASE_URL}")
else:
BASE_URL = LIVE_BASE_URL
print(f"🌐 Using LIVE environment: {BASE_URL}")
# Application URLs (dynamic based on environment)
LOGIN_URL = f"{BASE_URL}/"
DASHBOARD_URL = f"{BASE_URL}/student/dashboard"
ASSESSMENTS_URL = f"{BASE_URL}/assessments"
PROFILE_EDITOR_URL = f"{BASE_URL}/student/profile-builder"
# Test Credentials (Local)
# Updated from Excel: students_with_passwords_2025-12-08T08-04-09.xlsx
# Current test student: BAR210A010D (Hridaan Kade, Age: 16)
TEST_USERNAME = os.getenv("TEST_USERNAME", "SC309TB0284") # Current test student
TEST_PASSWORD = os.getenv("TEST_PASSWORD", "VXa$Ai5kj4rV") # Password from Excel
TEST_NEW_PASSWORD = os.getenv("TEST_NEW_PASSWORD", "Admin@123") # Standardized new password for all students
# Student Data File
# CSV/Excel file containing student creation records
# Used to get correct DOB/age that matches school records (prevents age verification modal)
STUDENT_DATA_FILE = os.getenv("STUDENT_DATA_FILE", None) # Auto-detects latest CSV if None
# Browser Configuration
BROWSER = os.getenv("BROWSER", "chrome").lower()
HEADLESS = os.getenv("HEADLESS", "false").lower() == "true"
IMPLICIT_WAIT = int(os.getenv("IMPLICIT_WAIT", "5")) # Reduced from 10 - use explicit waits instead
EXPLICIT_WAIT = int(os.getenv("EXPLICIT_WAIT", "15")) # Reduced from 30 - faster execution
PAGE_LOAD_TIMEOUT = int(os.getenv("PAGE_LOAD_TIMEOUT", "30")) # Reduced from 60 - faster page loads
SHORT_WAIT = int(os.getenv("SHORT_WAIT", "3")) # For quick element checks
MEDIUM_WAIT = int(os.getenv("MEDIUM_WAIT", "8")) # For moderate waits
# Test Configuration
SCREENSHOT_ON_FAILURE = os.getenv("SCREENSHOT_ON_FAILURE", "true").lower() == "true"
SCREENSHOT_DIR = REPORTS_DIR / "screenshots"
SCREENSHOT_DIR.mkdir(exist_ok=True)
# Download Configuration
DOWNLOAD_DIR = str(DOWNLOADS_DIR)
DOWNLOAD_TIMEOUT = int(os.getenv("DOWNLOAD_TIMEOUT", "30"))
# Test Data
TEST_DATA_DIR = BASE_DIR / "test_data"
# Logging Configuration
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
LOG_FILE = LOGS_DIR / "test_execution.log"