extends ../../layout.pug block content - const d = pageInfo.data - runNumber = iteration - const daTitle = daurlAlias ? daurlAlias : daurl - const downloadName = (daTitle + '-' + runNumber + '-' + options.browser + '-' + timestamp).replace(/(https?\:\/\/)|( )|(:)/ig, '') h1 Run #{runNumber} summary h5.url a(href=daurl) #{decodeURIComponent(daTitle)} include ../includes/pageRunInfo if d.browsertime && d.browsertime.run b #{d.browsertime.run.title} p !{d.browsertime.run.description} p .large#pageNavigation All runs:  each val, index in runPages - value = Number(index) + 1 if (runNumber === value) span.label.normal.info #{value} else a(href='./' + value + '.html') #{value} if (value !== Object.keys(runPages).length) |  - | if d.browsertime && d.browsertime.run.errors && d.browsertime.run.errors.length > 0 .errors b Errors ul each error in d.browsertime.run.errors li #{error} .index-link a.button.button--primary(href=urlLink) Back to summary include ./tabs.pug #tabSections section#summary-panel h2 Summary .row .one-half.column table tr th Metric th Value tr th(colspan='2') Page metrics - performanceScore = get(d, 'coach.run.advice.performance.score') if performanceScore tr td Performance score td #{performanceScore} - totalTransferSize = get(d, 'pagexray.run.transferSize') if totalTransferSize tr td Total page size td #{h.size.format(totalTransferSize)} - memory = get(d, 'browsertime.run.memory') if memory tr td Memory td #{h.size.format(memory)} - cpuConsumption = get(d, 'browsertime.run.cpuConsumption') if cpuConsumption tr td Firefox CPU power consumption td #{cpuConsumption * 1000} mWh - requests = get(d, 'pagexray.run.requests') if (requests) tr td Requests td #{requests} - ttfb = get(d, 'browsertime.run.timings.pageTimings.backEndTime') tr th(colspan='2') Timing metrics if ttfb tr td TTFB td #{h.time.ms(ttfb)} - firstPaint = get(d, 'browsertime.run.timings.firstPaint') if firstPaint tr td First Paint td #{h.time.ms(firstPaint)} - fullyLoaded = get(d, 'browsertime.run.fullyLoaded') if fullyLoaded tr td Fully Loaded td #{h.time.ms(fullyLoaded.toFixed(0))} - fcp = get(d, 'browsertime.run.timings.paintTiming["first-contentful-paint"]') - lcp = get(d, 'browsertime.run.timings.largestContentfulPaint.renderTime') if lcp tr th(colspan='2') Google Web Vitals - ttfb = get(d, 'browsertime.run.timings.pageTimings.backEndTime') if ttfb tr td TTFB td #{h.time.ms(ttfb)} if fcp tr td First Contentful Paint (FCP) td #{h.time.ms(fcp)} if lcp tr td Largest Contentful Paint (LCP) td #{h.time.ms(lcp)} - cls = get(d, 'browsertime.run.pageinfo.cumulativeLayoutShift') if cls || cls === 0 tr td Cumulative Layout Shift (CLS) td #{cls.toFixed(2)} - inp = get(d, 'browsertime.run.timings.interactionToNextPaint') if inp tr td #{h.time.ms(inp)} - tbt = get(d, 'browsertime.run.cpu.longTasks.totalBlockingTime') if tbt tr td Total Blocking Time td #{h.time.ms(tbt)} - mpFID = get(d, 'browsertime.run.cpu.longTasks.maxPotentialFid') if mpFID tr td Max Potential FID td #{h.time.ms(mpFID)} - longTasks = get(d, 'browsertime.run.cpu.longTasks.tasks') if longTasks tr th(colspan='2') CPU metrics tr td CPU long tasks td #{longTasks} - maxLongTask= get(d, 'browsertime.run.cpu.longTasks.durations.max') if maxLongTask tr td CPU longest task duration td #{h.time.ms(maxLongTask)} - lastLongTask= get(d, 'browsertime.run.cpu.longTasks.lastLongTask') if lastLongTask tr td CPU last long task happens at td #{h.time.ms(lastLongTask)} - firstVisualChange = get(d, 'browsertime.run.visualMetrics.FirstVisualChange') if firstVisualChange tr th(colspan='2') Visual Metrics tr td First Visual Change td #{h.time.ms(firstVisualChange)} - speedIndex = get(d, 'browsertime.run.visualMetrics.SpeedIndex') if speedIndex tr td Speed Index td #{h.time.ms(speedIndex)} - visualComplete85 = get(d, 'browsertime.run.visualMetrics.VisualComplete85') if visualComplete85 tr td Visual Complete 85% td #{h.time.ms(visualComplete85)} - visualComplete99 = get(d, 'browsertime.run.visualMetrics.VisualComplete99') if visualComplete99 tr td Visual Complete 99% td #{h.time.ms(visualComplete99)} - lastVisualChange = get(d, 'browsertime.run.visualMetrics.LastVisualChange') if lastVisualChange tr td Last Visual Change td #{h.time.ms(lastVisualChange)} .one-half.column if hasScreenShots - screenshotName = 'data/screenshots/' + iteration + '/afterPageCompleteCheck.' + screenShotType - const width = options.mobile ? 150 : '100%'; a(href=screenshotName) img.screenshot(src=screenshotName, width=width, alt='Screenshot') .downloads include ./downloads.pug include ./tcpdump.pug if d.browsertime && d.browsertime.run && d.browsertime.run.har section#waterfall-panel include ../waterfall/index.pug if options.browsertime.video section#video-panel include ../video/index.pug if (options.browsertime.video || options.browsertime.visualMetrics) && options.videoParams.createFilmstrip || options.browsertime.chrome && options.browsertime.chrome.enableTraceScreenshots section#filmstrip-panel include ../filmstrip/index.pug if d.coach && d.coach.run section#coach-panel include ../coach/index.pug if d.browsertime && d.browsertime.run section#metrics-panel include ../metrics/index.pug if d.pagexray && d.pagexray.run section#pagexray-panel include ../pagexray/index.pug if options.cpu || (options.browsertime && options.browsertime.chrome && options.browsertime.chrome.collectLongTasks) || (options.browsertime && options.browsertime.firefox && options.browsertime.firefox.geckoProfiler || options.browsertime &&options.browsertime.enableProfileRun) section#cpu-panel include ../cpu/index.pug if d.thirdparty && d.thirdparty.run section#thirdparty-panel include ../thirdparty/index.pug if d.browsertime && d.browsertime.run section#screeenshots-panel include ../screenshots/index.pug each pageRun in pageRuns - const panelName = pageRun.id + '-panel' section(id=panelName) p !{pugs[pageRun.id]}