{"_id":"@ashish.yd/npm-package-tester","_rev":"4-0b81f7a1ea9657038dca16b6941708dd","name":"@ashish.yd/npm-package-tester","dist-tags":{"latest":"1.0.1"},"versions":{"0.1.0":{"name":"@ashish.yd/npm-package-tester","version":"0.1.0","keywords":["npm","package","testing","cli","docker","smoke-test","validation","automation","command-detection"],"author":{"name":"Your Name"},"license":"MIT","_id":"@ashish.yd/npm-package-tester@0.1.0","maintainers":[{"name":"ashish.yd","email":"ashish.yd@gmail.com"}],"bin":{"npt":"dist/cli/index.js","npm-package-tester":"dist/cli/index.js"},"dist":{"shasum":"c721482426d46acb15dbd9eec5432cef46d9e0e7","tarball":"https://registry.npmjs.org/@ashish.yd/npm-package-tester/-/npm-package-tester-0.1.0.tgz","fileCount":30,"integrity":"sha512-tHfx7qdUVwLWIj9jSALn/nrtVAHNDZkU0qRndeyKdBRis0qUaMnb7LC8C3AFUqw9JAEVA7rk0AW4nrzhi0W0bA==","signatures":[{"sig":"MEYCIQDpNuRfAQajjwC9Mi0kRK4GuTodUjclr/Mehs1lPed/mgIhAKokrprAyxmH9vBhtDPWvcDDwBXwa9eYpj/iXBfUNjIG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73705},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"7d471987106338d812fbe4364dfe0170fba801bb","scripts":{"lint":"eslint src tests --ext .ts","test":"jest --coverage","build":"tsc","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --ext .ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prepublishOnly":"npm run lint && npm run test && npm run build","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"ashish.yd","email":"ashish.yd@gmail.com"},"_npmVersion":"10.9.3","description":"Automatically test npm packages by discovering CLI commands and running them in Docker environments","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ora":"^5.4.1","chalk":"^4.1.2","execa":"^5.1.1","semver":"^7.5.4","commander":"^11.1.0","dockerode":"^4.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^3.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@types/semver":"^7.5.6","@types/dockerode":"^3.3.23","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/npm-package-tester_0.1.0_1759310792268_0.5262975290185135","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.0":{"name":"@ashish.yd/npm-package-tester","version":"1.0.0","keywords":["npm","testing","cli","cli-testing","npm-testing","package-testing","docker","docker-testing","automation","ci-cd","continuous-integration","smoke-test","integration-testing","e2e-testing","end-to-end","ai","ai-testing","artificial-intelligence","claude","anthropic","openai","gpt-4","gemini","groq","llm","private-packages","npm-registry","scoped-packages","command-detection","validation","test-automation","typescript","nodejs","node"],"author":{"name":"Ashish Yadav","email":"ashish.yd@gmail.com"},"license":"MIT","_id":"@ashish.yd/npm-package-tester@1.0.0","maintainers":[{"name":"ashish.yd","email":"ashish.yd@gmail.com"}],"homepage":"https://github.com/ashishyd/npm-package-tester#readme","bugs":{"url":"https://github.com/ashishyd/npm-package-tester/issues"},"bin":{"npt":"dist/cli/index.js","npm-package-tester":"dist/cli/index.js"},"dist":{"shasum":"33eadc51a1b66ea82854f119744652d1f1547f82","tarball":"https://registry.npmjs.org/@ashish.yd/npm-package-tester/-/npm-package-tester-1.0.0.tgz","fileCount":42,"integrity":"sha512-g6gASqQUsYm6JwoOst25FeOFi2cKe6kGjRYR4zHjgspnurHACW519/PguzoG+XGiZ7MWQy1dcjI3WPdlCZFMRw==","signatures":[{"sig":"MEUCIQD+2jMfyDAFbG6Bst5xJtjO1jUKwb8MC98UPlNinAzjiQIgGxbt6p7dAx9g1mrpF9FigK+KrhVzSzfyV/BsCvI8yjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138049},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"d54c19d41ce8fc0bcbd78e02dea367441267b1ed","scripts":{"lint":"eslint src tests --ext .ts","test":"jest --coverage","build":"tsc","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --ext .ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prepublishOnly":"npm run lint && npm run test && npm run build","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"ashish.yd","email":"ashish.yd@gmail.com"},"repository":{"url":"git+https://github.com/ashishyd/npm-package-tester.git","type":"git"},"_npmVersion":"10.9.3","description":"AI-powered CLI testing tool for npm packages with Docker isolation, private package support, and automated test generation using Claude, GPT-4, Gemini","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ora":"^5.4.1","chalk":"^4.1.2","execa":"^5.1.1","semver":"^7.5.4","commander":"^11.1.0","dockerode":"^4.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^3.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@types/semver":"^7.5.6","@types/dockerode":"^3.3.23","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/npm-package-tester_1.0.0_1759320244728_0.14871086230069586","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.0.1":{"name":"@ashish.yd/npm-package-tester","version":"1.0.1","keywords":["npm","testing","cli","cli-testing","npm-testing","package-testing","docker","docker-testing","automation","ci-cd","continuous-integration","smoke-test","integration-testing","e2e-testing","end-to-end","ai","ai-testing","artificial-intelligence","claude","anthropic","openai","gpt-4","gemini","groq","llm","private-packages","npm-registry","scoped-packages","command-detection","validation","test-automation","typescript","nodejs","node"],"author":{"name":"Ashish Yadav","email":"ashish.yd@gmail.com"},"license":"MIT","_id":"@ashish.yd/npm-package-tester@1.0.1","maintainers":[{"name":"ashish.yd","email":"ashish.yd@gmail.com"}],"homepage":"https://github.com/ashishyd/npm-package-tester#readme","bugs":{"url":"https://github.com/ashishyd/npm-package-tester/issues"},"bin":{"npt":"dist/cli/index.js","npm-package-tester":"dist/cli/index.js"},"dist":{"shasum":"76e86a3986e6d992deebc36527de0a8bb5e0a105","tarball":"https://registry.npmjs.org/@ashish.yd/npm-package-tester/-/npm-package-tester-1.0.1.tgz","fileCount":42,"integrity":"sha512-yMZ3PJFaBadtc/0V6V/PWej2XFqgHtj5qY/lMEtt3JlKw2+zVVvg0jYbZ6CRRUYTy2yQxg7ZS5hIXwtZT9B4CA==","signatures":[{"sig":"MEUCIGfy4pkHJypY2Z/8B8oNZWCmLlgq8QTPRKts31yYFnzBAiEAgobHro0fq6hg7Dm5AMG50O3FoIwtbvgzbVGAunUhRVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145951},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"8e5395fef98b8fe8042f7c87e794ceb3b2825b9d","scripts":{"lint":"eslint src tests --ext .ts","test":"jest --coverage","build":"tsc","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --ext .ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prepublishOnly":"npm run lint && npm run test && npm run build","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"ashish.yd","email":"ashish.yd@gmail.com"},"repository":{"url":"git+https://github.com/ashishyd/npm-package-tester.git","type":"git"},"_npmVersion":"10.9.3","description":"AI-powered CLI testing tool for npm packages with Docker isolation, private package support, and automated test generation using Claude, GPT-4, Gemini","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ora":"^5.4.1","chalk":"^4.1.2","execa":"^5.1.1","semver":"^7.5.4","commander":"^11.1.0","dockerode":"^4.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.1","ts-node":"^10.9.2","prettier":"^3.1.1","typescript":"^5.3.3","@types/jest":"^29.5.11","@types/node":"^20.10.6","@types/semver":"^7.5.6","@types/dockerode":"^3.3.23","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","@typescript-eslint/parser":"^6.17.0","@typescript-eslint/eslint-plugin":"^6.17.0"},"_npmOperationalInternal":{"tmp":"tmp/npm-package-tester_1.0.1_1759330134941_0.10380004497126416","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2025-10-01T09:26:32.092Z","modified":"2025-10-14T16:07:28.209Z","0.1.0":"2025-10-01T09:26:32.426Z","1.0.0":"2025-10-01T12:04:04.932Z","1.0.1":"2025-10-01T14:48:55.114Z"},"bugs":{"url":"https://github.com/ashishyd/npm-package-tester/issues"},"author":{"name":"Ashish Yadav","email":"ashish.yd@gmail.com"},"license":"MIT","homepage":"https://github.com/ashishyd/npm-package-tester#readme","keywords":["npm","testing","cli","cli-testing","npm-testing","package-testing","docker","docker-testing","automation","ci-cd","continuous-integration","smoke-test","integration-testing","e2e-testing","end-to-end","ai","ai-testing","artificial-intelligence","claude","anthropic","openai","gpt-4","gemini","groq","llm","private-packages","npm-registry","scoped-packages","command-detection","validation","test-automation","typescript","nodejs","node"],"repository":{"url":"git+https://github.com/ashishyd/npm-package-tester.git","type":"git"},"description":"AI-powered CLI testing tool for npm packages with Docker isolation, private package support, and automated test generation using Claude, GPT-4, Gemini","maintainers":[{"name":"ashish.yd","email":"ashish.yd@gmail.com"}],"readme":"# npm-package-tester\n\n[![npm version](https://badge.fury.io/js/%40ashish.yd%2Fnpm-package-tester.svg)](https://www.npmjs.com/package/@ashish.yd/npm-package-tester)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue.svg)](https://www.typescriptlang.org/)\n[![Node.js Version](https://img.shields.io/badge/node-%3E%3D16.0.0-brightgreen.svg)](https://nodejs.org/)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/ashishyd/npm-package-tester/pulls)\n[![GitHub issues](https://img.shields.io/github/issues/ashishyd/npm-package-tester.svg)](https://github.com/ashishyd/npm-package-tester/issues)\n[![GitHub stars](https://img.shields.io/github/stars/ashishyd/npm-package-tester.svg?style=social)](https://github.com/ashishyd/npm-package-tester)\n\n🧪 **Automatically test npm packages by discovering their CLI commands and running them in isolated Docker environments**\n\n🤖 **AI-Powered**: Generate realistic test scenarios using Claude, GPT-4, Gemini, or Groq\n🔐 **Private Packages**: Full support for private npm packages and custom registries\n⚡ **Fast & Reliable**: Run tests in parallel across multiple Node versions\n\n---\n\n## Table of Contents\n\n- [The Problem](#the-problem)\n- [The Solution](#the-solution)\n- [Features](#features)\n- [Quick Start](#quick-start)\n- [Example Output](#example-output)\n- [AI-Powered Testing](#ai-powered-testing)\n- [Testing Private Packages](#testing-private-packages)\n- [CLI Options](#cli-options)\n- [How It Works](#how-it-works)\n- [Use Cases](#use-cases)\n- [Configuration](#configuration)\n- [API Usage](#api-usage)\n- [Architecture](#architecture)\n- [Requirements](#requirements)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## The Problem\n\nWhen you publish an npm package with CLI commands, you need to verify:\n- ✅ Does it install correctly?\n- ✅ Do all CLI commands work?\n- ✅ Does it work across different Node versions?\n- ✅ Does the --help flag work?\n- ✅ Does the --version flag work?\n- ✅ Does it run without crashing?\n\n**Manual testing is tedious and error-prone.**\n\n## The Solution\n\n`npm-package-tester` automatically:\n1. 📦 Analyzes your package.json to detect CLI commands\n2. 🐳 Creates fresh Docker containers with specified Node versions\n3. 📥 Installs your package\n4. 🧪 Runs each CLI command with common flags (--help, --version, etc.)\n5. ✅ Reports which commands work and which don't\n\n## Features\n\n- 🔍 **Auto-Discovery**: Automatically detects all CLI commands from `package.json`\n- 🐳 **Docker Isolation**: Tests in clean environments\n- 🔄 **Multi-Version**: Test across Node 16, 18, 20, etc.\n- ⚡ **Parallel Testing**: Run tests concurrently for speed\n- 📊 **Detailed Reports**: Clear pass/fail results with complete test breakdown\n- 🎯 **Smart Testing**: Automatically tries --help, --version, and no-args\n- 🤖 **AI-Powered Scenarios**: Generate realistic test scenarios using Claude, GPT-4, Gemini, or Groq\n- 🔐 **Private Packages**: Full support for private npm packages with authentication\n- 📦 **Custom Registries**: Works with private npm registries\n- 💨 **Lightweight**: Minimal dependencies, fast execution\n\n## Quick Start\n\n```bash\n# Install globally\nnpm install -g npm-package-tester\n\n# Test a package from npm\nnpt test eslint\n\n# Test your local package\nnpt test ./my-package\n\n# Test across multiple Node versions\nnpt test prettier --node 16,18,20\n\n# AI-powered intelligent testing (generates realistic scenarios)\nnpt test env-type-generator --ai-provider anthropic --ai-token YOUR_API_KEY\n\n# Use OpenAI instead\nnpt test my-package --ai-provider openai --ai-token YOUR_OPENAI_KEY\n\n# Test private packages\nnpt test @your-org/private-package --npm-token YOUR_NPM_TOKEN\n\n# Test from custom registry\nnpt test @company/package --npm-registry https://npm.company.com --npm-token YOUR_TOKEN\n\n# Keep containers for debugging\nnpt test --keep-containers\n```\n\n## Example Output\n\n### Default Testing\n```\n📦 Package: eslint\n   Version: 8.50.0\n\n🐳 Node 20\n  ✓ eslint --help (125ms)\n  ✓ eslint --version (98ms)\n  ✓ eslint [no args] (102ms)\n\n📊 Summary\n──────────────────────────────────────────────────\n  Total: 3 tests\n  Passed: 3\n  Failed: 0\n  Duration: 325ms\n\n📋 Test Details\n──────────────────────────────────────────────────\n\n  🎯 Default Tests\n    ✓ eslint --help (125ms)\n    ✓ eslint --version (98ms)\n    ✓ eslint (no args) (102ms)\n\n✅ All tests passed!\n```\n\n### AI-Powered Testing\n```\n📦 Package: env-type-generator\n   Version: 1.0.0\n   Auto-generate TypeScript types from .env files with zero config\n\n🐳 Node 20\n  ✓ env-type-gen (1512ms)\n  ✓ env-type-gen (4871ms)\n  ✓ env-type-gen (1307ms)\n\n📊 Summary\n──────────────────────────────────────────────────\n  Total: 3 tests\n  Passed: 3\n  Failed: 0\n  Duration: 7690ms\n\n📋 Test Details\n──────────────────────────────────────────────────\n\n  🤖 AI-Generated Tests\n    ✓ basic-type-generation (1512ms)\n    ✓ multiple-env-files-with-parsing -e .env .env.local -p (4871ms)\n    ✓ strict-mode-all-required -e .env.example -o ./types/env.d.ts (1307ms)\n\n✅ All tests passed!\n```\n\n## How It Works\n\n### 1. **Command Detection**\n\n```typescript\n// Reads package.json\n{\n  \"name\": \"my-cli-tool\",\n  \"bin\": {\n    \"mycli\": \"./dist/cli.js\",      // Primary command\n    \"my\": \"./dist/cli.js\"           // Alias\n  }\n}\n\n// Detects: mycli, my\n```\n\n### 2. **Docker Environment**\n\n```dockerfile\n# Spins up for each Node version\nFROM node:20-alpine\nRUN npm install -g my-cli-tool\nRUN mycli --help\nRUN mycli --version\n```\n\n### 3. **Smart Testing**\n\nFor each command, automatically tests:\n- `command --help` (should show help)\n- `command --version` (should show version)\n- `command` (no args - should not crash)\n- Custom scenarios you define\n\n## Use Cases\n\n### 1. **Pre-Publish Validation**\n\n```bash\n# Before publishing\nnpm run build\nnpt test .\nnpm publish\n```\n\n### 2. **CI/CD Integration**\n\n```yaml\n# .github/workflows/test.yml\n- name: Test CLI\n  run: |\n    npm install -g npm-package-tester\n    npt test . --node 16,18,20\n```\n\n### 3. **Testing Published Packages**\n\n```bash\n# Verify your package works after publishing\nnpt test your-package-name@latest\n```\n\n### 4. **Debugging Installation Issues**\n\n```bash\n# Keep containers to inspect\nnpt test . --keep-containers\ndocker exec -it <container-id> sh\n```\n\n## Configuration\n\nCreate `.npmtestrc.json`:\n\n```json\n{\n  \"nodeVersions\": [\"16\", \"18\", \"20\"],\n  \"parallel\": true,\n  \"timeout\": 30000,\n  \"customTests\": [\n    {\n      \"name\": \"Generate help\",\n      \"command\": \"mycli generate --help\",\n      \"expect\": {\n        \"exitCode\": 0,\n        \"stdout\": \"Usage:\"\n      }\n    }\n  ]\n}\n```\n\n## API Usage\n\n```typescript\nimport { testPackage } from 'npm-package-tester';\n\nconst results = await testPackage('eslint', {\n  nodeVersions: ['20'],\n  parallel: false,\n});\n\nconsole.log(`Passed: ${results.passed}/${results.total}`);\n```\n\n## CLI Options\n\n```\nUsage: npt test [options] <package>\n\nOptions:\n  -n, --node <versions>        Node versions (comma-separated)\n  -p, --parallel               Run tests in parallel\n  -k, --keep-containers        Keep containers after test\n  -t, --timeout <ms>           Timeout per test (default: 30000)\n  --npm-token <token>          npm authentication token for private packages\n  --npm-registry <url>         Custom npm registry URL\n  --ai-provider <provider>     AI provider (anthropic, openai, google, groq)\n  --ai-token <token>           AI API token/key\n  --ai-model <model>           AI model name (optional, auto-detects best)\n  --no-help                    Skip --help tests\n  --no-version                 Skip --version tests\n  -v, --verbose                Verbose output\n```\n\n## AI-Powered Testing\n\nInstead of just testing `--help` and `--version`, use AI to generate realistic test scenarios:\n\n```bash\nnpt test env-type-generator --ai-provider anthropic --ai-token YOUR_TOKEN\n```\n\nThe AI will:\n1. 📖 Analyze the package README and CLI help\n2. 🧠 Understand what the package does\n3. 🎯 Generate realistic test scenarios with:\n   - Appropriate input files\n   - Realistic command arguments\n   - Expected output validation\n4. ✅ Validate file creation, content, and exit codes\n\n**Example AI-Generated Scenarios:**\n```\n🤖 Generating test scenarios with AI...\n✨ Generated 4 AI test scenarios\n\n🐳 Node 20\n  ✓ basic-env-file-generation (1400ms)\n  ✓ env-with-comments (1706ms)\n  ✓ nested-env-variables (5040ms)\n  ✓ strict-mode-with-custom-output (1517ms)\n\n📊 4/4 tests passed ✅\n```\n\n### Supported AI Providers\n\n| Provider | Model | Setup |\n|----------|-------|-------|\n| **Anthropic** | Claude Sonnet 4.5 | Get key from [console.anthropic.com](https://console.anthropic.com) |\n| **OpenAI** | GPT-4o | Get key from [platform.openai.com](https://platform.openai.com) |\n| **Google** | Gemini 2.0 Flash | Get key from [ai.google.dev](https://ai.google.dev) |\n| **Groq** | Llama 3.3 70B | Get key from [console.groq.com](https://console.groq.com) |\n\nThe best model for each provider is automatically selected.\n\n## Testing Private Packages\n\n`npm-package-tester` fully supports private npm packages with authentication:\n\n### Using npm Token\n\n```bash\n# Test private package from npm registry\nnpt test @your-org/private-package --npm-token YOUR_NPM_TOKEN\n\n# Get your npm token from ~/.npmrc or create one with:\n# npm token create --read-only\n```\n\n### Using Custom Registry\n\n```bash\n# Test from private registry (like Verdaccio, Artifactory, GitHub Packages)\nnpt test @company/package \\\n  --npm-registry https://npm.company.com \\\n  --npm-token YOUR_REGISTRY_TOKEN\n```\n\n### How it Works\n\n1. The tool creates a `.npmrc` file in the Docker container\n2. Configures authentication with your token\n3. Installs the package securely\n4. Runs all tests normally\n\n**Security Note**: Tokens are only used within isolated Docker containers and are not stored or logged.\n\n### Supported Registries\n\n- ✅ npm (private packages)\n- ✅ GitHub Packages\n- ✅ GitLab Package Registry\n- ✅ Verdaccio\n- ✅ JFrog Artifactory\n- ✅ Azure Artifacts\n- ✅ Any npm-compatible registry\n\n## Architecture\n\n```\nnpm-package-tester\n├── PackageAnalyzer      # Reads package.json, detects commands\n├── CommandDetector      # Identifies CLI binaries\n├── DockerManager        # Creates/manages containers\n├── TestRunner           # Executes commands in containers\n├── ScenarioRunner       # Runs AI-generated test scenarios\n├── ScenarioGenerator    # Generates scenarios using AI\n├── AIProvider           # Multi-provider AI abstraction (Claude, GPT-4, Gemini, Groq)\n├── ResultFormatter      # Pretty output\n└── CLI                  # User interface\n```\n\n### Clean Architecture\n\n- **Domain**: Types, interfaces (no dependencies)\n- **Application**: Business logic (PackageAnalyzer, TestRunner, ScenarioRunner)\n- **AI**: AI providers and scenario generation\n- **Infrastructure**: Docker, file system (external concerns)\n- **CLI**: User interface (commander, chalk)\n\n## Requirements\n\n- Docker installed and running\n- Node.js >= 16\n- npm or yarn\n- (Optional) AI provider API key for intelligent test generation\n\n## Limitations\n\n- Only tests packages with CLI commands\n- Requires Docker (no Windows native support yet)\n- Can't test interactive prompts automatically\n- Network-dependent (pulls Docker images)\n- AI features require API credits\n\n## Roadmap\n\n- [x] AI-powered test scenario generation\n- [x] Multi-provider AI support (Anthropic, OpenAI, Google, Groq)\n- [ ] Support testing interactive CLIs\n- [ ] Cloud runners (no local Docker needed)\n- [ ] Performance benchmarking\n- [ ] Screenshot/visual testing for TUI apps\n- [ ] Windows native support (WSL2)\n- [ ] Custom Docker images\n- [ ] CI/CD badges\n- [ ] Historical test tracking\n\n## Contributing\n\nWe welcome contributions! Here's how you can help:\n\n### Ways to Contribute\n\n- 🐛 **Report Bugs**: [Create a bug report](https://github.com/ashishyd/npm-package-tester/issues/new?template=bug_report.yml)\n- 💡 **Suggest Features**: [Request a feature](https://github.com/ashishyd/npm-package-tester/issues/new?template=feature_request.yml)\n- 📝 **Improve Documentation**: Fix typos, add examples, clarify instructions\n- 🧪 **Add Tests**: Increase test coverage\n- 🔧 **Fix Issues**: Check out [good first issues](https://github.com/ashishyd/npm-package-tester/labels/good%20first%20issue)\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/ashishyd/npm-package-tester.git\ncd npm-package-tester\n\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n\n# Run tests\nnpm test\n\n# Run linting\nnpm run lint\n```\n\n### Guidelines\n\n- Follow the existing code style\n- Write tests for new features\n- Update documentation as needed\n- Ensure all tests pass before submitting PR\n- Keep PRs focused on a single feature or bug fix\n\n### Code of Conduct\n\nBe respectful, inclusive, and constructive. We're all here to learn and build great tools together!\n\n## License\n\nMIT © [Ashish Yadav](https://github.com/ashishyd)\n\n## Related Projects\n\n- [testcontainers](https://www.npmjs.com/package/testcontainers) - Integration testing with Docker\n- [verdaccio](https://verdaccio.org/) - Private npm registry\n- [np](https://github.com/sindresorhus/np) - Better npm publish\n\n## Support\n\n- 📖 [Documentation](https://github.com/ashishyd/npm-package-tester#readme)\n- 💬 [GitHub Discussions](https://github.com/ashishyd/npm-package-tester/discussions)\n- 🐛 [Issue Tracker](https://github.com/ashishyd/npm-package-tester/issues)\n- 📧 [Email](mailto:ashish.yd@gmail.com)\n\n---\n\n**Made with ❤️ for npm package authors**\n\n⭐ Star us on GitHub if you find this useful!\n","readmeFilename":"README.md"}