{"record":{"id":"a438efe4848360ee","repo":"GoogleChrome/lighthouse","slug":"pluginname-has-no-valid-category","errorCode":null,"errorMessage":"${pluginName} has no valid category.","messagePattern":"(.+?) has no valid category\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"core/config/config-plugin.js","lineNumber":137,"sourceCode":"\n      const prependedGroup = group ? `${pluginName}-${group}` : group;\n      return {\n        id,\n        weight,\n        group: prependedGroup,\n      };\n    });\n  }\n\n  /**\n   * Extract and validate the category added by the plugin.\n   * @param {unknown} categoryJson\n   * @param {string} pluginName\n   * @return {LH.Config.CategoryJson}\n   */\n  static _parseCategory(categoryJson, pluginName) {\n    if (!isObjectOfUnknownProperties(categoryJson)) {\n      throw new Error(`${pluginName} has no valid category.`);\n    }\n\n    const {\n      title,\n      description,\n      manualDescription,\n      auditRefs: auditRefsJson,\n      supportedModes,\n      ...invalidRest\n    } = categoryJson;\n\n    assertNoExcessProperties(invalidRest, pluginName, 'category');\n\n    if (!i18n.isStringOrIcuMessage(title)) {\n      throw new Error(`${pluginName} has an invalid category tile.`);\n    }\n    if (!i18n.isStringOrIcuMessage(description) && description !== undefined) {\n      throw new Error(`${pluginName} has an invalid category description.`);","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/GoogleChrome/lighthouse/blob/9515cd4e58ebed69f78742d932b501c2cab8ad8f/core/config/config-plugin.js#L119-L155","documentation":"Error \"${pluginName} has no valid category.\" thrown in GoogleChrome/lighthouse.","triggerScenarios":"Thrown when a plugin does not define a valid category.","commonSituations":"See trigger scenarios.","solutions":["Add a `category` object to the plugin with at least a `title` property.","Ensure the category value is a plain object, not a string or array."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9515cd4e58ebed69f78742d932b501c2cab8ad8f","analyzedAt":"2026-08-13T06:28:10.346Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}