in Microsoft.Dynamics365.UIAutomation.Api/Pages/WindowPerformanceResource.cs [64:117]
public List<PerformanceResource> ProcessWindowPerfResourceTimings(bool content = true)
{
return this.Execute("Get Window Performance Resource Timings", driver =>
{
var entries = (IEnumerable<object>)driver.ExecuteScript("return window.performance.getEntriesByType('resource')");
var performanceResourceList = new List<PerformanceResource>();
var resultsList = ProcessResourceDictionary(entries);
foreach (var entry in resultsList)
{
string value;
var perfResource = new PerformanceResource()
{
EntryType = "Resource",
Name = entry.TryGetValue("name", out value) ? value : "",
Duration = entry.TryGetValue("duration", out value) ? double.Parse(value) : 0,
StartTime = entry.TryGetValue("startTime", out value) ? double.Parse(value) : 0,
RequestStart = entry.TryGetValue("requestStart", out value) ? double.Parse(value) : 0,
ContentType = content ? "Content" : "DefaultContent"
};
//redirect time, dns time, tcp handshake, response time, resource time duration
string end, start;
if (entry.TryGetValue("redirectEnd", out end) &&
entry.TryGetValue("redirectStart", out start))
perfResource.RedirectTime = double.Parse(end) - double.Parse(start);
if (entry.TryGetValue("domainLookupEnd", out end) &&
entry.TryGetValue("domainLookupStart", out start))
{
perfResource.DomainLookupStart = double.Parse(start);
perfResource.DomainLookupEnd = double.Parse(end);
perfResource.DnsTime = double.Parse(end) - double.Parse(start);
}
if (entry.TryGetValue("connectEnd", out end) &&
entry.TryGetValue("connectStart", out start))
perfResource.TcpHandshake = double.Parse(end) - double.Parse(start);
if (entry.TryGetValue("responseEnd", out end) &&
entry.TryGetValue("responseStart", out start))
{
perfResource.ResponseStart = double.Parse(start);
perfResource.ResponseEnd = double.Parse(end);
perfResource.ResponseTime = double.Parse(end) - double.Parse(start);
}
perfResource.ResourceTimingDuration = perfResource.ResponseEnd - perfResource.StartTime;
performanceResourceList.Add(perfResource);
}
return performanceResourceList;
});
}