Summary
Lighthouse is going to slowly introduce support for running on flows, i.e. situations beyond just the initial page load. This issue collects related discussions we've had on this topic in the past, describes the rough roadmap and milestones, and links to relevant design documents as they're written.
Scope
Four core scenarios to eventually support.
- Run snapshot-style audits on a page after interaction, i.e. I've clicked a menu option and now rerun the accessibility category
- Run timespan-style audits on a page during any arbitrary interaction
- Run Lighthouse on a traditional page navigation from an existing page
- Run Lighthouse on a single page app navigation
Tentative Milestones
Phase 0 - Research & Design
Phase 1 - Basic End-to-End FR Structure
Phase 2 - Configuration Support, Snapshot mode
Phase 3 - Timespan mode
Phase 4 - Navigation mode
Phase 5 - Audit/Artifact upgrading
Goals: Internal refactoring to make places that require a page load more explicit, remove assumptions. (e.g. #11034 #11253 etc)
Goal: Match real-world navigation mode usecases (waitFor conditions, real network monitor stuff)
This part is parallelizable and work likely distributed among the team.
Phase 6 - Transitional Compatibility Layer / Parity / DevTools compat
Phase 7 - Report UI + API Hardening
Phase 8 (Post CDS) - Fraggle Rock as the new normal, scope expansion, cleanup, QoS improvements
High Priority
Backlog
Epics
Tasks
Roughly priority ranked.
CDP Asks
- getThrottlingSettings/getEmulationSettings
Related Issues
#1769
#3837
#11312
#11122
#6028
#1418
#2332
Summary
Lighthouse is going to slowly introduce support for running on flows, i.e. situations beyond just the initial page load. This issue collects related discussions we've had on this topic in the past, describes the rough roadmap and milestones, and links to relevant design documents as they're written.
Scope
Four core scenarios to eventually support.
Tentative Milestones
Phase 0 - Research & Design
Phase 1 - Basic End-to-End FR Structure
TransitionalGathererandTransitionalDrivertypes that any gatherer supporting FR must use instead of default gatherer (with full access to driver andloadData) core(fr): add fraggle rock driver #11742 core(config): remove gatherer options support #11743-pptrtest.jssuite support that runs separately from unit but can use real chrome and test puppeteer use cases core(fr): add base fraggle rock snapshot runner #11748Phase 2 - Configuration Support, Snapshot mode
.metathat can annotate gatherers with their supported mode core(fr): add base gatherer class #11917snapshotmethod to return the artifact core(fr): add base gatherer class #11917Phase 3 - Timespan mode
api.jsintogather/snapshot-runner/gather/timespan-runnercore(fr): add basic timespan support #11944Phase 4 - Navigation mode
DevToolsLoggathereronAny()Tracegatherer andtracesshim artifactdevtoolsLogsshim artifactPhase 5 - Audit/Artifact upgrading
Goals: Internal refactoring to make places that require a page load more explicit, remove assumptions. (e.g. #11034 #11253 etc)
Goal: Match real-world navigation mode usecases (waitFor conditions, real network monitor stuff)
This part is parallelizable and work likely distributed among the team.
Phase 6 - Transitional Compatibility Layer / Parity / DevTools compat
id)Phase 7 - Report UI + API Hardening
i18n string check report(flow): import lhr strings #13215 (comment)tracked elsewherePhase 8 (Post CDS) - Fraggle Rock as the new normal, scope expansion, cleanup, QoS improvements
High Priority
navigate: () => myLink.click()instead of a URLrequestedUrland/or backfill requestedUrl to matchBacklog
Epics
single page app navigation mode (provide SPA load metrics like navigation, not just timespan)tracked elsewhereopportunity rework to focus on kilobytes rather than wastedMsprimo prioanti-clobber mode (go through our methods that can stomp on puppeteer usage and optionally skip them)tracked elsewherethrottlingemulationblocked URL patternsrequest interceptionjavascript dialogsdisconnect should disable all settingscleanuptracked elsewhereremove legacy pathremove gather-runnerremove artifact hacks forupdate config helpers to use new FR types[ ] More consistent thumbnails (example)Tasks
Roughly priority ranked.
ensure that defaultSession can't be used to enable/disable domainsnot doingenforce any use ofnot doing*.disablemust use a dedicated sessionHighest-impact audits report(flow): top opportunities #13082tracked elsewhereartifact improvementsnot doingsplit cssusage artifact into stylesheet content and usagesplit jsusage artifact into script content and usagemobile viewport for flow reporttracked elsewherepagedependencygraph support for timespansfuck noCDP Asks
Related Issues
#1769
#3837
#11312
#11122
#6028
#1418
#2332