{
  "name": "quality-lab-playwright-showcase",
  "version": "1.0.0",
  "private": true,
  "description": "A portfolio-ready full-stack QA example with Playwright, axe, Lighthouse, pytest, and OWASP ZAP.",
  "type": "module",
  "scripts": {
    "start": "node app/server.js",
    "dev": "node --watch app/server.js",
    "setup:python": "node scripts/setup-python.mjs",
    "test": "playwright test",
    "test:functional": "playwright test tests/functional",
    "test:api": "playwright test tests/api",
    "test:a11y": "playwright test tests/accessibility",
    "test:security": "playwright test tests/security",
    "test:performance:browser": "playwright test tests/performance",
    "test:lighthouse": "start-server-and-test start http://127.0.0.1:3000/api/health \"node scripts/run-lighthouse.mjs\"",
    "test:python": "start-server-and-test start http://127.0.0.1:3000/api/health \"node scripts/run-python-tests.mjs\"",
    "test:audit-report": "node scripts/run-npm-audit.mjs",
    "test:ai:unit": "node --test ai_tests/*.test.mjs",
    "test:ai:visual": "start-server-and-test start http://127.0.0.1:3000/api/health \"node --env-file-if-exists=.env scripts/ai/visual-review.mjs\"",
    "test:ai:triage": "node --env-file-if-exists=.env scripts/ai/triage-failures.mjs",
    "test:ai": "npm run test:ai:unit && npm run test:ai:visual && npm run test:ai:triage && npm run report:index",
    "test:ai:demo": "start-server-and-test start http://127.0.0.1:3000/api/health \"node --env-file-if-exists=.env scripts/ai/run-demo.mjs\" && npm run report:index",
    "test:ai:demo:headed": "start-server-and-test start http://127.0.0.1:3000/api/health \"env AI_SHOWCASE=1 node --env-file-if-exists=.env scripts/ai/run-demo.mjs\" && npm run report:index",
    "test:ai:showcase": "start-server-and-test start http://127.0.0.1:3000/api/health \"env AI_SHOWCASE=1 node --env-file-if-exists=.env scripts/ai/showcase-review.mjs\" && npm run report:index",
    "test:ai:showcase:xvfb": "xvfb-run -a npm run test:ai:showcase",
    "test:full": "bash scripts/run-full-suite.sh",
    "demo": "PW_DEMO=1 PW_HEADED=1 PW_SLOW_MO=650 PW_VIDEO=on playwright test --project=chromium --workers=1",
    "demo:xvfb": "xvfb-run -a npm run demo",
    "demo:record": "PW_DEMO=1 PW_SLOW_MO=250 PW_VIDEO=on playwright test --project=chromium --workers=1",
    "report": "playwright show-report reports/playwright",
    "report:index": "node scripts/generate-report-index.mjs",
    "scan:zap": "mkdir -p reports/zap && docker run --rm --network=host -v \"$PWD/reports/zap:/zap/wrk:rw\" ghcr.io/zaproxy/zaproxy:stable zap-baseline.py -t http://127.0.0.1:3000 -r zap-report.html -J zap-report.json -I",
    "scan:zap:local": "start-server-and-test start http://127.0.0.1:3000/api/health \"npm run scan:zap\"",
    "audit:dependencies": "npm audit --audit-level=high",
    "clean:reports": "node scripts/clean-reports.mjs"
  },
  "engines": {
    "node": ">=24"
  },
  "dependencies": {
    "express": "^5.1.0",
    "express-rate-limit": "^8.0.1",
    "helmet": "^8.1.0"
  },
  "devDependencies": {
    "@axe-core/playwright": "^4.10.2",
    "@playwright/test": "^1.54.2",
    "chrome-launcher": "^1.0.0",
    "lighthouse": "^13.4.1",
    "start-server-and-test": "^2.0.12"
  }
}
