Skip to content

Simulated throttling edge-case: doesn't account for timeout #16588

@1um

Description

@1um

FAQ

  • [-] Yes, my issue is not about variability or throttling.
    Note: Didn't find a place to report simulation edge-case scenarios in doc above.
  • Yes, my issue is not about a specific accessibility audit (file with axe-core instead).
  • Yes, my issue is not answered by other FAQs.

URL

https://1um.github.io/lcp-test/lcp-1?fetchCount=40

What happened?

Setup:
Page is shown after timeout or all requests are finished (whatever first).
As fetchCount goes up, LCP is going up, in simulated mode.

Real world scenario:
A/B testing script hides page and apply changes before user sees the original (prevent flicking).
If timeout reached, regardless of a/b test, hydration, etc queries, show page as is.

What did you expect?

LCP is not going up and capped, due to timeout branch.

What have you tried?

Created minimalistic demo of the issue, to rule out any other variables.

Scenario URL Simulated LCP DevTools LCP
No script https://1um.github.io/lcp-test/lcp-1?exitEarly=true 0.9 s 0.8 s
fetchCount=1 https://1um.github.io/lcp-test/lcp-1?fetchCount=1 1.7 s 1.4 s
fetchCount=40 https://1um.github.io/lcp-test/lcp-1?fetchCount=40 3.2 s 1.7 s
fetchCount=100 https://1um.github.io/lcp-test/lcp-1?fetchCount=100 6.3 s 1.8 s
fetchCount=200 https://1um.github.io/lcp-test/lcp-1?fetchCount=200 11.4 s 1.8 s

Simulated:
Image

DevTools:
Image

Code:
https://github.com/1um/lcp-test/blob/main/lcp-1.html

How were you running Lighthouse?

Chrome DevTools

Lighthouse Version

12.6.0

Chrome Version

138.0.0.0

Node Version

No response

OS

MacOS

Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions