{"_id":"@artshllaku/pw-metrics","_rev":"5-09c2d30295ef171531ee41d84e90406e","name":"@artshllaku/pw-metrics","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@artshllaku/pw-metrics","version":"0.1.0","keywords":["playwright","metrics","ci","dashboard"],"author":{"name":"Art Shllaku"},"license":"MIT","_id":"@artshllaku/pw-metrics@0.1.0","maintainers":[{"name":"artshllaku","email":"artshllaku48@gmail.com"}],"bin":{"dev":"node dist/generateMetrics.js --json=test-results/results.json --env=DEV","sit":"node dist/generateMetrics.js --json=test-results/results.json --env=SIT","playwright-metrics-summary":"dist/parseResults.js","playwright-metrics-generate":"dist/generateMetrics.js"},"dist":{"shasum":"1c46fb10f0b4fcb3e145e2eccf846b28b084e18f","tarball":"https://registry.npmjs.org/@artshllaku/pw-metrics/-/pw-metrics-0.1.0.tgz","fileCount":13,"integrity":"sha512-+5cUeGCVviyo2UME16BzYxPzIr0wyjCyilsjEvE7W0gp/QHpQfqEtLiHMBL/8vaKYkNRgugaE0Gepm0hYRWC+Q==","signatures":[{"sig":"MEUCIQDjxNz0mOYNLHzfncAVQAjHNKF5qb1cw99v6xTDt5+/XwIgXS9Vk3Bi+XtjoYsSJsLVR+QTKTmXhnpShW78igQlI+c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":394442},"main":"dist/playwrightMetrics.js","type":"module","private":false,"scripts":{"build":"tsc","summary":"node dist/parseResults.js","generate":"node dist/generateMetrics.js","dev:summary":"ts-node src/parseResults.ts","dev:generate":"ts-node src/generateMetrics.ts"},"_npmUser":{"name":"artshllaku","email":"artshllaku48@gmail.com"},"_npmVersion":"10.9.2","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pw-metrics_0.1.0_1765286578714_0.33636662563871544","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@artshllaku/pw-metrics","version":"0.1.1","keywords":["playwright","metrics","ci","dashboard"],"author":{"name":"Art Shllaku"},"license":"MIT","_id":"@artshllaku/pw-metrics@0.1.1","maintainers":[{"name":"artshllaku","email":"artshllaku48@gmail.com"}],"bin":{"pw-metrics":"dist/generateMetrics.js","pw-metrics-summary":"dist/parseResults.js"},"dist":{"shasum":"6db0e87cf31aa76461df2d62ad03473825a75d91","tarball":"https://registry.npmjs.org/@artshllaku/pw-metrics/-/pw-metrics-0.1.1.tgz","fileCount":11,"integrity":"sha512-fPzczInTL6nMnmDqCtXFjhSkVk7EyM7gCN7D5kfwVchdlhkddzDs96Ks/tN60Yr6Oq/0FvgmopJMwydlf32iaQ==","signatures":[{"sig":"MEUCIBS55ElbDWtMak36vWiIzYsSnj5UyoOCbQkSgaRCDxk0AiEAi+c4vuC2LDiMiWqS2bTQTnLil2IRwLJndSfEQBPFBRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32500},"main":"dist/playwrightMetrics.js","type":"module","types":"dist/playwrightMetrics.d.ts","gitHead":"910d42e282736c742bbb0a2f70e3e18d8095eea5","scripts":{"build":"tsc","dev:summary":"ts-node src/parseResults.ts","dev:generate":"ts-node src/generateMetrics.ts"},"_npmUser":{"name":"artshllaku","email":"artshllaku48@gmail.com"},"_npmVersion":"10.9.2","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pw-metrics_0.1.1_1765495146215_0.7533759200407084","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@artshllaku/pw-metrics","version":"0.1.2","keywords":["playwright","metrics","ci","dashboard"],"author":{"name":"Art Shllaku"},"license":"MIT","_id":"@artshllaku/pw-metrics@0.1.2","maintainers":[{"name":"artshllaku","email":"artshllaku48@gmail.com"}],"bin":{"pw-metrics":"dist/generateMetrics.js","pw-metrics-summary":"dist/parseResults.js"},"dist":{"shasum":"d0a73313f97d2fd7641b50d7cfd5c1dc75f5fec4","tarball":"https://registry.npmjs.org/@artshllaku/pw-metrics/-/pw-metrics-0.1.2.tgz","fileCount":12,"integrity":"sha512-iIxiPUEXX4dDDp4z8BFqZO928FRElynIEok4I4h5Dvqjjk7ZJXGCn6vp6e/f2XvtIqjldbUUNVydpea+V7Wa3Q==","signatures":[{"sig":"MEUCICiQkd7SK/kE8Kp99AUpeEOuypRA2L6U9e2IlaPQOXXvAiEAqm7w33+nbpBVJzDxKW1/UQEaLVW/YP5ufCOUx4Ulev8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42118},"main":"dist/playwrightMetrics.js","type":"module","types":"dist/playwrightMetrics.d.ts","gitHead":"4309fe9f196b8307fdde27589a09ddd5fe66be4c","scripts":{"build":"tsc","dev:summary":"ts-node src/parseResults.ts","dev:generate":"ts-node src/generateMetrics.ts"},"_npmUser":{"name":"artshllaku","email":"artshllaku48@gmail.com"},"_npmVersion":"10.9.2","description":"Generate simple metrics from Playwright JSON reports for CI and dashboards","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pw-metrics_0.1.2_1765495583197_0.5517398962781668","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@artshllaku/pw-metrics","version":"0.1.3","keywords":["playwright","metrics","ci","dashboard"],"author":{"name":"Art Shllaku"},"license":"MIT","_id":"@artshllaku/pw-metrics@0.1.3","maintainers":[{"name":"artshllaku","email":"artshllaku48@gmail.com"}],"bin":{"pw-metrics":"dist/generateMetrics.js","pw-metrics-summary":"dist/parseResults.js"},"dist":{"shasum":"0816491c13d9cf40f2284ffdd84898bef577ea5b","tarball":"https://registry.npmjs.org/@artshllaku/pw-metrics/-/pw-metrics-0.1.3.tgz","fileCount":12,"integrity":"sha512-YDiXQ+Xp5a2+Ge3R/onXWmQ+3y1Iy7svlLWudojMoojgkfFuA39nty04lwTsP36e5/QO/uiCVi+7e5xJl5+dbw==","signatures":[{"sig":"MEYCIQDbdwQwVBk8K7Jo/o0y0zgf7VvnPxX8m6uYaKEKbDThIQIhAMC/VNfBxzpYU2kTlV6em5CqWeNEfL6GEnma4/0XJN0A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38082},"main":"dist/playwrightMetrics.js","type":"module","types":"dist/playwrightMetrics.d.ts","gitHead":"a7d4340fb2b89aedf22c917712aea26cba677806","scripts":{"build":"tsc","dev:summary":"ts-node src/parseResults.ts","dev:generate":"ts-node src/generateMetrics.ts"},"_npmUser":{"name":"artshllaku","email":"artshllaku48@gmail.com"},"_npmVersion":"10.9.2","description":"Generate simple metrics from Playwright JSON reports for CI and dashboards","directories":{},"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.6.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/pw-metrics_0.1.3_1765495689587_0.5840283062234055","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@artshllaku/pw-metrics","description":"Generate simple metrics from Playwright JSON reports for CI and dashboards","version":"0.1.4","type":"module","main":"dist/playwrightMetrics.js","types":"dist/playwrightMetrics.d.ts","repository":{"type":"git","url":"git+https://github.com/artshllk/playwright-metrics.git"},"bin":{"pw-metrics":"dist/generateMetrics.js","pw-metrics-summary":"dist/parseResults.js"},"homepage":"https://github.com/artshllk/playwright-metrics.git","scripts":{"build":"tsc","dev:generate":"ts-node src/generateMetrics.ts","dev:summary":"ts-node src/parseResults.ts"},"bugs":{"url":"https://github.com/artshllk/playwright-metrics/issues"},"keywords":["playwright","metrics","ci","dashboard"],"author":{"name":"Art Shllaku"},"license":"MIT","devDependencies":{"@types/node":"^22.0.0","ts-node":"^10.9.2","typescript":"^5.6.0"},"_id":"@artshllaku/pw-metrics@0.1.4","gitHead":"90bfcc1bd55e787f29de58d75c41e9d575bbf860","_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-RH7HTmpdFO61/r0ysYveLQmL05VF3IfMTPQ6iyH0fuPIPpfxK2g9KY3oKnCClM7KsgfPb7Dmx5zsjI+5QpPQxQ==","shasum":"d09d33c2533041d121e1f6f28ba437b0426209c0","tarball":"https://registry.npmjs.org/@artshllaku/pw-metrics/-/pw-metrics-0.1.4.tgz","fileCount":12,"unpackedSize":40578,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCUdC2iiwpp6jf+OLrG0KI8oTeZNNQ0kNs5CJ6qB6Mz4gIgUDRYOn1MXqWPF3xzdWNkaVCJwiFLSSCt+C8xkbw7aRU="}]},"_npmUser":{"name":"artshllaku","email":"artshllaku48@gmail.com"},"directories":{},"maintainers":[{"name":"artshllaku","email":"artshllaku48@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pw-metrics_0.1.4_1765498200988_0.5684757467831518"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-09T13:22:58.656Z","modified":"2025-12-12T00:10:01.393Z","0.1.0":"2025-12-09T13:22:58.853Z","0.1.1":"2025-12-11T23:19:06.353Z","0.1.2":"2025-12-11T23:26:23.338Z","0.1.3":"2025-12-11T23:28:09.718Z","0.1.4":"2025-12-12T00:10:01.168Z"},"author":{"name":"Art Shllaku"},"license":"MIT","keywords":["playwright","metrics","ci","dashboard"],"description":"Generate simple metrics from Playwright JSON reports for CI and dashboards","maintainers":[{"name":"artshllaku","email":"artshllaku48@gmail.com"}],"readme":"# pw-metrics\n\n![npm version](https://img.shields.io/npm/v/@artshllaku/pw-metrics?style=flat-square)\n![Node.js](https://img.shields.io/badge/node-%3E=_18-brightgreen?style=flat-square)\n![License: MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)\n\nPlaywright test metrics generator for local runs and CI pipelines.\n\npw-metrics reads a Playwright JSON report and emits small, consumable JSON metrics you can feed to dashboards, posting tools, or CI summaries.\n\nHighlights\n\n- Per-run `metrics.json` with totals and run metadata\n- A consolidated `metrics-latest.json` suitable for dashboards\n- Small, framework-agnostic, CI-friendly\n\n## Table of contents\n\n- [Features](#features)\n- [Categories (optional)](#categories-optional)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Quick start](#quick-start)\n- [CLI options](#cli-options)\n- [Default output structure](#default-output-structure)\n- [Example output](#example-output-metricsjson)\n- [CI usage (GitHub Actions)](#ci-usage-github-actions)\n- [Configuration](#configuration)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Features\n\n- Aggregates Playwright test results (passed / failed / skipped / timed out)\n- Computes pass rate and collects run metadata (git SHA, branch, run ID, timestamp)\n- Writes a per-run metrics file and updates `metrics-latest.json` for dashboards\n- Minimal surface area and easy to extend\n\n## Categories (optional)\n\npw-metrics supports custom test categories so you can break down results in a way that matches your test strategy. Categories are optional — if you don’t configure them the tool behaves exactly the same as without them.\n\nYou decide what a category means; the tool doesn't enforce naming or semantics.\n\n### Common examples\n\n- smoke\n- regression\n- security\n- integration\n- api\n- mobile\n- performance\n\n### How categories match tests\n\nA category groups tests using one or more matching rules. A test is included when any rule matches.\n\n- Tags — Playwright annotations (for example `@smoke`).\n- Project names — the Playwright project identifier.\n- File path patterns — glob-like patterns against the test file path.\n\n### Modes\n\nControl how tests are assigned:\n\n- Multi-category (default) — a test may belong to multiple categories (example: `api` + `security`).\n- Exclusive — a test is counted only in the first matching category (useful for mutually-exclusive groups like `smoke` or `regression`).\n\n### What metrics are produced\n\n- Global totals (`all`, `passed`, `failed`, `skipped`, `timedOut`) are always computed.\n- When categories are configured, pw-metrics adds a `categories` breakdown.\n\nEach category contains:\n\n- `total`\n- `passed`\n- `failed`\n- `skipped`\n- `timedOut`\n- `passRate` (percentage)\n\nIf categories are not configured, the `categories` section is omitted.\n\n### Example output (with categories)\n\n```json\n{\n  \"totals\": {\n    \"all\": 30,\n    \"passed\": 27,\n    \"failed\": 2,\n    \"skipped\": 1,\n    \"timedOut\": 0\n  },\n  \"passRate\": 90,\n  \"categories\": {\n    \"smoke\": {\n      \"total\": 10,\n      \"passed\": 9,\n      \"failed\": 1,\n      \"skipped\": 0,\n      \"timedOut\": 0,\n      \"passRate\": 90\n    },\n    \"security\": {\n      \"total\": 5,\n      \"passed\": 4,\n      \"failed\": 1,\n      \"skipped\": 0,\n      \"timedOut\": 0,\n      \"passRate\": 80\n    }\n  }\n}\n```\n\n### Example configuration\n\nCreate a `pw-metrics.config.json` at the repo root (CLI args always override config values):\n\n```json\n{\n  \"categories\": [\n    {\n      \"name\": \"smoke\",\n      \"tags\": [\"@smoke\"]\n    },\n    {\n      \"name\": \"security\",\n      \"tags\": [\"@security\"],\n      \"projectPatterns\": [\"security\"]\n    }\n  ],\n  \"categoryMode\": \"multi\"\n}\n```\n\nNotes:\n\n- Use `categoryMode: \"exclusive\"` to enable exclusive assignment.\n- Tags, `projectPatterns` and path matching are additive — a test matches the category when any rule matches.\n\n## Requirements\n\n- Node.js 18+\n- Playwright (to run tests)\n- Use Playwright's JSON reporter to generate the input report\n\nExample test run that writes a Playwright JSON report:\n\n```bash\nnpx playwright test --reporter=json\n# Common locations: test-results/results.json, playwright-report or a CI-provided path\n```\n\n## Installation\n\nUse via npx (no install):\n\n```bash\nnpx @artshllaku/pw-metrics --json=test-results/results.json --env=DEV\n```\n\nOr install as a dev-dependency:\n\n```bash\nnpm install --save-dev @artshllaku/pw-metrics\n# then run with:\nnpx pw-metrics --json=test-results/results.json --env=DEV\n```\n\nThere are two main commands exported by the package:\n\n- `pw-metrics` — generate per-run artifacts and update `metrics-latest.json`\n- `pw-metrics-summary` — print a short summary to stdout (no files written)\n\n## Quick start\n\nGenerate full metrics and write artifacts:\n\n```bash\nnpx pw-metrics --json=test-results/results.json --env=DEV\n```\n\nPrint summary only:\n\n```bash\nnpx pw-metrics-summary --json=test-results/results.json --env=DEV\n```\n\n## CLI options\n\n|        Option | Description                                              | Default                        |\n| ------------: | :------------------------------------------------------- | :----------------------------- |\n|      `--json` | Path to the Playwright JSON report                       | `test-results/results.json`    |\n|       `--env` | Environment name                                         | `DEV`                          |\n|    `--outDir` | Base output directory for per-run artifacts              | `artifacts`                    |\n|    `--latest` | Path to the consolidated latest metrics file             | `site/metrics-latest.json`     |\n| `--reportUrl` | Optional link to the Playwright HTML report              | `playwright-report/index.html` |\n|     `--runId` | Override run ID (otherwise auto-generated ISO timestamp) | auto-generated                 |\n\nNotes\n\n- CLI args override values read from `pw-metrics.config.json` (if present).\n- `--runId` is useful when you want predictable artifact paths in CI.\n\n## Default output structure\n\n```\nartifacts/\n└── <env>/\n    └── <run-id>/\n        └── metrics.json\n\nsite/\n└── metrics-latest.json\n```\n\n## Example output (`metrics.json`)\n\n```json\n{\n  \"env\": \"DEV\",\n  \"runId\": \"2025-01-12T10-30-22-acde12\",\n  \"gitSha\": \"acd12ef\",\n  \"branch\": \"main\",\n  \"runNumber\": \"143\",\n  \"timestampISO\": \"2025-01-12T10:30:22.123Z\",\n  \"totals\": {\n    \"all\": 120,\n    \"passed\": 114,\n    \"failed\": 6,\n    \"skipped\": 3,\n    \"timedOut\": 1\n  },\n  \"passRate\": 95,\n  \"reportUrl\": \"playwright-report/index.html\"\n}\n```\n\n## CI usage (GitHub Actions)\n\nSmall example workflow that runs Playwright and then generates metrics:\n\n```yaml\nname: CI - Playwright + Metrics\n\non: [push, pull_request]\n\njobs:\n  tests:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Install dependencies\n        run: npm ci\n      - name: Run Playwright tests (JSON reporter)\n        run: npx playwright test --reporter=json\n      - name: Upload Playwright report (optional)\n        if: always()\n        run: echo \"upload step or artifact upload here\"\n      - name: Generate metrics\n        run: npx pw-metrics --json=test-results/results.json --env=CI\n        # optionally pass --outDir or --latest to change locations\n```\n\n## Configuration\n\nYou can optionally create a `pw-metrics.config.json` at the repo root to set defaults (env, paths, custom categories). CLI options take precedence over config values.\n\n## Contributing\n\nContributions are welcome. Open issues for bugs or feature requests, and create PRs for changes. Keep PRs small and focused.\n\n## Preview locally\n\nOpen the file in VS Code and press `Cmd+Shift+V` (macOS) or `Ctrl+Shift+V` (Windows/Linux) to preview the rendered Markdown.\n\n## License\n\nMIT — Art Shllaku\n","readmeFilename":"README.md","homepage":"https://github.com/artshllk/playwright-metrics.git","repository":{"type":"git","url":"git+https://github.com/artshllk/playwright-metrics.git"},"bugs":{"url":"https://github.com/artshllk/playwright-metrics/issues"}}