GoogleChrome/lighthouse · error · Error
Step "${name}" did not return a result
Error message
Step "${name}" did not return a result What it means
Thrown by auditGatherSteps() when Runner.audit() returns a falsy value (null or undefined) for a specific gather step. Runner.audit processes the step's artifacts through all configured audits. A null return indicates the audit was programmatically skipped or failed internally without throwing. This is an internal failure in the auditing pipeline, not a user API misuse.
Source
Thrown at core/user-flow.js:340
const {artifacts, flags} = gatherStep;
const name = getStepName(flags, artifacts);
let runnerOptions = options.gatherStepRunnerOptions?.get(gatherStep);
// If the gather step is not active, we must recreate the runner options.
if (!runnerOptions) {
// Step specific configs take precedence over a config for the entire flow.
const config = options.config;
const {gatherMode} = artifacts.GatherContext;
const {resolvedConfig} = await initializeConfig(gatherMode, config, flags);
runnerOptions = {
resolvedConfig,
computedCache: new Map(),
};
}
const result = await Runner.audit(artifacts, runnerOptions);
if (!result) throw new Error(`Step "${name}" did not return a result`);
steps.push({lhr: result.lhr, name});
}
return {steps, name: getFlowName(options.name, gatherSteps)};
}
export {
UserFlow,
auditGatherSteps,
getStepName,
getFlowName,
UIStrings,
};
View on GitHub (pinned to 9515cd4e58)
Solutions
- Check the Lighthouse version — ensure gather and audit use the same version
- Inspect the specific step's artifacts for completeness — verify GatherContext, URL, and settings are populated
- Enable debug logging to see Runner.audit internal behavior before the null return
- If using a custom config, verify it includes audits and doesn't filter them all out
- Try re-running the gather step — transient failures can produce incomplete artifacts
Defensive patterns
Strategy: try-catch
Try / catch
for (const gatherStep of gatherSteps) {
const result = await Runner.audit(artifacts, runnerOptions);
if (!result) {
console.warn(`Step produced no result — check artifacts and config compatibility`);
continue; // or collect failures and report at end
}
steps.push({lhr: result.lhr, name});
} Prevention
- Use the same Lighthouse version for gather and audit phases
- Inspect artifacts for completeness (GatherContext, URL, settings) before auditing
- If loading saved artifacts, validate them against the expected schema
- Enable Lighthouse debug logging to diagnose Runner.audit internal failures
When it happens
Trigger: Called from auditGatherSteps (user-flow.js:339). Fires when Runner.audit(artifacts, runnerOptions) returns null/undefined. This happens when the Runner encounters a condition that causes it to return null — typically an internal error path, a configuration that disables all audits, or a corrupted artifacts object that fails validation silently.
Common situations: Internal Lighthouse bug in Runner.audit for a specific artifacts shape. Corrupted or incomplete artifacts from a failed gather step. A custom config that removes all audits. Version mismatch between the gather and audit phases. Artifacts loaded from a saved flow that are missing required fields.
Related errors
- ${auditName} has no audit() method.
- ${auditName} has no meta.id property, or the property is not
- Timespan already in progress
- Navigation already in progress
- No navigation in progress
AI-assisted analysis of GoogleChrome/lighthouse@9515cd4e58 (2026-08-13).
Data as JSON: /api/errors/a93ffe99476b043c.
Report an issue: GitHub.