Open-Source Test Automation Framework

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.

qlty/classes/integrations/custom_integration.py

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

Slack Available
Microsoft Teams Planned
Email Summaries Planned

Test Management

TestRail Available
Jira / Xray Planned
Zephyr Planned

CI/CD & Infrastructure

GitHub Actions Available
Jenkins Available
SauceLabs Available

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 stack
Get Started with QLTY

Ready 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.