A comprehensive automation and algorithms reference project demonstrating modern testing patterns and best practices.
Sloth Python is an educational and professional-grade project combining:
- π§ͺ Advanced test automation frameworks (Robot Framework, pytest, Playwright)
- π€ AI-powered self-healing test locators that automatically repair broken selectors
- ποΈ Comprehensive algorithm library (data structures, ML, divide & conquer, and more)
- βοΈ Production-ready CI/CD workflows using GitHub Actions
- π§ AI-driven test script generation from natural-language goals using MCP
Perfect for learning modern test automation, exploring algorithms, or as a reference for professional test frameworks.
- Quick Start
- Installation
- Configuration
- Running Tests
- Self-Healing Framework
- AI-Generated Test Scripts
- Claude Code Examples
- CI/CD Pipeline
- Project Structure
- Best Practices
- Troubleshooting
- Documentation
- License
- Support & Feedback
- Advanced Test Automation: Robot Framework and pytest examples for unit, API, and Playwright-based UI testing
- Self-Healing Locators: AI-assisted Playwright framework that automatically detects and repairs broken element selectors
- AI Test Script Generation: MCP-aware Playwright workflow that generates runnable pytest UI tests from natural-language goals
- Algorithm Library: Curated implementations of algorithms, data structures, and machine learning concepts
- Production-Ready CI/CD: GitHub Actions workflows for automated smoke tests and nightly regression suites
- Comprehensive Examples: Real-world test scenarios and automation patterns
- Python 3.11+
- Git
- Clone the repository:
git clone https://github.com/466725/sloth-python.git cd sloth-python
-
Create and activate a virtual environment: Windows (PowerShell):
py -3.11 -m venv .venv .\.venv\Scripts\activate
Linux/macOS (bash/zsh):
python3 -m venv .venv source .venv/bin/activate -
Install dependencies: Using pip:
pip install -r requirements.txtUsing uv:
uv venv .venv --python 3.11 .\.venv\Scripts\activate uv pip install -r requirements.txt
Linux/macOS with uv:
uv venv .venv --python 3.11 source .venv/bin/activate uv pip install -r requirements.txtNote: This installs the packages used by Robot Framework, pytest, Playwright, and the supporting demo utilities.
-
Install Playwright Browsers:
playwright install
Runtime settings are centralized in utils/config.py and read from environment variables with safe defaults.
| Variable | Default | Description |
|---|---|---|
TANGERINE_URL |
https://www.tangerine.ca/en/personal |
Base URL for Tangerine UI tests |
DEEP_SEEK_URL |
https://api.deepseek.com |
Base URL for DeepSeek-compatible API calls |
OPENAI_URL |
https://api.openai.com |
Base URL for OpenAI API calls |
UI_LOCALE |
en-US |
Browser locale used by Playwright-based UI tests |
SLEEP_TIME |
1 |
Generic sleep duration used in selected fixtures |
COOKIE_BANNER_TIMEOUT_SECONDS |
5 |
Wait time for Tangerine cookie banner handling |
PW_HEADLESS |
true |
Playwright headless mode (1/0, true/false, yes/no, on/off) |
AI_GEN_MODEL |
gpt-4.1 |
LLM model identifier |
AI_GEN_BASE_URL |
OPENAI_URL |
API base URL |
AI_GEN_MAX_DOM_CHARS |
12000 |
Max DOM/element-tree size sent to the model |
AI_GEN_OUTPUT_DIR |
pytest_demo/tests/ai/generated_playwright |
Default output folder |
QTEST_BASE_URL |
https://yourcompany.qtestnet.com |
Base URL for qTest API integration |
QTEST_PROJECT_ID |
123456 |
qTest project id used for test run reporting |
QTEST_API_TOKEN |
your_token_here |
API token used to authenticate with qTest |
Quick local check:
python -m utils.configUse the commands below for the most common local test workflows.
pytest is the main runner for unit, API, and Playwright UI tests.
# Full pytest run
python -m pytest
# Only UI tests
python -m pytest -m ui
# One file / one test
python -m pytest pytest_demo/tests/unit/test_csv_reader.py -q
python -m pytest pytest_demo/tests/unit/test_csv_reader.py::test_read_csv_to_list_converts_numeric_cells_to_int -q
# Tangerine Playwright suite
python -m pytest pytest_demo/tests/ui/tangerine_playwright
# Generate and view Allure results
python -m pytest --alluredir=temps/allure-results --clean-alluredir
allure serve temps/allure-resultsFor pytest_demo/tests/ui/tangerine_playwright, Playwright records per-test video and keeps/attaches it only for failed tests. Videos are written under temps/playwright-videos/tangerine_playwright/.
The repo includes three API-testing styles:
| Approach | Best for | Run command |
|---|---|---|
| Pytest + Python | Flexible validation and reusable helpers | python -m pytest -q pytest_demo/tests/api/test_deep_seek_api.py |
| Robot + Python keywords | Readable Robot flow with Python power | python -m robot --outputdir temps/robot_api robot_demo/api/deep_seek_api_hybrid_test.robot |
Robot-only RequestsLibrary |
Simple keyword-driven API checks | python -m robot --outputdir temps/robot_api robot_demo/api/deep_seek_api_test.robot |
DeepSeek demos use OPENAI_API_KEY; DEEP_SEEK_URL is optional.
Use Playwright Codegen to record actions and bootstrap UI tests:
python -m playwright codegen https://www.tangerine.ca/en/personalRun a Playwright test visibly for debugging:
python -m pytest pytest_demo/tests/ui/tangerine_playwright/test_codegen_demo.py --headed --slowmo 200--headed: opens a visible browser--slowmo 200: slows actions for easier observation
This project uses Python pytest + Playwright, so run tests with
python -m pytest ..., notnpx playwright test.
For AI-based test generation, see AI-Generated UI Test Scripts.
Robot demos live under robot_demo/.
# All Robot demos
python -m robot --outputdir temps/robot_all robot_demo/
# Calculator demo
python -m robot --outputdir temps/robot_calculator robot_demo/calculator/
# Tangerine Playwright suite
python -m robot --outputdir temps/robot_tangerine_playwright robot_demo/tangerine_playwright/
# Dry run (syntax and keyword wiring only)
python -m robot --dryrun --outputdir temps/robot_tangerine_playwright_dryrun robot_demo/tangerine_playwright/Robot writes output.xml, log.html, and report.html to the selected directory under temps/.
For robot_demo/tangerine_playwright/:
- failure screenshots are saved under
artifacts/playwright/screenshots/ - failure videos are saved under
artifacts/playwright/videos/ - screenshot/video links appear in Robot
log.htmlandreport.html - passed-test videos are deleted to keep artifacts small
The Tangerine Robot keyword libraries also bootstrap the project root import path automatically, so -P is typically not needed.
This project includes an advanced self-healing mechanism for Playwright-based UI tests that automatically detects and repairs broken locators.
Location: pytest_demo/self_healing/
Locator Store:
pytest_demo/locators/signinpage.jsonpytest_demo/locators/signuppage.json
- Primary Locator Failure β Framework attempts primary locator
- Backup Locators β Tries backup selectors from locator store
- DOM Scanning β Scans page DOM for similar elements using fuzzy matching
- Auto-Update β If a match is found, test passes and the page-specific locator file is automatically updated
- Resilience β Subsequent test runs use the updated selector
- Reduced Maintenance: Eliminates manual locator fixes after UI changes
- Improved Stability: Tests are more resilient to minor DOM alterations
- Smart Learning: System learns from failures and improves over time
The Robot suite in robot_demo/tangerine_playwright/ uses the same self-healing locator store, but limits healing to these keys in the Playwright keywords:
tangerine.logintangerine.signup
Locator definitions are shared from:
pytest_demo/locators/signinpage.jsonpytest_demo/locators/signuppage.json
Robot mode currently runs with read-only healing (auto_update=False) so it can recover using stored locator strategies without silently rewriting the locator files.
An AI-powered pipeline that generates runnable pytest + Playwright test scripts from natural-language goals and live page context.
How it works: Playwright captures the page (DOM, screenshot, network events) β context is packaged into a structured prompt β an OpenAI-compatible model generates Python test code β the file is written to pytest_demo/tests/ai/generated_playwright/.
Location: pytest_demo/ai_generation/ β modules: mcp_context.py, prompt_builder.py, ai_client.py, generator.py, cli.py
OPENAI_API_KEYset (supports OpenAI, DeepSeek, Azure, OpenRouter, or any OpenAI-compatible endpoint)- Dependencies installed:
pip install -r requirements.txt - Playwright browsers installed:
playwright install
# 1. Set your API key
$env:OPENAI_API_KEY = "<your-api-key>"
# 2. Generate a test from a live page
python -m pytest_demo.ai_generation.cli `
--url "https://www.tangerine.ca/en/personal" `
--goal "Verify homepage loads and Sign In button is visible" `
--test-name "test_tangerine_homepage" `
--output "pytest_demo/tests/ai/generated_playwright/test_tangerine_homepage.py"
# 3. Run the generated test
python -m pytest -q pytest_demo/tests/ai/generated_playwright/test_tangerine_homepage.py| Option | Default | Description |
|---|---|---|
--url |
(required) | Target page URL |
--goal |
(required) | Natural-language test goal |
--test-name |
test_generated_ui_flow |
Generated function name |
--output |
AI_GEN_OUTPUT_DIR |
Output file path |
--model |
gpt-4.1 |
LLM model name |
--base-url |
OPENAI_URL |
OpenAI-compatible endpoint |
--headless |
true |
Run Playwright headless (true/false) |
# Sign-in page
python -m pytest_demo.ai_generation.cli `
--url "https://www.tangerine.ca/app/#/login" `
--goal "Verify username/password fields and submit button are present" `
--test-name "test_tangerine_signin"
# Run all generated tests
python -m pytest -q pytest_demo/tests/ai/generated_playwright- Review before committing β AI output is a strong starting point, not production-ready by default
- Model choice β
gpt-4.1for best quality;gpt-4.1-minifor cost savings - Large pages β DOM is truncated at
AI_GEN_MAX_DOM_CHARS; increase if needed - Self-healing β Generated tests are plain pytest files; wrap with self-healing helpers manually if needed
- Validate with:
python -m pytest -q pytest_demo/tests/ai/test_ai_generation.py
The claude_code/ package is a hands-on collection of Claude API and MCP examples. It is useful for learning prompt design, tool use, retrieval, streaming, and building small MCP clients/servers around Claude.
The main subprojects are organized by numbered learning tracks:
| Directory | Purpose |
|---|---|
000_Architect_Foundations_Certification_Exam/ |
Community practice exam for Claude Certified Architect (77 scenario-based questions) |
001_starter/ |
Starter MCP server for document-processing tools |
002_cli/ |
Interactive Claude CLI with MCP client/server and document retrieval patterns |
003_notifications/ |
MCP logging, progress, and notification demo |
004_roots/ |
MCP chat with controlled filesystem roots and video conversion helpers |
005_sampling/ |
MCP sampling demo with Claude-backed client flow |
006_transport_http/ |
MCP transport-over-HTTP server example |
007_note_book/ |
Notebook-based tutorials for prompting, tools, retrieval, evals, and web/search workflows |
claude_agent_sdk/ |
Local copy of Claude Agent SDK for Python with examples and docs |
Notebook tutorials live under claude_code/007_note_book/:
| Notebook | Focus |
|---|---|
001_prompting.ipynb, 002_prompting.ipynb |
Prompting patterns and prompt iteration |
001_thinking.ipynb |
Claude thinking/reasoning examples |
001_tools.ipynb |
Multi-tool calling basics |
001_prompt_grader_evals.ipynb |
Prompt evaluation datasets, grading, and scoring |
001_chunking.ipynb |
Text chunking for retrieval workflows |
002_citations.ipynb |
Citation-aware responses |
002_embeddings.ipynb |
Embeddings and semantic retrieval |
002_images.ipynb |
Image input and multimodal usage patterns |
003_vectordb.ipynb, 004_bm25.ipynb, 005_hybrid.ipynb |
Vector search, keyword search, and hybrid retrieval |
003_caching.ipynb |
Prompt caching examples |
003_tool_streaming.ipynb |
Streaming tool-use flows |
005_code_execution.ipynb |
Code execution tool examples |
005_text_editor_tool.ipynb |
Text editor tool usage |
006_web_search.ipynb |
Web search examples |
The runnable MCP examples and mini-projects are:
| Directory | Purpose |
|---|---|
001_starter/ |
Document-processing MCP starter server |
002_cli/ |
Interactive MCP chat CLI project |
003_notifications/ |
Logging/progress and notification flow |
004_roots/ |
Root-restricted filesystem operations + video conversion |
005_sampling/ |
Sampling patterns and response flow control |
006_transport_http/ |
HTTP transport setup for MCP server communication |
Most runnable subprojects include their own README.md. In general, set ANTHROPIC_API_KEY, install dependencies with uv sync or uv pip install -e ., then run the project-specific command such as uv run main.py or uv run client.py.
Additional reference files:
claude_code/anthropic_academy_courses.md: curated course/content notesclaude_code/report.md: local notes and summary output for Claude experiments
Some learning subprojects live under claude_code/ instead of the repository root. If your IDE cannot resolve imports (for example, unresolved imports in claude_agent_sdk examples), use the setup below.
PyCharm
- Open the
sloth-pythonproject. - Right-click
claude_code/. - Select Mark Directory As β Sources Root.
VS Code (recommended workspace settings)
This is the VS Code equivalent of PyCharm's Sources Root behavior.
- Open the
sloth-pythonproject folder in VS Code. - Create or edit
.vscode/settings.json. - Add/update the settings below:
- Reload VS Code window: Developer: Reload Window.
Why these paths?
./claude_code/claude_agent_sdk/src: resolves imports forsrc-layout packages in SDK examples./claude_code/claude_agent_sdk: resolves local package references in that subproject./claude_code: resolves imports from other learning folders underclaude_code/
Quick verification checklist
- Open a Python file under
claude_code/with previous import warnings. - Confirm unresolved import diagnostics disappear.
- In the VS Code command palette, run Python: Select Interpreter and verify it points to
.venv311(or your chosen project venv).
Note: python.analysis.extraPaths improves IDE analysis and autocomplete. It does not make invalid Python identifiers importable at runtime. For example, folders starting with digits such as 001_starter/ still cannot be imported as claude_code.001_starter... in a standard from ... import ... statement.
Automated testing is orchestrated through GitHub Actions workflows to ensure code quality and early defect detection.
Smoke Tests (Push + Pull Request)
- Run on pushes to
main/master - Run on pull requests targeting
main/masterwhile the PR is open - Include pytest
unit+apicoverage and the Robot calculator suite - Provide fast feedback on core regressions
Nightly Regression Suite (2 AM UTC)
- Runs from the scheduled workflow at
0 2 * * * - Installs Playwright browsers with dependencies
- Executes the full pytest suite and all Robot suites
- Attempts Allure report generation after the test run
The workflow uploads generated reports when available in the run's Artifacts section, including:
allure-report/temps/log.htmltemps/report.htmltemps/output.xml
- Navigate to the workflow run on GitHub
- Download the artifacts zip file
- Extract and open
report.htmlin your browser
Use these commands to mimic the core CI flow locally (see Running Tests for more command variants):
# Run smoke tests
python -m pytest -m "unit or api"
python -m robot robot_demo/calculator/
# Run a nightly-like full pass
playwright install
python -m pytest --tb=short --maxfail=5
python -m robot --outputdir temps robot_demo/sloth-python/
βββ ai_gen/ # AI + MCP prompt-to-test generation package
β βββ ai_client.py # OpenAI-compatible LLM client
β βββ cli.py # CLI entry point for generated Playwright tests
β βββ generator.py # Test generation orchestration
β βββ mcp_context.py # Page/context capture helpers
β βββ paths.py # Output path utilities
β βββ prompt_builder.py # Prompt construction
β
βββ ai_stock/ # AI stock analysis and reporting experiments
β βββ engine/ # Core stock analysis engine
β βββ llm/ # LLM integrations/prompts
β βββ report/ # Report generation utilities
β βββ stock_data/ # Market data models/loaders
β βββ stock_news/ # News ingestion and processing
β βββ strategies/ # Strategy implementations
β βββ utils/ # Shared helpers for ai_stock
β
βββ algorithms/ # Algorithms and data structures
β βββ backtracking/ # Backtracking algorithms
β βββ conversions/ # Number system conversions
β βββ data_structures/ # Trees, heaps, queues, stacks, tries, etc.
β βββ divide_and_conquer/ # Divide and conquer patterns
β βββ dynamic_programming/ # Dynamic programming examples
β βββ greedy/ # Greedy algorithms
β βββ machine_learning/ # ML implementations
β βββ maths/ # Mathematical algorithms
β βββ searches/ # Search algorithms
β βββ sliding_window/ # Sliding-window patterns
β βββ sorts/ # Sorting algorithms
β βββ strings/ # String algorithms
β βββ traversals/ # Traversal algorithms
β βββ two_pointers/ # Two-pointer patterns
β
οΏ½οΏ½ββ claude_code/ # Claude/Anthropic notebooks and MCP examples
β βββ 000_Architect_Foundations_Certification_Exam/ # Architect foundations practice exam
β βββ 001_starter/ # MCP starter project
β βββ 002_cli/ # CLI/MCP client-server demo
β βββ 003_notifications/ # Notification server/client example
β βββ 004_roots/ # MCP roots examples
β βββ 005_sampling/ # MCP sampling examples
β βββ 006_transport_http/ # HTTP transport example
β βββ 007_note_book/ # Claude API/tutorial notebooks
β βββ claude_agent_sdk/ # Claude Agent SDK local source/examples
β βββ anthropic_academy_courses.md
β βββ report.md
β
βββ fun_part/ # Educational & Fun Examples
β βββ bilibili/ # API demo projects
β βββ education_management/ # Education management examples
β βββ go_game/ # Game implementations
β βββ py_echart/ # Charting examples
β
βββ load_test_demo/ # JMeter and Postman load/API test assets
β βββ *.jmx # JMeter test plans
β βββ *.postman_environment.json / *.postman_collection.json
β
βββ pytest_demo/ # Pytest test suite
β βββ locators/ # Locator repository
β βββ tests/ # Test cases
β β βββ ai/ # AI-generation tests and generated Playwright scripts
β β βββ api/ # API tests
β β βββ ddt/ # Data-driven tests
β β βββ ui/ # UI tests
β β βββ unit/ # Unit tests
β βββ theatre-data.csv # Test data fixture
β
βββ robot_demo/ # Robot Framework demo suites
β βββ api/ # API demos
β βββ calculator/ # Calculator test suite
β βββ ddt/ # Data-driven Robot examples
β βββ tangerine_playwright/ # Tangerine UI suite
β βββ unit/ # Basic/unit Robot examples
β
βββ self_healing/ # Shared self-healing Playwright framework
β βββ dom_similarity.py # DOM similarity scoring
β βββ driver_manager.py # Browser driver helpers
β βββ element_finder.py # Resilient element lookup
β βββ locator_store.py # Locator persistence
β βββ self_healing.py # Self-healing workflow
β
βββ utils/ # Shared Utilities
β βββ config.py # Configuration management
β βββ csv_reader.py # CSV utilities
β βββ data_base/ # Database helpers
β βββ decorators.py # Decorator examples/utilities
β βββ google_analytics.py # Google Analytics helpers
β βββ litellm_client.py # LiteLLM client wrapper
β βββ playwright_mcp.py # Playwright MCP helpers
β βββ qtest_client.py # qTest API client
β βββ tik_token.py # Token counting helpers
β
βββ web_scraping/ # Web scraping and networking examples
β βββ hostname_ip_info_lookup.py
β βββ scrape_douban.py
β βββ scrape_google.py
β βββ scrape_weather_com_cn.py
β βββ scrape_yahoo_stock_price.py
β βββ screenshot_grabber.py
β βββ tcp_client.py
β βββ tcp_server.py
β
βββ .github/workflows/ # GitHub Actions CI/CD definitions
βββ .vscode/settings.json # Workspace Python/Pylance settings
βββ .env.example # Example local environment variables
βββ pyproject.toml # Tooling configuration
βββ pytest.ini # Pytest configuration
βββ readme.md # This file
βββ requirements.txt # Python dependencies
βββ security.md # Security policy
βββ uv.lock # uv lock file
- ai_gen/ - AI-assisted Playwright test generation using page context and LLM prompts
- ai_stock/ - AI-driven stock analysis, news ingestion, strategy logic, and report generation
- algorithms/ - Production-ready implementations for learning and reference
- claude_code/ - Claude learning tracks: MCP mini-projects, notebooks, and local Agent SDK examples
- load_test_demo/ - Load/performance assets for JMeter and Postman-based API testing
- pytest_demo/ - Complete pytest examples for unit, API, DDT, AI, and UI testing
- robot_demo/ - Robot Framework suites for API, calculator, DDT, unit, and Playwright UI workflows
- self_healing/ - Shared self-healing locator framework for Playwright-based automation
- utils/ - Reusable helpers for config, CSV, analytics, MCP/LLM integrations, qTest, and tokens
- web_scraping/ - Web scraping, screenshot, stock-price, and TCP networking examples
This project demonstrates industry best practices:
- Page Object Model (POM) - Maintainable UI test structure
- Fixtures & Dependency Injection - Pytest fixtures for test setup/teardown
- Marker-Based Organization - Categorize tests with markers such as
unit,api,ui, andplaywright - Parameterization - Run same test with multiple data sets
- Self-Healing - AI-powered locator recovery mechanism
- Type Hints - Type annotations for better IDE support and documentation
- Docstrings - Comprehensive module and function documentation
- Error Handling - Proper exception handling and logging
- Configuration Management - Externalized config for different environments
- DRY Principle - Reusable utilities and helper functions
- Automated Testing - Smoke tests on PRs, full regression nightly
- Report Generation - HTML and Allure reports for test visibility
- Artifact Management - Uploaded for debugging and report review
Issue: "ModuleNotFoundError" when running tests Windows (PowerShell):
.\.venv\Scripts\activate
pip install -r requirements.txtLinux/macOS (bash/zsh):
source .venv/bin/activate
pip install -r requirements.txtIssue: Playwright tests timeout
# Solution: Install browsers and retry a focused UI suite first
playwright install
python -m pytest pytest_demo/tests/ui/tangerine_playwright -qIssue: Locator selector not found in Playwright
- If the test uses the self-healing helpers, the framework may recover automatically
- Check
pytest_demo/locators/signinpage.jsonandpytest_demo/locators/signuppage.jsonfor updated selectors - Manual fix: Update the JSON or run with
-vflag for detailed logs
If you find Sloth Python useful β whether for learning, professional automation, or as a reference β please consider sponsoring!
Your support helps fund:
- π οΈ Ongoing maintenance and new features
- π€ AI/Playwright tooling improvements
- π More algorithm and test examples
- β±οΈ Faster responses to issues and PRs
Even a small monthly contribution makes a big difference. Thank you! π
Contributions are welcome and appreciated! Whether you're fixing bugs, adding features, improving documentation, or sharing new algorithm implementations, we'd love your help.
- Fork the repository on GitHub
- Create a feature branch with a descriptive name:
git checkout -b feature/add-new-algorithm git checkout -b fix/self-healing-bug git checkout -b docs/improve-readme
- Make your changes and ensure code quality:
- Follow PEP 8 style guidelines
- Add type hints for new functions
- Include docstrings and comments
- Write unit tests for new functionality
- Test your changes locally:
python -m pytest -m "unit or api" # Quick smoke test python -m pytest --tb=short # Full test suite
- Commit with clear messages:
git commit -m "feat: add new sorting algorithm" git commit -m "fix: correct self-healing locator logic"
- Push your branch and create a Pull Request on GitHub with:
- Clear title and description
- Reference to any related issues (e.g.,
Fixes #42) - Explanation of changes and why they're needed
- Algorithms - New algorithm implementations in
algorithms/(with tests) - Test Automation - Enhanced Robot Framework keywords, new UI test examples
- Self-Healing - Improvements to the locator recovery mechanism
- AI Generation - Enhancements to the MCP-driven test generator
- Documentation - README updates, code examples, tutorials
- CI/CD - Workflow improvements, additional test coverage
# Complete initial setup first (see Installation), then:
# Create and switch to feature branch
git checkout -b feature/your-feature-name
# Install dependencies (if adding new packages)
pip install -r requirements.txt
# Make your changes and test
python -m pytest
python -m robot robot_demo/calculator/
# Commit and push
git add .
git commit -m "feat: describe your changes"
git push origin feature/your-feature-name
# Create Pull Request on GitHub- Python - PEP 8, type hints, docstrings
- Tests - Pytest or Robot Framework with clear naming
- Documentation - Updated README.md or inline comments for complex logic
- Commit Messages - Clear, concise, use conventional commits (feat:, fix:, docs:, etc.)
- GitHub Discussions - Ask questions and share ideas
- GitHub Issues - Report bugs or request features
- Check existing issues - Your question might already be answered
Thank you for contributing! π
This project is licensed under the MIT License.
The MIT License permits:
- β Commercial use
- β Modification
- β Distribution
- β Private use
With the conditions:
β οΈ License and copyright notice must be included
- GitHub Issues - Report bugs and request features
- GitHub Discussions - Ask questions, share ideas, and discuss best practices
- Documentation - Check
README.mdand inline code comments for implementation details - Example Tests - Review
pytest_demo/androbot_demo/for working examples
Found a bug? Please open an issue with:
- Python version and OS (e.g., Python 3.14 on Windows 11)
- Steps to reproduce the issue
- Expected vs actual behavior
- Error message and stack trace (if applicable)
- Environment details (e.g., Playwright version, headless/headed mode)
Have an idea for improvement? Open an issue with:
- Clear description of the feature or problem
- Proposed solution or use case
- Alternative approaches you've considered (if any)
- Examples or code snippets showing the idea
Have questions or want to discuss testing strategies? Use GitHub Discussions to:
- Share test automation patterns and best practices
- Get advice on test framework choices
- Discuss algorithm implementations
- Connect with other contributors
We actively monitor both Issues and Discussionsβyour feedback helps improve this project!
- SECURITY.md - How to responsibly report security vulnerabilities
We provide issue templates to streamline reporting:
- Bug Reports - For issues and problems
- Feature Requests - For new functionality ideas
- Documentation - For improvements to docs
- Questions - For general inquiries (consider using Discussions instead)
- Python - Programming language
- Pytest - Testing framework
- Playwright - Modern browser automation
- Robot Framework - Keyword-driven testing
- OpenAI API - AI-powered test generation
This project draws on industry best practices from:
- Test automation communities
- Software engineering principles
- Algorithm research and implementations
We welcome feedback, contributions, and ideas from the community. If you find this project useful, please consider:
- β Starring the repository
- π Sharing it with others
- π€ Contributing improvements
- π¬ Providing feedback via Issues or Discussions
{ "python.defaultInterpreterPath": "${workspaceFolder}/.venv311/Scripts/python.exe", "python.analysis.extraPaths": [ "./claude_code/claude_agent_sdk/src", "./claude_code/claude_agent_sdk", "./claude_code" ] }