public List ProcessWindowPerfResourceTimings()

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;
            });
        }