{
  "description": "Groups of the Web IDL specs in data/idl.json, by what they matter for in unit tests. Each spec belongs to exactly one group (test/spec-groups.test.mjs checks this); specs are listed by their browser-specs shortname. The Coverage page and the per-engine coverage numbers default to the first group.",
  "groups": [
    {
      "id": "core",
      "title": "Test DOM core",
      "reason": "What unit and component tests touch: DOM, all of HTML (forms, dialog, custom elements, Web Storage, structured clone, Page Visibility, timers), Web IDL's DOMException, CSSOM and CSSOM View (matchMedia, scrolling, geometry of elements), CSS animation and transition events, CSS.supports, UI, pointer, touch, input and clipboard events, SVG, Resize and Intersection Observer, Selection, Fullscreen, ARIA reflection, Web Animations, URL, Encoding, Fetch, XHR, File API, Streams, Console, Web Crypto, Geometry, High Resolution Time, Performance Timeline, User Timing and requestIdleCallback. Specs are grouped whole, so HTML's canvas and media element members count here too.",
      "specs": [
        "clipboard-apis",
        "console",
        "css-animations",
        "css-conditional",
        "css-transitions",
        "cssom",
        "cssom-view",
        "dom",
        "encoding",
        "fetch",
        "FileAPI",
        "fullscreen",
        "geometry",
        "hr-time",
        "html",
        "input-events",
        "intersection-observer",
        "performance-timeline",
        "pointerevents",
        "requestidlecallback",
        "resize-observer",
        "selection-api",
        "streams",
        "SVG",
        "touch-events",
        "uievents",
        "url",
        "user-timing",
        "wai-aria",
        "web-animations",
        "webcrypto",
        "webidl",
        "xhr"
      ]
    },
    {
      "id": "rendering",
      "title": "Rendering and graphics",
      "reason": "Painting, layout and graphics, which no test DOM computes: WebGL, WebGPU, CSS Typed OM and the other Houdini APIs, font loading and metrics, newer CSS modules, view transitions, MathML, and the extensions to SVG and Web Animations beyond the core specs.",
      "specs": [
        "animation-triggers",
        "css-anchor-position",
        "css-animation-worklet",
        "css-animations-2",
        "css-cascade",
        "css-cascade-6",
        "css-color-5",
        "css-conditional-5",
        "css-contain",
        "css-counter-styles",
        "css-font-loading",
        "css-fonts",
        "css-fonts-5",
        "css-highlight-api",
        "css-images-4",
        "css-layout-api",
        "css-masking",
        "css-mixins",
        "css-nav",
        "css-nesting",
        "css-paint-api",
        "css-parser-api",
        "css-properties-values-api",
        "css-pseudo",
        "css-regions",
        "css-scroll-snap-2",
        "css-shadow",
        "css-sizing-4",
        "css-transitions-2",
        "css-typed-om",
        "css-view-transitions",
        "css-viewport",
        "document-picture-in-picture",
        "edit-context",
        "filter-effects",
        "font-metrics-api",
        "ink-enhancement",
        "local-font-access",
        "mathml-core",
        "mediaqueries-5",
        "pointer-animations",
        "scroll-animations",
        "svg-animations",
        "svg-paths",
        "virtual-keyboard",
        "web-animations-2",
        "webgl1",
        "webgl2",
        "webgpu",
        "window-controls-overlay"
      ]
    },
    {
      "id": "media",
      "title": "Media and devices",
      "reason": "Audio, video, capture, WebRTC, codecs, speech, XR, sensors, geolocation and hardware access (gamepad, USB, Bluetooth, HID, serial, MIDI, NFC). Tests that use these mock them.",
      "specs": [
        "accelerometer",
        "ambient-light",
        "anchors",
        "audio-output",
        "audio-session",
        "autoplay-detection",
        "battery-status",
        "bluetooth",
        "bluetooth-scanning",
        "body-tracking",
        "capture-handle-identity",
        "captured-mouse-events",
        "compute-pressure",
        "cpu-performance",
        "datacue",
        "device-attributes",
        "device-memory",
        "device-posture",
        "element-capture",
        "encrypted-media",
        "eyedropper-api",
        "gamepad",
        "gamepad-extensions",
        "generic-sensor",
        "geolocation",
        "geolocation-element",
        "gyroscope",
        "handwriting-recognition",
        "hid",
        "html-media-capture",
        "idle-detection",
        "image-capture",
        "input-device-capabilities",
        "keyboard-lock",
        "keyboard-map",
        "magnetometer",
        "media-capabilities",
        "media-playback-quality",
        "media-source",
        "mediacapture-extensions",
        "mediacapture-fromelement",
        "mediacapture-handle-actions",
        "mediacapture-region",
        "mediacapture-streams",
        "mediacapture-surface-control",
        "mediacapture-transform",
        "mediacapture-viewport",
        "mediasession",
        "mediastream-recording",
        "model-element",
        "mst-content-hint",
        "netinfo",
        "orientation-event",
        "orientation-sensor",
        "picture-in-picture",
        "pointerlock",
        "presentation-api",
        "proximity",
        "raw-camera-access",
        "real-world-meshing",
        "remote-playback",
        "savedata",
        "screen-capture",
        "screen-orientation",
        "screen-wake-lock",
        "serial",
        "shape-detection-api",
        "speech-api",
        "text-detection-api",
        "usb",
        "vibration",
        "video-rvfc",
        "web-nfc",
        "webaudio",
        "webcodecs",
        "webmidi",
        "webrtc",
        "webrtc-diagnostic-logging",
        "webrtc-encoded-transform",
        "webrtc-ice",
        "webrtc-identity",
        "webrtc-priority",
        "webvtt",
        "webxr",
        "webxr-ar-module",
        "webxr-depth-sensing",
        "webxr-dom-overlays",
        "webxr-gamepads-module",
        "webxr-hand-input",
        "webxr-hit-test",
        "webxr-lighting-estimation",
        "webxr-plane-detection",
        "webxr-webgpu-binding",
        "webxrlayers",
        "window-management"
      ]
    },
    {
      "id": "platform",
      "title": "Platform and app",
      "reason": "Integration with the browser and the operating system rather than the page: service workers, push, notifications (permission-gated and shown by the OS, so tests mock them), payments, credentials and WebAuthn, storage beyond Web Storage (IndexedDB, Storage, cookie store, file systems), permissions and security policies, WebSockets and WebTransport, sharing and installation, privacy and ads APIs, and on-device AI.",
      "specs": [
        "anonymous-iframe",
        "attribution",
        "background-fetch",
        "background-sync",
        "badging",
        "beacon",
        "connection-allowlists",
        "contact-picker",
        "content-index",
        "cookiestore",
        "crash-reporting",
        "credential-management",
        "cross-origin-storage",
        "CSP",
        "csp-embedded-enforcement",
        "digital-credentials",
        "digital-goods",
        "entries-api",
        "fedcm",
        "fenced-frame",
        "file-system-access",
        "fs",
        "get-installed-related-apps",
        "gpc",
        "IndexedDB",
        "install-element",
        "local-network-access",
        "login-status",
        "managed-configuration",
        "manifest-incubations",
        "notifications",
        "payment-request",
        "periodic-background-sync",
        "permissions",
        "permissions-policy",
        "permissions-request",
        "permissions-revoke",
        "portals",
        "prerendering-revamped",
        "private-click-measurement",
        "prompt-api",
        "proofreader-api",
        "push-api",
        "reporting",
        "saa-non-cookie-storage",
        "secure-payment-confirmation",
        "service-workers",
        "storage",
        "storage-access",
        "storage-buckets",
        "translation-api",
        "trust-token-api",
        "trusted-types",
        "ua-client-hints",
        "wasm-js-api",
        "wasm-web-api",
        "web-app-launch",
        "web-based-payment-handler",
        "web-locks",
        "web-otp",
        "web-share",
        "webauthn",
        "webmcp",
        "webnn",
        "websockets",
        "webtransport",
        "writing-assistance-apis"
      ]
    },
    {
      "id": "other",
      "title": "Other",
      "reason": "Everything else: performance metrics beyond the Performance Timeline and User Timing, task scheduling, Observable, URL Pattern, compression streams, compatibility aliases, and test and driver hooks.",
      "specs": [
        "autofill-event",
        "compat",
        "compression",
        "container-timing",
        "element-timing",
        "event-timing",
        "is-input-pending",
        "js-self-profiling",
        "largest-contentful-paint",
        "layout-instability",
        "long-animation-frames",
        "longtasks",
        "navigation-timing",
        "observable",
        "page-lifecycle",
        "paint-timing",
        "performance-measure-memory",
        "resource-timing",
        "scheduling-apis",
        "scroll-to-text-fragment",
        "server-timing",
        "soft-navigations",
        "testutils",
        "urlpattern",
        "webcrypto-modern-algos",
        "webdriver"
      ]
    }
  ]
}
