Skip to main content

innoHarmony™ by Innominds — Unified Quality Engineering Framework

PyPI version Python versions pytest plugin Playwright 1.54 MCP: 19 tools by Innominds

Test the web app, the API behind it, the data it writes and the devices it talks to —
with one pytest-native framework, one configuration model and one set of reports.


Why innoHarmony™

Quality teams usually stitch together a UI tool, an API tool, a data-diff script and a hardware harness, each with its own conventions and reports. innoHarmony™ puts all of them on pytest + Playwright with a shared page-object model, YAML configuration, observability and a release quality gate — so a 5-person team and a 100-person programme work the same way.

  • One workflow — UI, API, database, file and device tests are ordinary pytest tests.
  • Enterprise by default — multi-project layouts, environment overlays, org → business-unit → project governance, secrets from environment variables or vaults, never from code.
  • Resilient — self-healing locators, retries and flaky-test detection cut maintenance noise.
  • Decision-ready — every run ends in reports for engineers, QA and leadership, plus an optional PASS / WARN / BLOCK verdict your pipeline can act on.
  • Opt-in everything — install only the extras you need; features are off until enabled in YAML.

innoHarmony capabilities: Web UI, API, data validation, device and embedded testing, self-healing locators, release quality gates, observability, AI-ready MCP server

Install

pip install innoharmony
playwright install chromium        # or: playwright install  (all browsers)

Requires Python 3.11+. Add extras for the capabilities you use:

Extra Adds
innoharmony[data-comparison] Excel / CSV / JSON comparison and HTML mismatch reports (pandas, openpyxl)
innoharmony[postgresql] · [mysql] · [sqlserver] · [oracle] · [db2] · [informix] · [snowflake] · [mongodb] Database drivers (SQLite needs none) — or [all-databases]
innoharmony[graphql-client] · [soap-client] · [contracts] · [pact] GraphQL, SOAP, OpenAPI / JSON-Schema and consumer-driven contract testing
innoharmony[accessibility] WCAG checks with axe-core
innoharmony[devices] Every device transport and the simulator (or pick devices-serial, devices-mqtt, devices-can, devices-ble, devices-adb, …)
innoharmony[mcp] MCP server for AI assistants
innoharmony[allure-reporting] · [html-reporting] · [dashboard] · [telemetry] · [prometheus] Reporting, live dashboard and OpenTelemetry / Prometheus export
innoharmony[vault] · [aws] · [azure] HashiCorp Vault, AWS Secrets Manager, Azure Key Vault
innoharmony[all] API clients, data comparison, all databases and reporting in one go

Quick start

innoharmony init my-qe-suite       # scaffold a suite with runnable demos
cd my-qe-suite

export INNOHARMONY_TEST_USERNAME=standard_user    # demo login for saucedemo.com
export INNOHARMONY_TEST_PASSWORD=secret_sauce

pytest tests/demo/functional/api tests/demo/functional/ui

On Windows PowerShell, set the credentials with:

$env:INNOHARMONY_TEST_USERNAME = "standard_user"
$env:INNOHARMONY_TEST_PASSWORD = "secret_sauce"

The scaffold contains configuration, page objects and demo UI, API and database tests. The data-comparison demos also need pip install "innoharmony[data-comparison]".

How it works: write pytest tests and page objects, configure per environment, run locally or in CI, decide with reports and a quality-gate verdict

What tests look like

Web UI — locators live in page objects; tests read like the business flow.

import pytest
from innoharmony import BasePage


class LoginPage(BasePage):
    USERNAME = "#user-name"
    PASSWORD = "#password"
    SUBMIT = "#login-button"

    def login(self, user: str, password: str) -> None:
        self.fill(self.USERNAME, user)
        self.fill(self.PASSWORD, password)
        self.click(self.SUBMIT)


@pytest.mark.smoke
def test_login(page, runtime_options, login_test_data):
    login = LoginPage(page, runtime_options["resilience_policy"])
    login.navigate(runtime_options["base_url"])
    user = login_test_data["valid_user"]          # values resolved from ${ENV_VAR} placeholders
    login.login(user["username"], user["password"])

API — an HTTP client with retries, auth and chainable assertions.

from innoharmony import ApiClient, ResponseValidator


def test_create_order(base_url):
    api = ApiClient(base_url=base_url, retries=3)
    response = api.post("/orders", json_body={"sku": "A-100", "qty": 2})
    ResponseValidator.assert_status_code(response, 201)
    ResponseValidator.assert_json_has_keys(response, ["id", "status"])
    ResponseValidator.assert_response_time_less_than(response, 800)

Data — compare extracts, files and tables with keys, tolerances and column mappings.

from utils.data_comparison_utils import compare_excel_files


def test_migration_matches_legacy():
    result = compare_excel_files(
        "legacy_extract.xlsx", "new_platform_extract.xlsx",
        key_columns=["employee_id"], float_tolerance=0.01, ignore_fields={"updated_at"},
    )
    assert result.passed, result.summary    # interactive HTML report at result.report_path

Devices — the same test runs against a digital twin or real hardware.

import pytest


@pytest.mark.device
@pytest.mark.requires_dut(capability="thermostat")
def test_heats_up(dut):
    dut.set_target(22)
    dut.wait_until_temperature(22, timeout=900)
pytest -m device                                   # simulated twin
pytest -m device --innoharmony-dut-mode hil        # real hardware, same test

Run it your way

Goal Command
Pick environment and browser pytest --ih-env qa --ih-browser firefox (or set INNOHARMONY_ENV=qa)
Watch the browser pytest --ih-headed
Emulate a phone pytest --ih-device "iPhone 13"
Run in parallel pytest -n auto
Run a suite by marker pytest -m smoke · pytest -m regression
Check the environment first pytest --innoharmony-readiness-check
Gate the release pytest --innoharmony-quality-gate — exits 1 on BLOCK
Enforce suite ordering pytest --innoharmony-orchestration
Update visual baselines pytest --innoharmony-update-snapshots

Every --innoharmony-<name> option has the short alias --ih-<name>.

CI templates for GitHub Actions, Jenkins and Azure DevOps are included (innoharmony docs ci).

AI-ready: MCP server

innoHarmony ships a Model Context Protocol server so AI assistants such as Claude and GitHub Copilot can discover the framework API, list tests and page objects, read resolved configuration and test results, and get a release recommendation. Every tool is also a terminal command.

pip install "innoharmony[mcp]"
innoharmony-mcp serve                         # MCP server (stdio)
innoharmony-mcp search-methods tolerance      # the same tools from the terminal
innoharmony-mcp get-release-recommendation

Documentation

Guides are installed with the package — no network or repository access needed:

innoharmony docs                  # list every topic
innoharmony docs quickstart       # print one
Topic Covers
quickstart · install · cli First test in 10 minutes, installation, every command and --innoharmony-* option
multi-project · test-organization · qe-visual-guide Suite layout at scale and the page-object model
api-testing · database · data-validation REST / GraphQL / SOAP, database drivers and assertions, data comparison
architecture · resilience · observability How the layers fit, self-healing locators, metrics and persona reports
secrets-governance · plugins · ci · mcp Secrets and org policy, plugin authoring, pipelines, the MCP server

Support

innoHarmony is developed and supported by Innominds. For onboarding, enterprise support or custom integrations, contact RKonduru@innominds.com or visit innominds.com.

Engineered by Innominds

innoHarmony™ is a trademark of Innominds. © Innominds. Released under the MIT License.

Metadata

Release files for innoharmony 5.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for innoharmony 5.4.0
File Size Uploaded Provenance
innoharmony-5.4.0.tar.gz 854.2 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for innoharmony 5.4.0
File Interpreter ABI Platform
innoharmony-5.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.5 MB

Release files / innoharmony-5.4.0.tar.gz

Download URL innoharmony-5.4.0.tar.gz
Size 854.2 kB
Tags Source
SHA-256 checksum
How to use checksums
6aa5599fc2f2a3d8d674bf3b00fb04774c1f27b38b9eed761531b5b375c9e3fb
BLAKE2b-256 checksum
How to use checksums
bb37bd443e8c3766a3491715e0a0bf10ed7fde0ce3643620ef6c2b73b5182432
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.

Transparency log

Release files / innoharmony-5.4.0-py3-none-any.whl

Download URL innoharmony-5.4.0-py3-none-any.whl
Size 632.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30d57861944cc12e3e0f2e63fcd0fe43b040bcfa2146075ee67e72d1d8da902c
BLAKE2b-256 checksum
How to use checksums
60e24dd6fc35c9624913e18badf1999fed4bc446e96dd280b6a8ba58de46cb1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.

Transparency log

Security for innoharmony 5.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for innoharmony-5.4.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page