GoogleChrome/lighthouse · error · LighthouseError

MISSING_REQUIRED_ARTIFACT

MISSING_REQUIRED_ARTIFACT

Error message

Required {artifactName} gatherer did not run.

What it means

Error "Required {artifactName} gatherer did not run." thrown in GoogleChrome/lighthouse.

Source

Thrown at core/runner.js:375

    const audit = auditDefn.implementation;
    const status = {
      msg: `Auditing: ${format.getFormatted(audit.meta.title, 'en-US')}`,
      id: `lh:audit:${audit.meta.id}`,
    };
    log.time(status);

    let auditResult;
    try {
      if (artifacts.PageLoadError) throw artifacts.PageLoadError;

      // Return an early error if an artifact required for the audit is missing or an error.
      for (const artifactName of audit.meta.requiredArtifacts) {
        const noArtifact = artifacts[artifactName] === undefined;

        if (noArtifact) {
          log.warn('Runner',
              `${artifactName} gatherer, required by audit ${audit.meta.id}, did not run.`);
          throw new LighthouseError(
            LighthouseError.errors.MISSING_REQUIRED_ARTIFACT, {artifactName});
        }

        // If artifact was an error, output error result on behalf of audit.
        if (artifacts[artifactName] instanceof Error) {
          /** @type {Error} */
          const artifactError = artifacts[artifactName];

          log.warn('Runner', `${artifactName} gatherer, required by audit ${audit.meta.id},` +
            ` encountered an error: ${artifactError.message}`);

          // Create a friendlier display error and mark it as expected to avoid duplicates in Sentry.
          // The artifact error was already sent to Sentry in `collectPhaseArtifacts`.
          const error = new LighthouseError(LighthouseError.errors.ERRORED_REQUIRED_ARTIFACT,
              {artifactName, errorMessage: artifactError.message}, {cause: artifactError});
          // @ts-expect-error Non-standard property added to Error
          error.expected = true;
          throw error;

View on GitHub (pinned to 9515cd4e58)

Solutions

  1. Ensure the named gatherer is included in the active config (check onlyAudits/onlyCategories filters).
  2. If using a custom config, add the artifact's gatherer to the pass configuration.
  3. Re-run without skipping the gatherer via skipAudits.

When it happens

Trigger: Raised by the runner when an artifact required by the config was not gathered.

Common situations: See trigger scenarios.


AI-assisted analysis of GoogleChrome/lighthouse@9515cd4e58 (2026-08-13). Data as JSON: /api/errors/115d61928d92cbff. Report an issue: GitHub.