{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:recommended"],
  "dependencyDashboard": true,
  "dependencyDashboardLabels": ["B-dependencies"],
  "dependencyDashboardHeader": "This dashboard exists for visibility into Renovate's state and for surfacing problems. Renovate creates a branch per eligible update and validates it with the CI - Renovate - RBE workflow. If the check passes, Renovate merges the branch directly into `trunk` with no PR. If the check fails, Renovate raises a draft PR as a fallback so a human can investigate.",
  "automerge": true,
  "automergeType": "branch",
  "draftPR": true,
  "branchConcurrentLimit": 1,
  "skipArtifactsUpdate": true,
  "labels": ["B-dependencies"],
  "baseBranchPatterns": ["trunk"],
  "ignorePaths": [
    "**/requirements_lock.txt",
    "renovate.json",
    "common/src/web/simpleTest.html"
  ],
  "constraintsFiltering": "strict",
  "constraints": {
    "node": "22",
    "python": "3.10",
    "ruby": "3.3"
  },
  "packageRules": [
    {
      "description": "Override the Mend hosted runner's admin packageRule that forces dependencyDashboardApproval=true for every package, which blocks automatic branch creation.",
      "matchPackageNames": ["*"],
      "dependencyDashboardApproval": false
    },
    {
      "description": "Treat Renovate config language constraints as Selenium support policy, not update targets.",
      "matchManagers": ["renovate-config"],
      "matchDatasources": ["node-version", "python-version", "ruby-version"],
      "matchPackageNames": ["node", "python", "ruby"],
      "enabled": false
    },
    {
      "description": "Only propose Node.js runtime updates within the supported Node 22 line.",
      "matchManagers": ["node-version", "npm", "github-actions"],
      "matchPackageNames": ["node"],
      "allowedVersions": "<23"
    },
    {
      "description": "Only propose Node.js type definition updates within the supported Node 22 line.",
      "matchManagers": ["npm"],
      "matchPackageNames": ["@types/node"],
      "allowedVersions": "<23"
    },
    {
      "description": "Only propose Python runtime updates within the supported Python 3.10 line.",
      "matchDatasources": ["python-version"],
      "matchPackageNames": ["python"],
      "allowedVersions": "<3.11"
    },
    {
      "description": "Only propose Ruby runtime updates within the supported Ruby 3.3 line.",
      "matchManagers": ["ruby-version"],
      "matchPackageNames": ["ruby"],
      "allowedVersions": "<3.4"
    },
    {
      "description": "Do not track Docker image references in this repository.",
      "matchDatasources": ["docker"],
      "enabled": false
    },
    {
      "description": "Do not propose NuGet updates; bumping csproj references does not affect the published Selenium.WebDriver package consumers receive.",
      "matchManagers": ["nuget"],
      "enabled": false
    },
    {
      "description": "Do not propose routine Grid UI dependency upgrades in the dashboard baseline; keep vulnerability fixes eligible.",
      "matchFileNames": ["javascript/grid-ui/package.json"],
      "matchJsonata": ["$not($exists(vulnerabilityFixVersion))"],
      "enabled": false
    },
    {
      "description": "Sphinx 8.x requires docutils<0.22 and Sphinx 9 needs Python >=3.11.",
      "matchPackageNames": ["docutils"],
      "allowedVersions": "<0.22"
    },
    {
      "description": "Group Bazel and Bazel module dependency declarations in the dashboard.",
      "matchManagers": ["bazel", "bazel-module", "bazelisk"],
      "dependencyDashboardCategory": "Bazel and Toolchains"
    },
    {
      "description": "Use Maven version ordering for Maven artifacts found through Bazel managers.",
      "matchManagers": ["bazel", "bazel-module"],
      "matchDatasources": ["maven"],
      "versioning": "maven",
      "dependencyDashboardCategory": "Java and Maven"
    },
    {
      "description": "Group GitHub Actions workflow dependencies in the dashboard.",
      "matchManagers": ["github-actions"],
      "dependencyDashboardCategory": "GitHub Actions"
    },
    {
      "description": "Group JavaScript package declarations in the dashboard.",
      "matchManagers": ["npm"],
      "dependencyDashboardCategory": "JavaScript"
    },
    {
      "description": "Group Python declarations and pinned requirements in the dashboard.",
      "matchManagers": ["pep621", "pip_requirements", "poetry"],
      "dependencyDashboardCategory": "Python"
    },
    {
      "description": "Group Ruby declarations and runtime version files in the dashboard.",
      "matchManagers": ["bundler", "ruby-version"],
      "dependencyDashboardCategory": "Ruby"
    },
    {
      "description": "Group Rust Cargo declarations in the dashboard.",
      "matchManagers": ["cargo"],
      "dependencyDashboardCategory": "Rust"
    },
    {
      "description": "llvm and rules_rs upgrades blocked pending Rust build work in https://github.com/SeleniumHQ/selenium/pull/17427.",
      "matchManagers": ["bazel-module"],
      "matchPackageNames": ["llvm", "rules_rs"],
      "enabled": false
    },
    {
      "description": "rules_python v2 upgrade blocked pending https://github.com/bazel-contrib/rules_python/pull/3790.",
      "matchManagers": ["bazel-module"],
      "matchPackageNames": ["rules_python"],
      "allowedVersions": "<2"
    },
    {
      "description": "Byte Buddy publishes -jdkN compat variants alongside regular releases; Maven sorts those variants as newer. Selenium targets Java 8+ so we want the regular release without the JDK suffix. https://github.com/SeleniumHQ/selenium/issues/17355",
      "matchPackageNames": ["net.bytebuddy:byte-buddy"],
      "allowedVersions": "!/-jdk\\d/"
    },
    {
      "description": "Maven Central indexes non-stable date-based graphql-java artifacts (e.g. 6-digit date prefixes or 0.0.0- prereleases) that sort as 'latest'. https://github.com/graphql-java/graphql-java/discussions/3187",
      "matchPackageNames": ["com.graphql-java:graphql-java"],
      "allowedVersions": "!/^(\\d{6}-|0\\.0\\.0-)/"
    }
  ]
}
