HeadSpin Documentation
Documentation

Waterfall UI

Overview

The HeadSpin Session UI is the visualization platform that lets you explore and understand your app’s network characteristics. The interface has six main sections: the Information Palette, the Metrics Graphs, the Video Capture Palette, The Issues Palette, The Timeline and the Details Palette.

Getting Started with the Waterfall UI

1. After you connect to a GEO with our mobile app, you'll receive an e-mail with a link to view your session in the Session UI.

2. While your session data loads, you'll see a card with info about the GEO for this session.

3. When the data finishes loading, the info card relocates to the upper-left area of your screen. Try clicking on the pencil icon to add a meaningful name and description to your session. You can also download an archive of your session data from here.

4. In the timeline, all your network traffic is rendered as colored blocks, grouped into connections. Connections are organized by hostname.

5. Now have a look at the issues panel. Issues indicate network messages and connections that could be slowing down your app.

6. Click on the Slow Downloads issue, and scroll down the timeline, noticing the highlighted blue blocks. Blue blocks represent time spent receiving data from a server. The Slow Downloads issue highlights messages that took longer than 500ms to fully arrive.

7. Note: Not all highlighted messages are responsible for a poor user experience in your app--they're just candidates.

8. We'll use the time track and video panel to determine if a message is really a problem or not. Choose a reponse to investigate, and click on the time track above the timeline to scrub the video to around when this response was received.

9. Now press the video play button to see what was happening in your app. If the response block doesn't correspond to a user interaction, this is a low-priority issue; move on to another highlighted block. If the message does correspond to a user interaction, this is a high-priority issue! Maybe the message took a long time to download because it’s very large, or maybe it was served from a distant location.

10. Take a look at the timeseries plot. It tracks measurements about your session over time. The minimum value of all time series is 0, and the maximum value is indicated by a colored horizontal line, and a number in the upper right. Select the Download Speed timeseries from the dropdown menu; it tracks the rate at which your app downloads data throughout the session.

11. Click on the response block to open it in the details palette. Some things to pay attention to:

  • What kind of content was transferred in this response?
  • How big was the response in bytes? Is this what you expect?
  • If the response was an image, try copying the URL and opening it in your browser. Is the image higher resolution than it needs to be?

12. Click on the Fit to Screen button to zoom back out again and repeat this investigation for other blue blocks highlighted by the Slow Downloads issue.

Metrics

Metrics are sums and averages of different types of network data captured during a session (e.g. total number of HTTP requests, average download speed, etc.). Metrics are a great way to start narrowing in on where your bottlenecks might be. Try selecting different domains in the Domain Metrics group, and see if you notice anything surprising in the Timings or Connection Usage pies.

We calculate the same metrics for four different groups of requests:


- SESSION-WIDE METRICS: Every network message in a session.

- DOMAIN METRICS: Every message sent to or received from a particular domain.

- HOST METRICS: Every message sent to or received from a particular host.

- BURST METRICS: Every message in a special region of a session called a Burst.

Network Data Summaries

These lists summarize the network activity at your cell PoP:

● Avg. Wait: Average time spent waiting for a response from a server.

● Traffic: Total amount of data transfered between server and cell PoP.

● Download Speed: Average rate of data transfer from cell network to cell PoP.

● Requests: Total number of requests.

● Throughput: Average rate of data transfer between cell PoP and server over a specified period of time.

● Traffic Content: The traffic content pie shows you in what proportion your application receives different types of data (image, JSON, etc.). Helpful hint: Take a look at the traffic content pie in the session-wide metrics. Is your app receiving any unexpected content? Try narrowing in on this data in the host or domain metrics. Examine where in particular these different content types are coming from.

● Domain/Host Traffic: The domain and host traffic pies show you how much your app communicates with different domains and hosts.

● Status Codes: The status codes pie tells you what proportion of your HTTP requests succeed or fail.

● Connection Usage: The connection usage pie gives you a sense of how efficiently your application uses its TCP connections. Every time an HTTP request re-uses an existing TCP connection, it saves time by skipping one or more round-trips with the server that are required when initializing a new connection.

  • New: Number of HTTP requests that create new TCP connections.
  • Re-Use: Number of HTTP requests that re-use exisiting TCP connections.

● Timings: The timings pie gives you a breakdown of how your application spends time sending and receiving HTTP requests and responses.

  • Connect: Time spent opening new TCP connections.
  • Encrypt: Time spent performing TLS handshakes (i.e. preparing to communicate securely over HTTPS).
  • Wait: Time between sending a request and receiving the first byte of a response.
  • Receive: Time spent receiving a server's response.

Issues

The HeadSpin platform analyzes the session traffic and identifies potential performance issues. Each issue can be viewed in relation to specific points in the data, and it can be downloaded in various formats.

  • Timeline Highlights: Clicking an issue highlights the items in the timeline view that pertain to that issue. For example, the Large Messages issue will highlight all the large receive sections within request/response blocks.
  • Note: The issue highlight mode can be exited by clicking X in the issue card or in the top-right of the timeline panel.
  • Duplicate Requests: When opening the Duplicate Requests issue, messages in the timeline are highlighted with colored dots. Messages marked with the same color are part of the same duplicates group. Hovering over a dot will further highlight all the messages in that group.
  • Table View: When clicking on an issue, two buttons become available: "View Table" and "Download .csv". "View Table" will open the raw data table for that issue. The "Download .csv" button is a top-level shortcut for one of several download options available within the table view.

Timeline

The timeline visualizes all network traffic captured during a session. TCP connections and HTTP messages are rendered as colored blocks. Click on a connection or request/response block to see its details.

A vertical orange cursor is synchronized with a video of your session in the upper-right. The position of the cursor indicates the network activity that corresponds to the current frame of the video.

Scroll, double-click, and use the zoom and fit buttons to navigate around the timeline. By default, TCP connections are grouped by host.

TIP: while holding shift, click and drag to zoom to a region.

● Time Series: At the top of the timeline view, there is a panel showing time series data that correlates to the session timeline: the x-axis is time. Several time series datasets are available and can be toggled using the pulldown in the top-left of the timeline.

Hovering the mouse over the time series will show the value in the dataset at that point in time. A horizontal line indicates the maximum value for the dataset and the max value is permanently displayed in the top-right of the time series panel.

All time series data is currently rendered on a linear scale.

● Page Content: The amount of information displayed on the page. At any point in time, it is the average information entropy of the image intensity in a video frame in bytes. For a single video frame, we define information entropy as the sum of the -(probability of pixel i) * log256(probability of pixel i) for all pixels with nonzero probabilities of occurring.

● Downsampling Index: Reference-free measure of downsampling in video frames. This metric measures the fraction of pixels used to convey information on small scales. Video that has been degraded (e.g., due to downsampling) will in general have a higher Downsampling Index. High fidelity video will have a low Downsampling Index since a large fraction of the pixels are used to convey small scale information. The Downsampling Index is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin platform API.

● Frame Rate: The frame rate as measured from the device.

  • Android: the frame rate value is calculated by measuring the number of frames produced in the previous 1 second interval at the moment that the frame rate is polled. If there were 0 frames produced in the previous second, the frame rate will be 0.
  • This measurement is done by timestamping the frames as they are produced by the SurfaceFlinger and keeping track of these timestamps. Note that the rate at which the frame rate is polled is not always constant. It is polled at the same rate that the frames are produced at, but capped to a period of 200ms (5 per second). So the polling rate will usually be 5 per second unless the frame rate itself drops below 5 frames per second.
  • iOS: Not available as of iOS 13+
  • Browsers: Not available

● Screen Change: A metric describing the amount of visual change in between video frames. This metric is calculated as the mean of the pairwise differences in intensity between pixels in adjacent frames.

● Impact Count: The number of active HeadSpin Issue cards affecting a given time.

● Impact Time: The estimated performance impact of active Issue cards affecting a given time.

● Blockiness: Reference-free measure of blockiness in the video frames. This metric measures the intensity of the periodic appearance of block structure in an image. Blockiness is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin platform API.

● Blurriness: Reference-free measure of blurriness in the video frames. Since blurring artifacts manifest as the attenuation of the high spatial frequencies, this metric measures the spread of the edges in an image to give a blurriness score. Blurriness is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin platform API.

● Colorfulness: Reference-free measure of colorfulness or "chroma" in the video frames. This metric measures the amount of color usage in the frame. Colorfulness can vary with stylistic choices of the video content creator or application developer. High levels of colorfulness indicate more usage of the fully saturated colors in the biconic HSV color space. Video content that appears to be oversaturated or undersaturated can affect user perception of the quality of the stream and may indicate the presence of issues related to graphics settings or video compression. Colorfulness is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin platform API.

● Contrast: Reference-free measure of contrast in the video frames. This metric measures the perceptual level of contrast of the frame. Variation in the level of contrast can indicate issues in the original video recording. Overly high or low contrast levels can be make it difficult to view video content. In some cases, such as viewing text on a screen, high contrast is beneficial. Contrast is automatically calculated for full screen content in the landscape orientation and is also available via the HeadSpin platform API.

● Brightness: Reference-free measure of brightness in the video frames. This metric measures the perceptual level of brightness of the frame. Low levels of brightness, particularly when coupled with low levels of contrast, can affect the perception of the video quality. Brightness is automatically calculated for full screen content in the landscape orientation, and is also available via the HeadSpin platform API.

● Screen Rotation: The orientation of the screen. At any point in time, it is 0 degrees if the screen is in portrait mode, and 90 degrees if the screen is in landscape mode.

● Audio Volume (Mono): Root-mean-square energy of the audio signal as a measure of volume. Applicable only if the session video contains one audio channel (mono).

● Audio Volume (Left): Root-mean-square energy of the audio signal in the left channel as a measure of volume. Applicable only if the session video contains two audio channels (stereo).

● Audio Volume (Right): Root-mean-square energy of the audio signal in the right channel as a measure of volume. Applicable only if the session video contains two audio channels (stereo).

● Audio Momentary LUFS: Perceptual loudness of the audio signal as defined in ITU VS.1770-4. Applicable only if the session video contains audio (mono or stereo). While Integrated Loudness (in LUFS) provides a single measurement that represents the overall audio loudness of the entire session video, Momentary Loudness (in LUFS) provides a loudness measurement for every sliding window of 400 ms (with an overlap of 300 ms between the windows). The minimum value of Momentary Loudness is capped at -70 LUFS, whereas the theoretical maximum values are 3.4 and 6.4 LUFS for mono and stereo audio, respectively. In practice, however, the loudness values tend to lie between -4 to -50 LUFS, with the actual range depending on the audio application as well as the volume setting on the device when the session video is captured. For context, -15 LUFS is the maximum Momentary Loudness value allowed for advertisement / broadcasting in most countries.

● Concurrency: The number of simultaneous request/response blocks.

● Connections: The number of open TCP connections.

● Download Rate: The total rate of data transfer from the cell network to the cell PoP. At any point in time, it's calculated by summing the download speeds of receive sections in concurrent request/response blocks. For a single request/response block, we define download speed as (response size) / (receive time).

● HTTP Throughput: The total rate of data transfer to and from the cell PoP. At any point in time, it's calculated by summing the throughputs of all concurrent request/response blocks. For a single request/response block, we define throughput as (request size + response size) / (wait time + receive time).

● Network In Bytes: The number of bytes received from the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

● Network Out Bytes: The number of bytes sent out on the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

● Network In Packets: The number of packets received from the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

● Network Out Packets: The number of packets sent out on the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

● Network In Total Bytes: Cumulative number of bytes received from the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

● Network Out Total Bytes: Cumulative number of bytes sent out on the network.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

● Application CPU Usage: The CPU utilization as a percentage corresponding to the application under test on the host device. The value is normalized by the number of CPU threads that can run program on the host device. 100% indicates the application processes occupy all CPU resources for the application and its children processes.

  • Android: Not available
  • iOS: Not available
  • Browsers: Available

● Application Memory Used: The memory used by processes corresponding to the application under test on the host device. On a macOS host machine, the value is Real Mem in the activity monitor. On a Windows host machine, the value is an alias for wset field and it matches Mem Usage column of taskmgr.exe.

  • Android: Not available
  • iOS: Not available
  • Browsers: Available

● Application Memory Used Percent: The percentage of Application Memory Used. The value is normalized. 100% means the application processes use all available memory on the device.

  • Android: Not available
  • iOS: Not available
  • Browsers: Available

● Net CPU Usage: The net CPU usage on the device. This value is system-wide CPU utilization as a percentage. It is calculated as follows:

  • Android: (user time) / (total time)
  • iOS: (total time - idle time) / (total time)
  • Browsers: (total time - idle - iowait) / (total time)

The operating systems provide counters of how many units of time (ticks) each core, and all cores together have spent in various states: running code of the apps ("user"), running OS code ("system"), idling ("idle") and a few others. The HeadSpin platform reads the CPU counters many times per second. It calculates how much time was spent in each state since the previous reading and runs the above formula.

For the NET CPU load calculation, the counters from all (active) CPU cores are used. Different formulas are used because on Android, using the same formula as for iOS consistently gives 100% utilization which is not a useful result. For browsers-based sessions, we use psutil Python package which uses its own formula.

● Single Thread CPU: The usage of a single thread on the device. The value is the CPU utilization of the thread which has the highest utilization at that time, according to the function described in the "Net CPU" section above.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● Net CPU Frequency: The net CPU frequency in MHz on the device.

  • Android: Available
  • iOS: Not available
  • Browsers: Available

● Single Thread CPU Frequency: The CPU frequency of a single thread in MHz on the device.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● Memory Used: The amount of memory used on the device. Memory Used Percent: The percentage of memory used on the device.

● I/O Read Syscalls: The number of read I/O operations, such as syscalls like read() and pread().

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● I/O Bytes Read: The number of bytes fetched from the storage layer.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● I/O Write Syscalls: The number of write I/O operations, such as syscalls like write() and pwrite().

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● I/O Bytes Written: The number of bytes sent to the storage layer.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● Battery Temperature: The temperature of the device battery in degrees Celsius.

  • Android: Available on most devices
  • iOS: Not available
  • Browsers: Not available

● Battery Voltage: The voltage of the device battery in Volts (V).

  • Android: Available on most devices
  • iOS: Not available
  • Browsers: Not available

● Battery Current: The electrical current discharging from the device battery in milliamperes (mA). This is calculated from the overall electric power over a given timestep, which can be defined as: current = electric power / timestep.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

● Battery Energy Drain: The battery energy drain in millijoules (mJ) since capture start. This is calculated from the overall electric power and voltage, which can be defined as: energy drain = electric power * voltage.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

● Battery Energy Drain Percent: The percentage of battery energy drain used on the device since capture start.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

● Janky Frame Count: The number of dropped or delayed frames.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

● High Input Latency: The number of input events that took more than 24 ms.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

● Slow UI Thread: The number of times the UI thread took more than 8 ms to complete.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

● Frame Deadline Missed: The number of frames that missed the 16 ms deadline.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

● Total Views: The number of Views for the layout.

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

● Frame Render Time p50: Median frame render time (ms).

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

● Frame Render Time p90: 90th percentile frame render time (ms).

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

● Frame Render Time p95: 95th percentile frame render time (ms).

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

● Frame Render Time p99: 99th percentile frame render time (ms).

  • Android: Available Android 6+
  • iOS: Not available
  • Browsers: Not available

● GSM RSSI: The GSM (Global System for Mobile) received signal strength indication, rescaled to the range 0 to 1. This corresponds to a power level of −113 dBm and −51 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● GSM Bit Error Rate: The bits that have errors, as a percentage of the total number of bits received. This quantity is reported by the device at 8 discrete levels, the lowest being 0.14% and the highest being 18.1%.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● CDMA RSSI: The CDMA (Code-Division Multiple Access) received signal strength indication, rescaled to the range 0 to 1. This corresponds to a power level of −120 dBm and 0 dBm, respectively. A higher value means stronger signal. In Android 9 and earlier, this is reported in the range −100 dBm to 0 dBm.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● CDMA EC/IO: The quality and cleanliness of the CDMA signal, rescaled to the range 0 to 1. This corresponds to −16 dB and 0 dB, respectively. A higher value means higher quality. In Android 9 and earlier, this is reported in the range −15 dB to 0 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● EVDO RSSI: The EVDO (Evolution-Data Optimized) received signal strength indication, rescaled to the range 0 to 1. This corresponds to a power level of −120 dBm and 0 dBm, respectively. A higher value means stronger signal. In Android 9 and earlier, this is reported in the range −105 dBm to −1 dBm.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● EVDO EC/IO: The quality and cleanliness of the EVDO signal, rescaled to the range 0 to 1. This corresponds to −16 dB and 0 dB, respectively. A higher value means higher quality. In Android 9 and earlier, this is reported in the range −20 db to 0 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● EVDO SNR: The EVDO signal-to-noise ratio, rescaled to the range 0 to 1. This corresponds to the values reported by the device of 0 and 8, respectively. A higher value means higher signal-to-noise, and a value of 1 corresponds to the highest signal-to-noise the device can report.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

LTE RSSI: The LTE (Long-Term Evolution) received signal strength indication, rescaled to the range 0 to 1. This corresponds to a power level of −113 dBm and −51 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● LTE RSRP: The LTE reference signal received power, rescaled to the range 0 to 1. This corresponds to −140 dBm and −43 dBm, respectively. A higher value means stronger signal. This metric is a type of measurement specific to LTE networks, and will typically be used in place of RSSI.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● LTE RSRQ: The LTE reference signal received quality, rescaled to the range 0 to 1. This corresponds to −34 dB and 3 dB, respectively. A higher value means higher quality. In Android 10 and earlier, this is reported in the range −20 dB to −3 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● LTE RSSNR: The LTE reference signal signal-to-noise ratio, rescaled to the range 0 to 1. This corresponds to −20 dB and 30 dB, respectively. A higher value means higher signal-to-noise, and a value of 1 corresponds to the highest signal-to-noise the device can report.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● LTE CQI: The current LTE channel quality indicator, rescaled to the range 0 to 1. This corresponds to indicator values of 0 and 15, respectively. A higher value means higher quality.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● WCDMA Signal Strength: The WCDMA received signal strength indication, rescaled to the range 0 to 1. This corresponds to a powel level of −113 dBm and −51 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● 5G NR CSI-RSRP: The 5G NR channel state information-reference signal received power, rescaled to the range 0 to 1. This corresponds to a power level of −140 dBm and −44 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● 5G NR CSI-RSRQ: The 5G NR channel state information-reference signal received quality, rescaled to the range 0 to 1. This corresponds to −20 dB and −3 dB, respectively. A higher value means higher quality. In Android 10 and earlier, this is reported in the range −20 dB to −3 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● 5G NR CSI-SINR: The 5G NR channel state information-signal to interference noise ratio, rescaled to the range 0 to 1. This corresponds to −23 dB and 23 dB, respectively. A higher value means higher signal-to-noise.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● 5G NR SS-RSRP: The 5G NR synchronization signal-reference signal received power, rescaled to the range 0 to 1. This corresponds to a power level of −140 dBm and −44 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● 5G NR SS-RSRQ: The 5G NR synchronization signal-reference signal received quality, rescaled to the range 0 to 1. This corresponds to −43 dB and 20 dB, respectively. A higher value means higher quality. In Android 10, this is reported in the range −20 dB to −3 dB.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● 5G NR SS-SINR: The 5G NR synchronization signal-signal to interference noise ratio, rescaled to the range 0 to 1. This corresponds to −23 dB and 40 dB, respectively. A higher value means higher signal-to-noise ratio.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

● WiFi Signal Strength: The WiFi received signal strength indication of the device, rescaled to the range 0 to 1. This corresponds to a power level of −90 dBm and -30 dBm, respectively. A higher value means stronger signal.

  • Android: Available
  • iOS: Available
  • Browsers: Not available

Latitude: The device latitude location in degrees.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

Longitude: The device longitude location in degrees.

  • Android: Available
  • iOS: Not available
  • Browsers: Not available

Session Labels: Just below the time series panel is the session labels panel. Labels are annotations that provide information and insight for events during a session.

Labels can come in two forms, instantaneous and continuous. Instantaneous labels are events that occurred during a specific moment, and are represented by a dot. Continuous labels are events that lasted over a period of time and are represented by a horizontal bar.

Clicking on a label in the timeline will open up the details card of the label located in the details panel on the right side of the screen. Labels can either be manually created by a user or automatically generated by the HeadSpin AI system.

User-Created Labels: Labels can be manually created to give users the freedom and flexibility of adding specific insight, and marking important events during a session.

To create a label, simply click and drag the cursor horizontally across the timeline. This will prompt a "Create Label" dialogue box where details of the label can be added. Once the necessary details have been filled out, click the "Submit" button, and the label will be added to the panel. This feature is also available via the HeadSpin platform API.

User-created labels can be pinned to the details panel, and also deleted by clicking the gear icon located in the top right corner of each details card.

Below are the different types of user-created labels:

    User Labels

User labels can be manually created, and are used for custom annotations in the timeline to add additional information for certain events during a session.

    Feedback Labels (Suggestion, Needs Improvement, Report an Error)

Feedback labels are used to provide suggestions, areas for improvement, and errors that surfaced during a session. These annotations provide valuable information to help further improve the HeadSpin AI. To see more information regarding feedback labels, please refer to the Providing Feedback document found elsewhere in this section of your documentation.

    Capture Labels

Capture labels are automatically generated by the HeadSpin AI during a capture session to provide a deeper insight on an application's overall performance. Capture labels can be pinned to the details panel by clicking the gear icon located in the top right corner of each details card, but cannot be deleted.

Below are the different types of capture labels:


- Foreground Application Labels

Foreground application labels show the top-most, visible application during a capture session. For Android, the label name will be the application package name, and for iOS, it will be the bundle ID.

    - Android: Available
    - iOS: Available
    - Browsers: Not available

- Foreground Activity Labels

Foreground activity labels show the top-most activity that is being rendered by the foreground application during a capture session.

    - Android: Available
    - iOS: Not available
    - Browsers: Not available

- App Startup Time Labels (Time to Initial Display, Time to Full Display)

App startup time labels show the time taken by cold and warm application startup. The time to initial display metric measures the time lapsed from app launch until the first drawing activity completes. The time to full display metric measures the time lapsed from app launch until a specific Android API call is made. (Reference: see App startup time in Android Documentation.)

    - Android: Available
    - iOS: Not available
    - Browsers: Not available

- Log Exception Labels

Log exception labels provide insight for errors and exceptions found in the device log. The exception body can be found in the details card. Labels that are colored dark red are exceptions associated with the foreground application running at the time.

    - Android: Available
    - iOS: Available
    - Browsers: Not available

- Appium Event Labels

Appium event labels provide insight for appium commands executed during a session. The name of the label is associated with the command that was sent, and details of the request and response can be found in the details card. The duration of the label is the total time it took to execute a specific command from start to finish.

    - Android: Available
    - iOS: Available
    - Browsers: Not available

- Selenium Event Labels

Selenium event labels provide insight for selenium commands executed during a session. The name of the label is associated with the command that was sent, and details of the request and response can be found in the details card. The duration of the label is the total time it took to execute a specific command from start to finish.

    - Android: Not available
    - iOS: Not available
    - Browsers: Available

Function Call Timeline: The Function Call Timeline provides real-time stack trace information, showing threads and individual functions. Each light gray row in the Function Call Timeline is running thread. The bar shows the thread ID, thread name, start time and end time.

The top row is the main thread of the active process, denoted as main - {process name}. There is only one active process at a time. The threads directly below each main thread belong to the corresponding process. Each thread in the Timeline can be expanded by clicking on it to display the call stack in real time. Hover your mouse on a function to see more details about it.

  • Android: Available
  • iOS: Available. Note: Function call data will only be available for at most the first two minutes of a capture session.
  • Browsers: Not available

Connection Block: A connection block represents a single TCP connection used to transmit one or more HTTP requests/responses.

TCP: Time spent opening the TCP connection.

TLS: Time spent performing the TLS handshake.

Request Blocks: One or more HTTP requests sent over this connection. See Request Block.

Response Block: One or more HTTP responses sent over this connection. See Response Block.

Request/Response Block: A request/response block represents a pair of HTTP request/response messages. If you see several green and blue request/response blocks sitting within a single white connection block, you are witnessing connection re-use, where a single TCP connection is used to deliver several HTTP requests.

Request: An HTTP request is sent.

Wait: Time spent waiting for the server's response.

Receive: Time spent downloading the server's response from the network.

Details

Clicking on a connection or request/response block will open up a panel of details in the sidebar.

Connection details list the destination IP address, timestamp of creation, and duration of the connection. Below the details is a small diagram indicating when HTTP requests were sent on the connection.

Message details list the URL, size, and timing info for an HTTP request, as well as the status code, content type, and more timing info for the response. The headers for request and response messages are hidden by default and can be expanded.