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:
- Saves a
*-failures.jsonsummary of all failing flows - Invokes
code-puppyto classify each failure as one of:service_regression— likely a code regression in the appenvironment_issue— infra/network/auth failuretest_issue— stale selector or bad test dataflaky— intermittent, no clear pattern
- 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
- Create a
daily_flows.ymlfor the target repo (use--initto scaffold) - Add job and flow names (find them in LooperPro or via
mcp-cli) - 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28c5827d04f8873e2bb6a5f7ec5bea9e4b388a799afacb2bf37008e4e79c2902
|
|
| MD5 |
0e9a89d31c50b6fbccbab115ae2b20e4
|
|
| BLAKE2b-256 |
950fcac1a7e9e809609e4d1a8307b8e83f64a882ad5cca66f5ee56b867a99c9e
|
File details
Details for the file looper_dashboard-0.1.0-py3-none-any.whl.
File metadata
- Download URL: looper_dashboard-0.1.0-py3-none-any.whl
- Upload date:
- Size: 55.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e5cecaaef3bbc519e992ff5d085de77aebf7c191455b8d19afae0046600fa80
|
|
| MD5 |
ef3026a3ff5d1e58ed8394a1f87b93b6
|
|
| BLAKE2b-256 |
438260190c35dcfbc79d6da1530e3442f80fa39fe58222afca1d6556dc911328
|