A pytest plugin that integrates with QAStudio.dev test management platform.
- 🔄 Automatic test result reporting to QAStudio.dev
- 📊 Real-time test run tracking
- 🏷️ Test case linking via markers or test IDs
- 📸 Screenshot and attachment support
- 🔧 Configurable via pytest.ini, command line, or environment variables
- 🎯 Batch result submission for performance
- 🛡️ Silent mode - won't fail tests if API is unavailable
- 📝 Error code snippets with context around failure points
- 📍 Precise error location tracking (file, line, column)
- 📤 Console output capture (stdout/stderr)
- 🔍 Enhanced debugging context for test failures
pip install qastudio-pytest[pytest]
qastudio_api_url = https://qastudio.dev/api
qastudio_api_key = your-api-key
qastudio_project_id = your-project-id
qastudio_environment = CIexport QASTUDIO_API_URL=https://qastudio.dev/api
export QASTUDIO_API_KEY=your-api-key
export QASTUDIO_PROJECT_ID=your-project-id
export QASTUDIO_ENVIRONMENT=CIpytest --qastudio-api-url=https://qastudio.dev/api \
--qastudio-api-key=your-api-key \
--qastudio-project-id=your-project-idimport pytest
@pytest.mark.qastudio_id("QA-123")
def test_login():
assert user.login("user", "pass")def test_QA123_login():
"""Test case QA-123"""
assert user.login("user", "pass")def test_login():
"""
Test user login functionality
QAStudio ID: QA-123
"""
assert user.login("user", "pass")import pytest
@pytest.mark.qastudio_id("QA-456")
@pytest.mark.qastudio_priority("high")
@pytest.mark.qastudio_tags("smoke", "authentication")
def test_important_feature():
assert True| Option | Environment Variable | Description | Default |
|---|---|---|---|
qastudio_api_url |
QASTUDIO_API_URL |
QAStudio.dev API URL | https://qastudio.dev/api |
qastudio_api_key |
QASTUDIO_API_KEY |
API authentication key | Required |
qastudio_project_id |
QASTUDIO_PROJECT_ID |
Project ID | Required |
qastudio_environment |
QASTUDIO_ENVIRONMENT |
Environment name | default |
qastudio_test_run_name |
QASTUDIO_TEST_RUN_NAME |
Custom test run name | Auto-generated |
qastudio_test_run_id |
QASTUDIO_TEST_RUN_ID |
Existing test run ID | None |
qastudio_create_test_run |
QASTUDIO_CREATE_TEST_RUN |
Create new test run | true |
qastudio_batch_size |
QASTUDIO_BATCH_SIZE |
Results batch size | 10 |
qastudio_silent |
QASTUDIO_SILENT |
Fail silently on API errors | true |
qastudio_verbose |
QASTUDIO_VERBOSE |
Enable verbose logging | false |
qastudio_include_error_snippet |
QASTUDIO_INCLUDE_ERROR_SNIPPET |
Include error code snippet | true |
qastudio_include_error_location |
QASTUDIO_INCLUDE_ERROR_LOCATION |
Include precise error location | true |
qastudio_include_test_steps |
QASTUDIO_INCLUDE_TEST_STEPS |
Include test execution steps | true |
qastudio_include_console_output |
QASTUDIO_INCLUDE_CONSOLE_OUTPUT |
Include console output | false |
The plugin automatically captures rich debugging context for failed tests:
When a test fails, the plugin captures the relevant code snippet showing where the error occurred:
def test_calculation():
result = calculate(5, 0) # This line will be captured in the error snippet
assert result == 10Disable with:
[pytest]
qastudio_include_error_snippet = falsePrecise error location information (file path, line number) is automatically captured:
{
"errorLocation": {
"file": "tests/test_example.py",
"line": 42,
"column": 0
}
}Disable with:
[pytest]
qastudio_include_error_location = falseCapture stdout and stderr from test execution (disabled by default to avoid sensitive data):
[pytest]
qastudio_include_console_output = trueOr via command line:
pytest --qastudio-include-console-outputpytest -n auto --qastudio-api-key=your-api-keyThe plugin handles parallel test execution automatically.
- name: Run Tests
run: |
pytest --junitxml=report.xml
env:
QASTUDIO_API_KEY: ${{ secrets.QASTUDIO_API_KEY }}
QASTUDIO_PROJECT_ID: ${{ secrets.QASTUDIO_PROJECT_ID }}
QASTUDIO_ENVIRONMENT: CItest:
script:
- pytest
variables:
QASTUDIO_API_KEY: $QASTUDIO_API_KEY
QASTUDIO_PROJECT_ID: $QASTUDIO_PROJECT_ID
QASTUDIO_ENVIRONMENT: CIA complete Playwright test framework example is available in examples/playwright_tests/:
# Navigate to example directory
cd examples/playwright_tests
# Install dependencies
pip install -r requirements.txt
playwright install chromium
# Run the tests
./run_tests.sh
# Or run directly with pytest
pytest -vThe example demonstrates:
- ✅ Testing the QAStudio.dev website
- ✅ Automatic screenshot capture
- ✅ Playwright trace recording (
.zipfiles) - ✅ Integration with qastudio-pytest reporter
- ✅ Test case linking with
@pytest.mark.qastudio_id()
See examples/playwright_tests/README.md for detailed documentation.
# Clone repository
git clone https://github.com/QAStudio-Dev/playwright-reporter-python.git
cd playwright-reporter-python
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode
pip install -e .[dev]
# Run tests
pytest tests/
# Run linting
black src/ tests/
flake8 src/ tests/
mypy src/
# Build package
python -m buildThis project is licensed under the GNU Affero General Public License v3.0 or later (AGPLv3+) - see LICENSE file for details.
- 📧 Email: ben@qastudio.dev
- 🐛 Issues: https://github.com/QAStudio-Dev/playwright-reporter-python/issues
- 📖 Documentation: https://qastudio.dev/docs