init
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from dataclasses import dataclass, field
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
|
||||
@dataclass
|
||||
class Config:
|
||||
target_url: str = os.getenv("TARGET_URL", "https://example.com")
|
||||
admin_username: str = os.getenv("ADMIN_USERNAME", "admin")
|
||||
admin_password: str = os.getenv("ADMIN_PASSWORD", "changeme")
|
||||
admin_host: str = os.getenv("ADMIN_HOST", "127.0.0.1")
|
||||
admin_port: int = int(os.getenv("ADMIN_PORT", "8000"))
|
||||
db_path: str = os.getenv("DB_PATH", "data/tracker.db")
|
||||
headless: bool = os.getenv("HEADLESS", "true").lower() == "true"
|
||||
chrome_binary: str | None = os.getenv("CHROME_BINARY")
|
||||
|
||||
# Scenario 1 — SMS-OTP: list of phone numbers (one per line in env or comma-separated)
|
||||
phone_numbers: list[str] = field(default_factory=list)
|
||||
|
||||
# Flow steps — ordered list of step names to execute after login
|
||||
# Override in .env as: FLOW_STEPS=step_home,step_browse,step_checkout
|
||||
flow_steps: list[str] = field(default_factory=lambda: ["step_home"])
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
raw_phones = os.getenv("PHONE_NUMBERS", "")
|
||||
if raw_phones:
|
||||
self.phone_numbers = [p.strip() for p in raw_phones.split(",") if p.strip()]
|
||||
|
||||
raw_steps = os.getenv("FLOW_STEPS", "")
|
||||
if raw_steps:
|
||||
self.flow_steps = [s.strip() for s in raw_steps.split(",") if s.strip()]
|
||||
|
||||
|
||||
config = Config()
|
||||
Reference in New Issue
Block a user