Skip to main content

Generate daily CI dashboards for any QE repo on LooperPro (Karate, Playwright, Monocart)

Project description

looper-dashboard

Generate daily CI dashboards for any QE repository on the LooperPro CI platform.

Supports three test suite types:

Suite Report format Default history
karate karate-summary-json.txt + per-feature detail 14 days
playwright pw-summary-report.json 14 days
playwright-monocart monocart-report/index.html (zlib-compressed) 30 days

Requirements

Requirement Why
Python 3.11+ Runtime
mcp-cli (optional) Auto-refreshes LooperPro auth tokens
code-puppy (optional) Powers the AI failure analysis step

Authentication is read from ~/.mcp-cli/tokens.json or ~/.code_puppy/puppy.cfg automatically — no extra config needed.


Installation

pip install looper-dashboard

Or from the repo:

pip install ./looper-dashboard

Quick Start

1. Scaffold a config

# Creates daily_flows.yml in the current directory
looper-dashboard --init karate
looper-dashboard --init playwright
looper-dashboard --init playwright-monocart

Edit the generated file to add your LooperPro job names and flow names.

2. Generate the dashboard

looper-dashboard --suite karate --config daily_flows.yml --open
looper-dashboard --suite playwright --config daily_flows.yml --open
looper-dashboard --suite playwright-monocart --config daily_flows.yml --open

3. Override the repo SCM URL

looper-dashboard --suite karate \
  --config daily_flows.yml \
  --scm-url https://gecgithub01.walmart.com/my-org/my-repo.git \
  --open

daily_flows.yml format

Karate / Playwright

# SCM URL of the repository being monitored
scm_url: https://gecgithub01.walmart.com/my-org/my-repo.git

jobs:

  # LooperPro job name → list of flow names to monitor
  my-org/my-repo-tests:
    - my-flow-dev
    - my-flow-stage
    - my-flow-prod

  my-org/my-repo-health-checks:
    - health-dev
    - health-stage

Playwright-Monocart (with explicit job_ids)

Some repos' jobs cannot be discovered by SCM URL in LooperPro. Add a job_ids section with the UUIDs from the LooperPro UI:

scm_url: https://gecgithub01.walmart.com/my-org/my-repo.git

# Explicit job IDs (look these up in the LooperPro UI)
job_ids:
  my-monocart-job: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

jobs:

  my-monocart-job:
    - e2e-flow-dev
    - e2e-flow-stage

CLI Reference

looper-dashboard [OPTIONS]

Options:
  --suite SUITE           Test suite type: karate, playwright, playwright-monocart  [required]
  --config PATH           Path to daily_flows.yml  [required]
  --scm-url URL           Override scm_url from daily_flows.yml
  --output PATH           Output HTML file path (default varies by suite)
  --days N                Days of build history to fetch (default: 14 or 30)
  --open                  Auto-open dashboard in browser when done
  --no-ai                 Skip the AI failure analysis step
  --no-details            Skip fetching test summary details (faster, status only)
  --save-failures PATH    Path to save failures JSON
  --analysis-json PATH    Use a pre-computed AI analysis JSON instead of running live AI
  --init SUITE            Scaffold a starter daily_flows.yml and exit

  -h, --help              Show help and exit

AI Analysis

When --no-ai is not set, the orchestrator:

  1. Saves a *-failures.json summary of all failing flows
  2. Invokes code-puppy to classify each failure as one of:
    • service_regression — likely a code regression in the app
    • environment_issue — infra/network/auth failure
    • test_issue — stale selector or bad test data
    • flaky — intermittent, no clear pattern
  3. Regenerates the dashboard HTML with an AI analysis panel embedded

If code-puppy is not installed, the AI step is skipped gracefully.


Publishing

To public PyPI

cd looper-dashboard
pip install hatch
hatch build          # creates dist/looper_dashboard-0.1.0.tar.gz and .whl
hatch publish        # prompts for PyPI API token

To Walmart internal PyPI registry

Add the registry to ~/.config/hatch/config.toml:

[publish.index.repos.internal]
url = "https://your-internal-pypi-registry/simple/"

Then:

hatch publish --repo internal

Onboarding a new repo

  1. Create a daily_flows.yml for the target repo (use --init to scaffold)
  2. Add job and flow names (find them in LooperPro or via mcp-cli)
  3. Run looper-dashboard --suite <type> --config daily_flows.yml --open

No code changes required — the package is entirely configuration-driven.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

looper_dashboard-0.1.0.tar.gz (34.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

looper_dashboard-0.1.0-py3-none-any.whl (55.5 kB view details)

Uploaded Python 3

File details

Details for the file looper_dashboard-0.1.0.tar.gz.

File metadata

  • Download URL: looper_dashboard-0.1.0.tar.gz
  • Upload date:
  • Size: 34.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for looper_dashboard-0.1.0.tar.gz
Algorithm Hash digest
SHA256 28c5827d04f8873e2bb6a5f7ec5bea9e4b388a799afacb2bf37008e4e79c2902
MD5 0e9a89d31c50b6fbccbab115ae2b20e4
BLAKE2b-256 950fcac1a7e9e809609e4d1a8307b8e83f64a882ad5cca66f5ee56b867a99c9e

See more details on using hashes here.

File details

Details for the file looper_dashboard-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for looper_dashboard-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e5cecaaef3bbc519e992ff5d085de77aebf7c191455b8d19afae0046600fa80
MD5 ef3026a3ff5d1e58ed8394a1f87b93b6
BLAKE2b-256 438260190c35dcfbc79d6da1530e3442f80fa39fe58222afca1d6556dc911328

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page