Cursor rule
example-structures/selenium-python/.cursor/rules/framework-architecture.mdcSelenium + pytest framework architecture — configuration, fixtures, and dependency management
Cursor rules
Quality
93/100
Scores the file, not the repository.Length
344 words
10 headings · 4 code blocksRepository
18
— · pushed 0 days agoLast changed
2 days ago
First indexed 2 days ago.123456# Selenium Python Framework Architecture78## Modern Framework Foundation9- **pytest Framework**: Leverage pytest's powerful fixture system and plugin ecosystem10- **Modular Architecture**: Separate concerns with clear package structure11- **Configuration Management**: Environment-specific settings with proper inheritance12- **Dependency Management**: Pinned versions with regular security updates1314## Project Structure Best Practices15```16selenium-project/17├── tests/18│ ├── conftest.py # Global pytest configuration19│ ├── pages/ # Page Object Models20│ ├── specs/ # Test specifications21│ ├── utils/ # Helper utilities22│ └── data/ # Test data files23├── config/24│ ├── environments/ # Environment configurations25│ └── browsers/ # Browser configurations26├── reports/ # Test execution reports27├── logs/ # Application logs28├── requirements.txt # Python dependencies29└── pytest.ini # pytest configuration30```3132## pytest Configuration Excellence33```python34# conftest.py - Global configuration35import pytest36import os37from selenium import webdriver38from selenium.webdriver.chrome.options import Options as ChromeOptions39from webdriver_manager.chrome import ChromeDriverManager4041def pytest_addoption(parser):42 """Command line options for flexible test execution."""43 parser.addoption("--browser", action="store", default="chrome")44 parser.addoption("--headless", action="store_true", default=False)45 parser.addoption("--env", action="store", default="dev")46 parser.addoption("--parallel", action="store", default="1")4748@pytest.fixture(scope="session")49def browser_config(request):50 """Browser configuration based on command line arguments."""51 return {52 "browser": request.config.getoption("--browser"),53 "headless": request.config.getoption("--headless"),54 "environment": request.config.getoption("--env")55 }56```5758## Environment Management59```python60# Environment-specific configuration loading61import yaml62import os63from typing import Dict, Any6465class ConfigManager:66 """Centralized configuration management."""6768 def __init__(self, environment: str = "dev"):69 self.environment = environment70 self.config = self._load_config()7172 def _load_config(self) -> Dict[str, Any]:73 """Load environment-specific configuration."""74 config_file = f"config/environments/{self.environment}.yaml"7576 if not os.path.exists(config_file):77 raise FileNotFoundError(f"Configuration file not found: {config_file}")7879 with open(config_file, 'r') as f:80 config = yaml.safe_load(f)8182 # Validate required keys83 required_keys = ["base_url", "timeouts", "credentials"]84 for key in required_keys:85 if key not in config:86 raise KeyError(f"Missing required configuration: {key}")8788 return config8990 def get(self, key: str, default=None):91 """Get configuration value with dot notation support."""92 keys = key.split('.')93 value = self.config9495 for k in keys:96 if isinstance(value, dict) and k in value:97 value = value[k]98 else:99 return default100101 return value102```103104## Dependency Management105```ini106# requirements.txt - Pinned versions for stability107selenium==4.15.0108pytest==7.4.0109pytest-html==4.1.1110pytest-xdist==3.3.1111webdriver-manager==4.0.1112pyyaml==6.0.1113allure-pytest==2.13.2114python-dotenv==1.0.0115116# Development dependencies117black==23.9.1118flake8==6.1.0119mypy==1.6.0120```121
Also in tugkanboz/awesome-cursorrules
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| tugkanboz/awesome-cursorrulesexample-structures/cypress/.cursor/rules/api-testing.mdc · 18 | Cursor rules | testtesting-strategyapi | 58/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesexample-structures/cypress/.cursor/rules/testing-fundamentals.mdc · 18 | Cursor rules | testarchtesting-strategysecurity+2 | 62/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesexample-structures/next-js/.cursor/rules/app-router-patterns.mdc · 18 | Cursor rules | styleapido-not | 65/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesexample-structures/react-typescript/.cursor/rules/component-development.mdc · 18 | Cursor rules | teststylearchtypes+1 | 58/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesexample-structures/selenium-python/.cursor/rules/page-object-patterns.mdc · 18 | Cursor rules | ui | 54/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesexample-structures/selenium-python/.cursor/rules/test-patterns.mdc · 18 | Cursor rules | teststylearchtesting-strategy+1 | 66/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesframeworks/cypress/.cursor/rules/cypress-excellence.mdc · 18 | Cursor rules | testtesting-strategysecurityperformance+1 | 58/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesrules/appium-mobile-test-automation-framework/.cursorrules · 18 | .cursorrules | teststylearchperformance+2 | 56/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesrules/cypress-javascript-test-automation-framework/.cursorrules · 18 | .cursorrules | testlint-formatstylearch+4 | 59/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesrules/k6-performance-test-framework/.cursorrules · 18 | .cursorrules | setupteststylearch+2 | 56/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesrules/playwright-javascript-test-automation-framework/.cursorrules · 18 | .cursorrules | testlint-formatstylearch+3 | 59/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesrules/restassured-java-framework/.cursorrules · 18 | .cursorrules | teststylearchsecurity+4 | 56/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesrules/selenium-net-test-automation-framework/.cursorrules · 18 | .cursorrules | teststylearchdeployment+1 | 56/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesrules/selenium-python-test-automation-framework/.cursorrules · 18 | .cursorrules | testlint-formatstylearch+3 | 59/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesrules/vitest-javascript-unit-test-framework/.cursorrules · 18 | .cursorrules | setupteststylearch+5 | 60/100 | 2 days ago | |
| tugkanboz/awesome-cursorrulesrules/webdriverio-javascript-test-automation-framework/.cursorrules · 18 | .cursorrules | testlint-formatstylearch+4 | 69/100 | 2 days ago |
Diff against example-structures/cypress/.cursor/rules/api-testing.mdc Diff against example-structures/cypress/.cursor/rules/testing-fundamentals.mdc Diff against example-structures/next-js/.cursor/rules/app-router-patterns.mdc Diff against example-structures/react-typescript/.cursor/rules/component-development.mdc Diff against example-structures/selenium-python/.cursor/rules/page-object-patterns.mdc Diff against example-structures/selenium-python/.cursor/rules/test-patterns.mdc Diff against frameworks/cypress/.cursor/rules/cypress-excellence.mdc Diff against rules/appium-mobile-test-automation-framework/.cursorrules Diff against rules/cypress-javascript-test-automation-framework/.cursorrules Diff against rules/k6-performance-test-framework/.cursorrules Diff against rules/playwright-javascript-test-automation-framework/.cursorrules Diff against rules/restassured-java-framework/.cursorrules Diff against rules/selenium-net-test-automation-framework/.cursorrules Diff against rules/selenium-python-test-automation-framework/.cursorrules Diff against rules/vitest-javascript-unit-test-framework/.cursorrules Diff against rules/webdriverio-javascript-test-automation-framework/.cursorrules
