Welcome! Thank you for considering contributing to Schemathesis. Your feedback and contributions are invaluable to us!
For code contributions: Make sure you have the following installed:
- Python 3.10 or higher
prektoxcurl(required by some integration tests; install via your OS package manager, e.g.,apt install curlorbrew install curl)
uv pip install prek toxOptional but recommended: Install just for convenient development commands:
# macOS
brew install just
# Linux
cargo install just
# or use your package managerSee just --list for all available commands like just test, just check, just docs, etc.
For documentation contributions: No specific prerequisites are required.
If you'd like to suggest a feature or provide feedback, feel free to submit an issue. When submitting your issue, it helps to provide:
- Title: Write a simple and descriptive title to identify your suggestion.
- Details: Provide as many details as possible. Explain your context and how you envision the feature working.
- Usefulness: Explain why this feature or improvement would be beneficial.
- Scope: Keep the scope of the feature narrow to make it easier to implement. For example, focus on a specific use-case rather than a broad feature set.
If you encounter a bug, please report it in the issue tracker. When filing a bug report, please include:
- Title: Write a simple and descriptive title to identify the problem.
- Reproduction Steps: Describe the exact steps to reproduce the problem in as much detail as possible.
- Observed Behavior: Describe the behavior you observed and what makes it a problem.
- Expected Behavior: Explain which behavior you expected to see instead and why.
- Versions: Include Python and Schemathesis versions. Also, confirm if the issue persists in the latest version of Schemathesis.
- Additional Context: Logs, error messages, or screenshots are often very helpful.
What happens next?: After you submit an issue, we aim to review and respond as soon as possible. If you don't receive a response within a few days, feel free to add a new comment to the thread to bring it to our attention again.
We welcome contributions to the codebase! If you'd like to submit a pull request (PR), please follow these steps:
- Fork the Repository: Fork the Schemathesis repository on GitHub.
- Install Development Tools: Install the development dependencies using the following command:
uv pip install -e ".[dev]"This will install all the necessary packages for development, including those for documentation and tests.
- Set Up Pre-commit Hooks: Enable prek.
prek install- Branching: Create a new branch and switch to it. Target your pull request to the
masterbranch of the main repository. - Coding Standards: Follow PEP-8 for naming conventions and use ruff for code formatting.
- Write Tests: Preferably, write integration tests that run the whole Schemathesis CLI.
- Run Tests:
# Using tox
tox -e py311
# Or using just
just test- Update Changelog: Add a corresponding entry to
CHANGELOG.mdlocated in the repository root. - Commit Your Changes: Use the Conventional Commits format. For example, features could be
feat: add new validation featureand bug fixes could befix: resolve issue with validation.
What happens next?: After submitting, your pull request will be reviewed. If you don't hear back within a few days, feel free to add a comment to the pull request to draw our attention.
We recommend installing Schemathesis with the "dev" extra for all the dependencies needed for documentation:
uv pip install -e ".[dev]"To preview your changes:
mkdocs serveThen open the URL shown in the terminal (typically http://127.0.0.1:8000/) in your browser.
For more informal discussions or questions, join us on Discord.
At present, the core developers are:
- Dmitry Dygalo (@Stranger6667)
We prefer to keep all communications in English.
Thanks!