ripple-qa
v0.2.0
Published
Release impact analyzer for QA engineers — cross-references Jira tickets with Confluence docs and your test suite to produce a structured test impact report
Maintainers
Readme
Ripple
Release impact analyzer for QA/SDET engineers. Given a Jira ticket or release, Ripple cross-references your Confluence documentation and existing test suite to produce a structured report: what changed, what's at risk, which tests to run, and where the coverage gaps are.
Installation
npm install -g ripple-qaQuick Start
# 1. Run the setup wizard
ripple init
# 2. Add your API keys to .env
cp .env.example .env
# edit .env with your keys
# 3. Analyze a ticket
ripple analyze --ticket PROJ-1234Example Output
# Ripple Analysis — PROJ-1234
Add rate limiting to the /payments API endpoint
Analyzed: 2024-03-15T14:32:00.000Z
## Risk Level: HIGH
This is a high-priority Bug affecting the payments component, which is core to checkout flows.
## Impacted Areas
| Area | Confidence | Reason |
|------|-----------|--------|
| Payments API | HIGH | Directly modified endpoint |
| Checkout Flow | HIGH | Payments API is called during checkout |
| Fraud Detection | MEDIUM | Rate limiting may interact with retry logic in fraud checks |
## Recommended Tests (6)
### HIGH Priority
- **TC-001: Successful payment with valid card** (Payments)
→ Core happy path for the modified endpoint
- **TC-002: Payment declined — insufficient funds** (Payments)
→ Ensures error handling still functions under rate limiting
### MEDIUM Priority
- **TC-015: Checkout end-to-end flow** (Checkout)
→ Rate limiting could break checkout if limits are too aggressive
## Coverage Gaps
These scenarios have no existing test case:
1. **Rate limit threshold is enforced (e.g. >100 req/min returns 429)**
Suggested: Verify /payments returns HTTP 429 after exceeding rate limit within a time window
2. **Rate limit resets correctly after the window expires**
Suggested: Confirm a client blocked by rate limiting can retry successfully after the cooldown period
## Context
- Wiki pages referenced: Payments Architecture, Checkout Flow Overview
- Test cases evaluated: 87
- Test cases recommended: 6
---
Generated by Ripple • claude-sonnet-4-6CLI Reference
# Single ticket
ripple analyze --ticket PROJ-1234
# Multiple tickets
ripple analyze --ticket PROJ-1234 PROJ-1235 PROJ-1236
# Full release
ripple analyze --release v2.4.1
# Override output format
ripple analyze --ticket PROJ-1234 --output json
ripple analyze --ticket PROJ-1234 --output both
# Save report to file
ripple analyze --ticket PROJ-1234 --save
# Saves to ./ripple-reports/PROJ-1234-<timestamp>.md
# Verbose mode (shows raw source data)
ripple analyze --ticket PROJ-1234 --verboseConfiguration Reference
All non-secret configuration lives in ripple.config.json (safe to commit).
| Field | Description |
|-------|-------------|
| jira.url | Your Atlassian Cloud base URL (e.g. https://yourcompany.atlassian.net) |
| jira.email | Email address associated with your Jira API token |
| jira.projectKey | Jira project key (e.g. PROJ) |
| confluence.url | Confluence base URL (usually same as Jira for Atlassian Cloud) |
| confluence.spaceKey | Confluence space key to search for related docs |
| testSuite.type | Currently only csv is supported |
| testSuite.path | Relative path to your CSV file from the project root |
| testSuite.columns.name | CSV column header for the test case name |
| testSuite.columns.area | CSV column header for the feature area |
| testSuite.columns.priority | CSV column header for the priority (High/Medium/Low) |
| llm.provider | LLM provider: claude (default), github, openai, ollama |
| llm.model | Model ID — default depends on provider (e.g. claude-sonnet-4-6, llama3.1:8b) |
| llm.baseURL | API base URL — required for ollama, optional for openai |
| llm.apiKeyEnv | Env variable name holding the API key — not used for ollama |
| output.format | Default output format: markdown, json, or both |
| output.saveReports | If true, always saves reports without needing --save |
| output.reportsDir | Directory to write saved reports — default: ./ripple-reports |
Environment Variables
Store API keys in a .env file (never commit this file).
| Variable | Description |
|----------|-------------|
| ANTHROPIC_API_KEY | API key from console.anthropic.com |
| JIRA_API_TOKEN | Jira API token from your Atlassian account settings |
| CONFLUENCE_API_TOKEN | Confluence API token (usually the same as your Jira token for Atlassian Cloud) |
Supported Sources
| Source | v1 | Planned | |--------|----|---------| | Jira Cloud | ✅ | | | Jira Server/Data Center | | ✅ | | Confluence Cloud | ✅ | | | Confluence Server | | ✅ | | CSV test suite | ✅ | | | TestRail | | ✅ | | Zephyr Scale | | ✅ | | GitHub Issues | | ✅ |
Supported LLM Providers
| Provider | Notes |
|----------|-------|
| Claude (Anthropic) | Default — set ANTHROPIC_API_KEY |
| GitHub Models | Uses your GitHub token — set GITHUB_TOKEN |
| OpenAI / compatible | Set OPENAI_API_KEY (or custom env) |
| Ollama | Local, no API key — see Using Ollama |
Using Ollama (Local Models)
Ripple supports Ollama as a fully local, no-cost LLM option — no API key required.
1. Install and start Ollama
# macOS / Linux
brew install ollama # or download from ollama.com
ollama serve2. Pull a model
ollama pull llama3.1:8b # recommended — strong reasoning, fast
ollama pull mistral # good alternative
ollama pull gemma2:9b # Google's Gemma 23. Run ripple init and choose Ollama
? LLM provider: Ollama (local, no API key required)
? Ollama model: llama3.1:8b
? Ollama API base URL: http://127.0.0.1:11434/v1This writes the following to ripple.config.json:
{
"llm": {
"provider": "ollama",
"model": "llama3.1:8b",
"baseURL": "http://127.0.0.1:11434/v1"
}
}4. Add only Jira/Confluence tokens to .env — no LLM key needed:
JIRA_API_TOKEN=...
CONFLUENCE_API_TOKEN=...5. Analyze as usual
ripple analyze --ticket PROJ-1234Note: Local model quality varies.
llama3.1:8bworks well for structured JSON output. If you get JSON parse errors, try a larger model (llama3.1:70b) or set"model": "mistral"inripple.config.json.
Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feat/your-feature - Make your changes — ES modules throughout, no TypeScript, no
require() - Open a pull request
License
MIT
