Skip to content

Commit a06f6f7

Browse files
authored
core: use resolvedConfig to name every resolved config (#14600)
1 parent 71f0f40 commit a06f6f7

23 files changed

+337
-319
lines changed

clients/test/lightrider/lightrider-entry-test.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ describe('lightrider-entry', () => {
6565
const url = 'https://example.com';
6666

6767
await runLighthouseInLR(mockConnection, url, {}, {});
68-
const config = runStub.mock.calls[0][1].config;
69-
assert.equal(config.settings.channel, 'lr');
68+
const resolvedConfig = runStub.mock.calls[0][1].resolvedConfig;
69+
assert.equal(resolvedConfig.settings.channel, 'lr');
7070

7171
runStub.mockRestore();
7272
});
@@ -79,8 +79,8 @@ describe('lightrider-entry', () => {
7979

8080
const lrDevice = 'desktop';
8181
await runLighthouseInLR(mockConnection, url, {}, {lrDevice});
82-
const config = runStub.mock.calls[0][1].config;
83-
assert.equal(config.settings.formFactor, 'desktop');
82+
const resolvedConfig = runStub.mock.calls[0][1].resolvedConfig;
83+
assert.equal(resolvedConfig.settings.formFactor, 'desktop');
8484

8585
runStub.mockRestore();
8686
});
@@ -93,8 +93,8 @@ describe('lightrider-entry', () => {
9393

9494
const lrDevice = 'mobile';
9595
await runLighthouseInLR(mockConnection, url, {}, {lrDevice});
96-
const config = runStub.mock.calls[0][1].config;
97-
assert.equal(config.settings.formFactor, 'mobile');
96+
const resolvedConfig = runStub.mock.calls[0][1].resolvedConfig;
97+
assert.equal(resolvedConfig.settings.formFactor, 'mobile');
9898

9999
runStub.mockRestore();
100100
});
@@ -112,9 +112,9 @@ describe('lightrider-entry', () => {
112112
},
113113
};
114114
await runLighthouseInLR(mockConnection, url, {}, {configOverride});
115-
const config = runStub.mock.calls[0][1].config;
116-
assert.equal(config.settings.onlyAudits.length, 1);
117-
assert.equal(config.settings.onlyAudits[0], 'network-requests');
115+
const resolvedConfig = runStub.mock.calls[0][1].resolvedConfig;
116+
assert.equal(resolvedConfig.settings.onlyAudits.length, 1);
117+
assert.equal(resolvedConfig.settings.onlyAudits[0], 'network-requests');
118118

119119
runStub.mockRestore();
120120
});

core/config/config.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ function resolveFakeNavigations(artifactDefns, settings) {
238238
* @param {LH.Gatherer.GatherMode} gatherMode
239239
* @param {LH.Config.Json=} configJSON
240240
* @param {LH.Flags=} flags
241-
* @return {Promise<{config: LH.Config.FRConfig, warnings: string[]}>}
241+
* @return {Promise<{resolvedConfig: LH.Config.FRConfig, warnings: string[]}>}
242242
*/
243243
async function initializeConfig(gatherMode, configJSON, flags = {}) {
244244
const status = {msg: 'Initialize config', id: 'lh:config'};
@@ -257,7 +257,7 @@ async function initializeConfig(gatherMode, configJSON, flags = {}) {
257257
const navigations = resolveFakeNavigations(artifacts, settings);
258258

259259
/** @type {LH.Config.FRConfig} */
260-
let config = {
260+
let resolvedConfig = {
261261
artifacts,
262262
navigations,
263263
audits: await resolveAuditsToDefns(configWorkingCopy.audits, configDir),
@@ -266,43 +266,43 @@ async function initializeConfig(gatherMode, configJSON, flags = {}) {
266266
settings,
267267
};
268268

269-
const {warnings} = assertValidConfig(config);
269+
const {warnings} = assertValidConfig(resolvedConfig);
270270

271-
config = filterConfigByGatherMode(config, gatherMode);
272-
config = filterConfigByExplicitFilters(config, settings);
271+
resolvedConfig = filterConfigByGatherMode(resolvedConfig, gatherMode);
272+
resolvedConfig = filterConfigByExplicitFilters(resolvedConfig, settings);
273273

274274
log.timeEnd(status);
275-
return {config, warnings};
275+
return {resolvedConfig, warnings};
276276
}
277277

278278
/**
279-
* @param {LH.Config.FRConfig} config
279+
* @param {LH.Config.FRConfig} resolvedConfig
280280
* @return {string}
281281
*/
282-
function getConfigDisplayString(config) {
282+
function getConfigDisplayString(resolvedConfig) {
283283
/** @type {LH.Config.FRConfig} */
284-
const jsonConfig = JSON.parse(JSON.stringify(config));
284+
const resolvedConfigCopy = JSON.parse(JSON.stringify(resolvedConfig));
285285

286-
if (jsonConfig.navigations) {
287-
for (const navigation of jsonConfig.navigations) {
286+
if (resolvedConfigCopy.navigations) {
287+
for (const navigation of resolvedConfigCopy.navigations) {
288288
for (let i = 0; i < navigation.artifacts.length; ++i) {
289289
// @ts-expect-error Breaking the Config.AnyArtifactDefn type.
290290
navigation.artifacts[i] = navigation.artifacts[i].id;
291291
}
292292
}
293293
}
294294

295-
if (jsonConfig.artifacts) {
296-
for (const artifactDefn of jsonConfig.artifacts) {
295+
if (resolvedConfigCopy.artifacts) {
296+
for (const artifactDefn of resolvedConfigCopy.artifacts) {
297297
// @ts-expect-error Breaking the Config.AnyArtifactDefn type.
298298
artifactDefn.gatherer = artifactDefn.gatherer.path;
299299
// Dependencies are not declared on Config JSON
300300
artifactDefn.dependencies = undefined;
301301
}
302302
}
303303

304-
if (jsonConfig.audits) {
305-
for (const auditDefn of jsonConfig.audits) {
304+
if (resolvedConfigCopy.audits) {
305+
for (const auditDefn of resolvedConfigCopy.audits) {
306306
// @ts-expect-error Breaking the Config.AuditDefn type.
307307
auditDefn.implementation = undefined;
308308
if (Object.keys(auditDefn.options).length === 0) {
@@ -313,9 +313,9 @@ function getConfigDisplayString(config) {
313313
}
314314

315315
// Printed config is more useful with localized strings.
316-
format.replaceIcuMessages(jsonConfig, jsonConfig.settings.locale);
316+
format.replaceIcuMessages(resolvedConfigCopy, resolvedConfigCopy.settings.locale);
317317

318-
return JSON.stringify(jsonConfig, null, 2);
318+
return JSON.stringify(resolvedConfigCopy, null, 2);
319319
}
320320

321321
export {

core/config/filters.js

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -257,19 +257,19 @@ function filterCategoriesByAvailableAudits(categories, availableAudits) {
257257
/**
258258
* Filters a config's artifacts, audits, and categories down to the set that supports the specified gather mode.
259259
*
260-
* @param {LH.Config.FRConfig} config
260+
* @param {LH.Config.FRConfig} resolvedConfig
261261
* @param {LH.Gatherer.GatherMode} mode
262262
* @return {LH.Config.FRConfig}
263263
*/
264-
function filterConfigByGatherMode(config, mode) {
265-
const artifacts = filterArtifactsByGatherMode(config.artifacts, mode);
266-
const supportedAudits = filterAuditsByGatherMode(config.audits, mode);
264+
function filterConfigByGatherMode(resolvedConfig, mode) {
265+
const artifacts = filterArtifactsByGatherMode(resolvedConfig.artifacts, mode);
266+
const supportedAudits = filterAuditsByGatherMode(resolvedConfig.audits, mode);
267267
const audits = filterAuditsByAvailableArtifacts(supportedAudits, artifacts || []);
268-
const supportedCategories = filterCategoriesByGatherMode(config.categories, mode);
268+
const supportedCategories = filterCategoriesByGatherMode(resolvedConfig.categories, mode);
269269
const categories = filterCategoriesByAvailableAudits(supportedCategories, audits || []);
270270

271271
return {
272-
...config,
272+
...resolvedConfig,
273273
artifacts,
274274
audits,
275275
categories,
@@ -280,22 +280,22 @@ function filterConfigByGatherMode(config, mode) {
280280
* Filters a config's artifacts, audits, and categories down to the requested set.
281281
* Skip audits overrides inclusion via `onlyAudits`/`onlyCategories`.
282282
*
283-
* @param {LH.Config.FRConfig} config
283+
* @param {LH.Config.FRConfig} resolvedConfig
284284
* @param {Pick<LH.Config.Settings, 'onlyAudits'|'onlyCategories'|'skipAudits'>} filters
285285
* @return {LH.Config.FRConfig}
286286
*/
287-
function filterConfigByExplicitFilters(config, filters) {
287+
function filterConfigByExplicitFilters(resolvedConfig, filters) {
288288
const {onlyAudits, onlyCategories, skipAudits} = filters;
289289

290-
warnOnUnknownOnlyCategories(config.categories, onlyCategories);
290+
warnOnUnknownOnlyCategories(resolvedConfig.categories, onlyCategories);
291291

292-
let baseAuditIds = getAuditIdsInCategories(config.categories, undefined);
292+
let baseAuditIds = getAuditIdsInCategories(resolvedConfig.categories, undefined);
293293
if (onlyCategories) {
294-
baseAuditIds = getAuditIdsInCategories(config.categories, onlyCategories);
294+
baseAuditIds = getAuditIdsInCategories(resolvedConfig.categories, onlyCategories);
295295
} else if (onlyAudits) {
296296
baseAuditIds = new Set();
297-
} else if (!config.categories || !Object.keys(config.categories).length) {
298-
baseAuditIds = new Set(config.audits?.map(audit => audit.implementation.meta.id));
297+
} else if (!resolvedConfig.categories || !Object.keys(resolvedConfig.categories).length) {
298+
baseAuditIds = new Set(resolvedConfig.audits?.map(audit => audit.implementation.meta.id));
299299
}
300300

301301
const auditIdsToKeep = new Set(
@@ -306,17 +306,19 @@ function filterConfigByExplicitFilters(config, filters) {
306306
].filter(auditId => !skipAudits || !skipAudits.includes(auditId))
307307
);
308308

309-
const audits = auditIdsToKeep.size && config.audits ?
310-
config.audits.filter(audit => auditIdsToKeep.has(audit.implementation.meta.id)) :
311-
config.audits;
309+
const audits = auditIdsToKeep.size && resolvedConfig.audits ?
310+
resolvedConfig.audits.filter(audit => auditIdsToKeep.has(audit.implementation.meta.id)) :
311+
resolvedConfig.audits;
312312

313-
const availableCategories = filterCategoriesByAvailableAudits(config.categories, audits || []);
313+
const availableCategories =
314+
filterCategoriesByAvailableAudits(resolvedConfig.categories, audits || []);
314315
const categories = filterCategoriesByExplicitFilters(availableCategories, onlyCategories);
315-
const artifacts = filterArtifactsByAvailableAudits(config.artifacts, audits);
316-
const navigations = filterNavigationsByAvailableArtifacts(config.navigations, artifacts || []);
316+
const artifacts = filterArtifactsByAvailableAudits(resolvedConfig.artifacts, audits);
317+
const navigations =
318+
filterNavigationsByAvailableArtifacts(resolvedConfig.navigations, artifacts || []);
317319

318320
return {
319-
...config,
321+
...resolvedConfig,
320322
artifacts,
321323
navigations,
322324
audits,

core/config/validation.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -247,22 +247,22 @@ function assertArtifactTopologicalOrder(navigations) {
247247
}
248248

249249
/**
250-
* @param {LH.Config.FRConfig} config
250+
* @param {LH.Config.FRConfig} resolvedConfig
251251
* @return {{warnings: string[]}}
252252
*/
253-
function assertValidConfig(config) {
254-
const {warnings} = assertValidFRNavigations(config.navigations);
253+
function assertValidConfig(resolvedConfig) {
254+
const {warnings} = assertValidFRNavigations(resolvedConfig.navigations);
255255

256-
for (const artifactDefn of config.artifacts || []) {
256+
for (const artifactDefn of resolvedConfig.artifacts || []) {
257257
assertValidFRGatherer(artifactDefn.gatherer);
258258
}
259259

260-
for (const auditDefn of config.audits || []) {
260+
for (const auditDefn of resolvedConfig.audits || []) {
261261
assertValidAudit(auditDefn);
262262
}
263263

264-
assertValidCategories(config.categories, config.audits, config.groups);
265-
assertValidSettings(config.settings);
264+
assertValidCategories(resolvedConfig.categories, resolvedConfig.audits, resolvedConfig.groups);
265+
assertValidSettings(resolvedConfig.settings);
266266
return {warnings};
267267
}
268268

core/gather/base-artifacts.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ import {
1212
} from './driver/environment.js';
1313

1414
/**
15-
* @param {LH.Config.FRConfig} config
15+
* @param {LH.Config.FRConfig} resolvedConfig
1616
* @param {LH.Gatherer.FRTransitionalDriver} driver
1717
* @param {{gatherMode: LH.Gatherer.GatherMode}} context
1818
* @return {Promise<LH.BaseArtifacts>}
1919
*/
20-
async function getBaseArtifacts(config, driver, context) {
20+
async function getBaseArtifacts(resolvedConfig, driver, context) {
2121
const BenchmarkIndex = await getBenchmarkIndex(driver.executionContext);
2222
const {userAgent} = await getBrowserVersion(driver.defaultSession);
2323

@@ -26,7 +26,7 @@ async function getBaseArtifacts(config, driver, context) {
2626
fetchTime: new Date().toJSON(),
2727
Timing: [],
2828
LighthouseRunWarnings: [],
29-
settings: config.settings,
29+
settings: resolvedConfig.settings,
3030
// Environment artifacts that can always be computed.
3131
BenchmarkIndex,
3232
HostUserAgent: userAgent,

0 commit comments

Comments
 (0)