The QLTY Framework
A Python-based test automation framework built on Selenium. Cross-platform web and mobile testing with built-in CI/CD integration, Slack reporting, and TestRail sync. One command to run everything.
Core Capabilities
Built for Real-World Test Automation
Everything you need to build, run, and maintain automated tests at scale, without the bloat.
Cross-Platform Testing
Run tests on Chrome, Firefox, iOS, and Android from a single framework. Supports both headless and headed browser modes for local development and CI environments.
Page Object Model
Built-in POM architecture for clean, maintainable test code. Page structure is separated from test logic so your tests stay readable as your application grows.
CI/CD Native
Designed to plug into GitHub Actions, Jenkins, and GitLab CI from the start. Runs headless in containers, exits with proper codes for pipeline gating.
Built-in Reporting
Automatic Slack notifications and TestRail integration out of the box. Your team gets real-time visibility into test results without any extra setup.
CLI-Driven
One command to run everything. Configure platform, headless mode, and integrations via simple CLI flags. No complex configuration files or IDE dependencies.
Extensibility
Add What You Need, When You Need It
The framework uses a registry and lifecycle hook system for integrations. Extend the Integration base class, override the hooks you need, and register it. The framework handles the rest: validation at startup, error isolation between integrations, and a shared context so integrations can communicate with each other.
Lifecycle hooks
Three hooks cover the full test lifecycle: on_run_start, on_test_end, and on_run_end. Override only what you need.
Registry with error isolation
Integrations that fail validation are automatically deregistered. One broken integration never takes down the rest of your test run.
Shared context between integrations
Integrations can pass data to each other through a shared context. For example, TestRail stores its run ID so Slack can link directly to it.
from qlty.classes.integrations.base_integration import Integration
class CustomIntegration(Integration):
def on_run_start(self):
self._validate_connection()
def on_test_end(self, test_case, result):
self._push_result(test_case, result)
def on_run_end(self, results, run_id,
elapsed, log_path, context):
self._send_summary(results, context)
Extend the base class, override the hooks you need. The registry handles validation, error isolation, and dispatch.
Integrations
Connects to Your Existing Stack
Out-of-the-box integrations so test results flow into the tools your team already uses.
Reporting
Test Management
CI/CD & Infrastructure
Custom Integrations
Need something specific? We'll build it.
Internal reporting platforms, custom dashboards, proprietary tools. If your team uses it, we can integrate it. You own the code, and it works just like any built-in integration.
Talk to us about your stackReady to Automate With Confidence?
Try the framework on your own or let us help you build a complete test automation strategy tailored to your team.