QualityPilot

3-minute setup

Install

Pick your stack. Each path: install one package, set one env var, ship.

Prerequisite — get an API key

  1. Sign in at qlens.dev with GitHub (free).
  2. Go to /dashboard/keys → "Create API key" (Pro+ plans).
  3. Copy the qlens_* value (shown once). Save as QLENS_API_KEY in CI secrets.

Generate workflow YAML

Pick your stack — we'll output a ready-to-paste .github/workflows/qualitypilot.yml.

# Generated by QualityPilot YAML wizard on 2026-05-28.
# Docs: https://www.qlens.dev/docs/install
# Framework: jest | Package manager: npm
# Save as .github/workflows/qualitypilot.yml and add QLENS_API_KEY
# under Settings -> Secrets and variables -> Actions.
name: QualityPilot — Jest

on:
  push:
    branches: [main]
  pull_request:
  workflow_dispatch:

permissions:
  contents: read

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 0
      - name: Setup Node.js
        uses: actions/setup-node@v5
        with:
          node-version: 20
          cache: npm
      - name: Install dependencies
        run: |
          npm ci
          npm install --no-save @qlens/jest-reporter
      - name: Run tests
        env:
          QLENS_API_KEY: ${{ secrets.QLENS_API_KEY }}
        run: |
          npx jest --reporters=default --reporters=@qlens/jest-reporter

Save as .github/workflows/qualitypilot.yml in your repo, then add QLENS_API_KEY under Settings → Secrets and variables → Actions.

Or wire it in manually

1. Install

npm install --save-dev @qlens/jest-reporter

2. Configure jest.config.js

module.exports = {
  reporters: [
    'default',
    ['@qlens/jest-reporter', {
      sendCases: true,    // optional, include per-case data
      maxCases: 5000,     // optional, hard cap
    }],
  ],
};

Playwright

package →

1. Install

npm install --save-dev @qlens/playwright-reporter

2. Configure playwright.config.ts

import { defineConfig } from "@playwright/test";

export default defineConfig({
  reporter: [
    ["list"],
    ["@qlens/playwright-reporter", {
      sendCases: true,
      maxCases: 5000,
    }],
  ],
});

Tests that pass on retry are counted as flaky (not passed). Surfaces as a flakiness trend on the dashboard.

1. Install

npm install --save-dev @qlens/cypress-reporter

2. Configure cypress.config.ts

import { defineConfig } from "cypress";
import { registerQlensReporter } from "@qlens/cypress-reporter";

export default defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      registerQlensReporter(on, {
        sendCases: true,
        maxCases: 5000,
      });
      return config;
    },
  },
});

Wires into Cypress's plugin events (after:spec / after:run) — not the Mocha reporter slot — so a single aggregated upload covers the whole run. Tests that pass on retry are counted as flaky.

1. Install

pip install qlens-pytest-reporter

2. Configure (no config — auto-registers via pytest11)

# Just install. Set env vars and run pytest as usual:
export QLENS_API_KEY=qlens_...
export GITHUB_REPOSITORY=owner/name
export QLENS_SEND_CASES=1   # optional
export QLENS_MAX_CASES=5000 # optional
pytest

Plays nicely with pytest-rerunfailures: passes after a rerun are counted as flaky.

Or: just the PR comment (no install)

Want the per-PR test scenarios without the dashboard? Add the [QA Advisor GitHub Action](https://github.com/marketplace/actions/qa-advisor-pr-test-coverage-analysis) to .github/workflows/qa-advisor.yml:

name: QA Advisor

on:
  pull_request:
    types: [opened, synchronize, reopened]

permissions:
  contents: read
  pull-requests: write

jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0
      - uses: i-kosheliev/qa-advisor-action@v1
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          min-priority: nice-to-test

Local heuristic, no LLM, no API key. 25 change patterns.

CI envs we detect

  • GitHub Actions — GITHUB_REPOSITORY, GITHUB_SHA, GITHUB_REF_NAME (auto)
  • GitLab CI — CI_COMMIT_SHA, CI_COMMIT_REF_NAME
  • CircleCI — CIRCLE_SHA1, CIRCLE_BRANCH
  • Jenkins — JENKINS_URL

Verify it worked

Run the test suite once with QLENS_API_KEY set. The reporter prints [qlens] uploaded N tests at the end. Then go to /dashboard and you'll see the run.

Bonus: README badge

After your first scan, embed the live grade in your repo README:

[![Test Health](https://www.qlens.dev/badge/owner/repo.svg)](https://www.qlens.dev/scan/owner/repo)

Related docs