{
  "repository": "microsoft/playwright",
  "ref": "0ea36910324ed8aa2a5f460317cbd35881ee88d4",
  "methods": [
    {
      "slug": "formal",
      "title": "Formal verification and model checking"
    },
    {
      "slug": "static_analysis",
      "title": "Static analysis"
    },
    {
      "slug": "testing",
      "title": "Testing"
    },
    {
      "slug": "formatting",
      "title": "Formatting and hygiene"
    },
    {
      "slug": "supply_chain",
      "title": "Supply chain"
    },
    {
      "slug": "unclassified",
      "title": "Unclassified"
    }
  ],
  "verifications": [
    {
      "tool": "eslint",
      "method": "static_analysis",
      "commands": [
        "eslint --cache"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.eslint"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: eslint"
        },
        {
          "path": "eslint.config.mjs",
          "locator": "config file"
        }
      ],
      "upstream": "https://github.com/eslint/eslint",
      "docs": "https://eslint.org/docs/latest/use/command-line-interface#exit-codes",
      "exit_codes": {
        "0": "no errors",
        "1": "linting errors found",
        "2": "configuration problem or internal error"
      },
      "autofix": true,
      "declared_only": false
    },
    {
      "tool": "tsc",
      "method": "static_analysis",
      "commands": [
        "tsc -p .",
        "tsc -p packages/extension/tsconfig.json",
        "tsc -p packages/extension/tsconfig.ui.json"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.tsc"
        },
        {
          "path": "package.json",
          "locator": "devDependencies: typescript"
        }
      ],
      "upstream": "https://github.com/microsoft/TypeScript",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "ci-matrix",
      "method": "testing",
      "commands": [
        "test_extension (os: 1)",
        "test_webview_simulator (shard: 4)"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/tests_extension.yml",
          "locator": "jobs.test_extension.strategy.matrix"
        },
        {
          "path": ".github/workflows/tests_webview_simulator.yml",
          "locator": "jobs.test_webview_simulator.strategy.matrix"
        }
      ],
      "upstream": "https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": "playwright",
      "method": "testing",
      "commands": [
        "playwright test --config=tests/extension/playwright.config.ts",
        "playwright test --config=tests/library/playwright.config.ts",
        "playwright test --config tests/webview/playwright.config.ts --shard=$EXPR/4",
        "playwright test --config=tests/library/playwright.config.ts --project=chromium-*",
        "playwright test --config=tests/library/playwright.config.ts --project=firefox-*"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/tests_extension.yml",
          "locator": "jobs.test_extension.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.test-extension"
        },
        {
          "path": ".github/workflows/tests_primary.yml",
          "locator": "jobs.test_vscode_extension.steps[9] (Run extension tests)"
        },
        {
          "path": "package.json",
          "locator": "scripts.test"
        },
        {
          "path": ".github/workflows/tests_webview_simulator.yml",
          "locator": "jobs.test_webview_simulator.steps[11] (Run WebView tests)"
        },
        {
          "path": "package.json",
          "locator": "scripts.ctest"
        },
        {
          "path": "package.json",
          "locator": "scripts.ftest"
        },
        {
          "path": "package.json",
          "locator": "scripts.wtest"
        },
        {
          "path": "package.json",
          "locator": "scripts.wvtest"
        },
        {
          "path": "package.json",
          "locator": "scripts.atest"
        },
        {
          "path": "package.json",
          "locator": "scripts.etest"
        },
        {
          "path": "package.json",
          "locator": "scripts.itest"
        }
      ],
      "upstream": "https://github.com/microsoft/playwright",
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "delete p.devDependencies[@playwright/test]"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/tests_primary.yml",
          "locator": "jobs.test_vscode_extension.steps[7] (Remove @playwright/test from extension dependencies)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node ./tests/playwright-test/stable-test-runner/node_modules/@playwright/test/cli test --config=tests/playwright-test/playwright.config.ts"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.ttest"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/check_audit.js"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[7] (Audit prod NPM dependencies)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/check_deps.js"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.check-deps"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/concurrently.js npm run eslint npm run tsc npm run doc npm run check-deps node utils/generate_channels.js npm run lint-tests npm run test-types npm run lint-packages node utils/doclint/linting-code-snippets/cli.js --js-only"
      ],
      "triggers": [
        "local"
      ],
      "evidence": [
        {
          "path": "package.json",
          "locator": "scripts.flint"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/concurrently.js tsc -p utils/generate_types/test/tsconfig.json tsc -p ./tests/"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.test-types"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/doclint/cli.js"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.doc"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/doclint/linting-code-snippets/cli.js"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.lint-snippets.steps[8]"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/generate_channels.js"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/generate_types/"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.test-types"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/lint_tests.js"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint-tests"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/test-results-db/cli.ts download"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/update_test_results_db.yml",
          "locator": "jobs.update.steps[3] (Download current database)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/test-results-db/cli.ts truncate --max-runs 2000"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/update_test_results_db.yml",
          "locator": "jobs.update.steps[5] (Truncate to run cap)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/test-results-db/cli.ts update --lookback-days 7 --concurrency 32"
      ],
      "triggers": [
        "ci"
      ],
      "evidence": [
        {
          "path": ".github/workflows/update_test_results_db.yml",
          "locator": "jobs.update.steps[4] (Ingest new test results)"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    },
    {
      "tool": null,
      "method": "unclassified",
      "commands": [
        "node utils/workspace.js --ensure-consistent"
      ],
      "triggers": [
        "ci",
        "local"
      ],
      "evidence": [
        {
          "path": ".github/workflows/infra.yml",
          "locator": "jobs.doc-and-lint.steps[5]"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint"
        },
        {
          "path": "package.json",
          "locator": "scripts.lint-packages"
        }
      ],
      "upstream": null,
      "docs": null,
      "exit_codes": {},
      "autofix": false,
      "declared_only": false
    }
  ]
}
