Performance API
Pylenium's custom performance API to capture different metrics.
Syntax
py.performance -> Performance
py.performance.get() -> WebPerformance
Usage
The Performance class is where everything lives. It provides access to the following methods:
WebPerformance
The main method used to generate a WebPerformance object from the current web page. This is really all you need from this API and will be discussed in more detail further below in Metrics.
Calling this method too soon may yield NoneTypes because the browser hasn't generated them yet.
py.performance.get() -> WebPerformance
Time Origin
Return the timeOrigin precision value. This is the high-resolution timestamp of the start time of the performance measurement.
py.performance.get_time_origin() -> float
Navigation Timing
Return the PerformanceNavigationTiming W3 object as a Python object called NavigationTiming.
py.performance.get_navigation_timing() -> NavigationTiming
Paint Timing
Return the PerformancePaintTiming object as a Python object called PaintTiming.
py.performance.get_paint_timing() -> PaintTiming
Resources
Return a list of PerformanceResourceTiming objects as Python objects called [ResourceTiming].
py.performance.get_resources() -> List[ResourceTiming]
Metrics
All of the timing objects include A LOT of data points, but many of them may not be useful.
This is why the WebPerformance object exists! It contains calculations for metrics that have been very useful when we talk about and measure web performance. After navigating to a website and capturing these metrics with py.performance.get()
, we can do whatever we want with them!
With a few lines of code, you have access to many valuable metrics:
# perf will be used in the examples below
py.visit("https://your-website.com")
perf = py.performance.get()
Page Load Time
The time it takes for the page to load as experienced by the user.
perf.page_load_time() -> float
Time to First Byte
The time it takes before the first byte of response is received from the server.
perf.time_to_first_byte() -> float
Time to First Contentful Paint
The time it takes for the majority of content to be fully rendered and consumable by the user.
perf.time_to_first_contentful_paint() -> float
Time to Interactive (TTI)
The time it takes for the layout to be stabilized and the page is responsive.
perf.time_to_interactive() -> float
Number of Requests
The number of requests sent from start of navigation until end of page load.
perf.number_of_requests() -> int
Time to DOM Content Loaded
The time it takes for the DOM content to load.
perf.time_to_dom_content_loaded() -> float
Page Weight
The amount of bytes transferred for the page to be loaded.
perf.page_weight() -> float
Connection Time
The time taken to connect to the server.
perf.connection_time() -> float
Request Time
The time taken to send a request to the server and receive the response.
perf.request_time() -> float
Fetch Time
The time to complete the document fetch (including accessing any caches, etc.).
perf.fetch_time() -> float
Examples
Store the entire WebPerformance object in a variable, then convert it to a Dictionary to log it.
perf = py.performance.get()
py.log.info(perf.dict())
Store a single data point in a variable and test against it.
tti = py.performance.get().time_to_interactive()
assert tti < BASELINE, f"TTI should be less than our baseline."
Last updated