mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 23:05:42 +00:00
Bug 1458242 - add DOMContentFlushed to tp6 as a measurement. r=rwood
add DOMContentFlushed to tp6, collect it and return the geometric mean of all measurements. Differential Revision: https://phabricator.services.mozilla.com/D5797 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
f4dc279207
commit
130b3341e6
@ -1,6 +1,7 @@
|
||||
// Preferences file used by the raptor harness
|
||||
/* globals user_pref */
|
||||
user_pref("dom.performance.time_to_non_blank_paint.enabled", true);
|
||||
user_pref("dom.performance.time_to_dom_content_flushed.enabled", true);
|
||||
|
||||
// required for geckoview logging
|
||||
user_pref("geckoview.console.enabled", true);
|
||||
|
@ -76,6 +76,8 @@ def write_test_settings_json(test_details, oskey):
|
||||
|
||||
if test_details['type'] == "pageload":
|
||||
test_settings['raptor-options']['measure'] = {}
|
||||
if "dcf" in test_details['measure']:
|
||||
test_settings['raptor-options']['measure']['dcf'] = True
|
||||
if "fnbpaint" in test_details['measure']:
|
||||
test_settings['raptor-options']['measure']['fnbpaint'] = True
|
||||
if "fcp" in test_details['measure']:
|
||||
|
@ -19,14 +19,14 @@ alert_threshold = 2.0
|
||||
apps = firefox
|
||||
test_url = https://www.amazon.com/s/url=search-alias%3Daps&field-keywords=laptop
|
||||
playback_recordings = amazon.mp
|
||||
measure = fnbpaint, hero
|
||||
measure = fnbpaint, hero, dcf
|
||||
hero = hero1
|
||||
|
||||
[raptor-tp6-facebook-firefox]
|
||||
apps = firefox
|
||||
test_url = https://www.facebook.com
|
||||
playback_recordings = facebook.mp
|
||||
measure = fnbpaint, hero
|
||||
measure = fnbpaint, hero, dcf
|
||||
hero = hero1
|
||||
|
||||
[raptor-tp6-google-firefox]
|
||||
@ -36,14 +36,14 @@ apps = firefox
|
||||
# to be loaded into that page also; resulting in 2 fnbpaint values etc.
|
||||
test_url = https://www.google.com/search?hl=en&q=barack+obama&cad=h
|
||||
playback_recordings = google-search.mp
|
||||
measure = fnbpaint, hero
|
||||
measure = fnbpaint, hero, dcf
|
||||
hero = hero1
|
||||
|
||||
[raptor-tp6-youtube-firefox]
|
||||
apps = firefox
|
||||
test_url = https://www.youtube.com
|
||||
playback_recordings = youtube.mp
|
||||
measure = fnbpaint, hero
|
||||
measure = fnbpaint, hero, dcf
|
||||
hero = hero1
|
||||
|
||||
[raptor-tp6-amazon-chrome]
|
||||
|
@ -17,6 +17,12 @@ var heroesToCapture = [];
|
||||
// default only; this is set via control server settings json
|
||||
var getFNBPaint = false;
|
||||
|
||||
// measure firefox domContentFlushed
|
||||
// note: this browser pref must be enabled:
|
||||
// dom.performance.time_to_dom_content_flushed.enabled = True
|
||||
// default only; this is set via control server settings json
|
||||
var getDCF = false;
|
||||
|
||||
// measure google's first-contentful-paint
|
||||
// default only; this is set via control server settings json
|
||||
var getFCP = false;
|
||||
@ -57,6 +63,14 @@ function setup(settings) {
|
||||
}
|
||||
}
|
||||
|
||||
if (settings.measure.dcf !== undefined) {
|
||||
getDCF = settings.measure.dcf;
|
||||
if (getDCF) {
|
||||
console.log("will be measuring dcf");
|
||||
measureDCF();
|
||||
}
|
||||
}
|
||||
|
||||
if (settings.measure.fcp !== undefined) {
|
||||
getFCP = settings.measure.fcp;
|
||||
if (getFCP) {
|
||||
@ -142,6 +156,29 @@ function measureFNBPaint() {
|
||||
}
|
||||
}
|
||||
|
||||
function measureDCF() {
|
||||
var x = window.performance.timing.timeToDOMContentFlushed;
|
||||
|
||||
if (typeof(x) == "undefined") {
|
||||
console.log("ERROR: domContentFlushed is undefined; ensure the pref is enabled");
|
||||
return;
|
||||
}
|
||||
if (x > 0) {
|
||||
console.log("got domContentFlushed: " + x);
|
||||
gRetryCounter = 0;
|
||||
var startTime = perfData.timing.fetchStart;
|
||||
sendResult("dcf", x - startTime);
|
||||
} else {
|
||||
gRetryCounter += 1;
|
||||
if (gRetryCounter <= 10) {
|
||||
console.log("\dcf is not yet available (0), retry number " + gRetryCounter + "...\n");
|
||||
window.setTimeout(measureDCF, 100);
|
||||
} else {
|
||||
console.log("\nunable to get a value for dcf after " + gRetryCounter + " retries\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function measureFirstContentfulPaint() {
|
||||
// see https://developer.mozilla.org/en-US/docs/Web/API/PerformancePaintTiming
|
||||
var resultType = "fcp";
|
||||
|
@ -36,11 +36,13 @@ var testTabID = 0;
|
||||
var getHero = false;
|
||||
var getFNBPaint = false;
|
||||
var getFCP = false;
|
||||
var getDCF = false;
|
||||
var isHeroPending = false;
|
||||
var pendingHeroes = [];
|
||||
var settings = {};
|
||||
var isFNBPaintPending = false;
|
||||
var isFCPPending = false;
|
||||
var isDCFPending = false;
|
||||
var isBenchmarkPending = false;
|
||||
var pageTimeout = 10000; // default pageload timeout
|
||||
|
||||
@ -93,6 +95,9 @@ function getTestSettings() {
|
||||
if (settings.measure.fnbpaint !== undefined) {
|
||||
getFNBPaint = settings.measure.fnbpaint;
|
||||
}
|
||||
if (settings.measure.dcf !== undefined) {
|
||||
getDCF = settings.measure.dcf;
|
||||
}
|
||||
if (settings.measure.fcp !== undefined) {
|
||||
getFCP = settings.measure.fcp;
|
||||
}
|
||||
@ -172,7 +177,7 @@ function waitForResult() {
|
||||
return new Promise(resolve => {
|
||||
function checkForResult() {
|
||||
if (testType == "pageload") {
|
||||
if (!isHeroPending && !isFNBPaintPending && !isFCPPending) {
|
||||
if (!isHeroPending && !isFNBPaintPending && !isFCPPending && !isDCFPending) {
|
||||
cancelTimeoutAlarm("raptor-page-timeout");
|
||||
resolve();
|
||||
} else {
|
||||
@ -215,6 +220,8 @@ function nextCycle() {
|
||||
isFNBPaintPending = true;
|
||||
if (getFCP)
|
||||
isFCPPending = true;
|
||||
if (getDCF)
|
||||
isDCFPending = true;
|
||||
} else if (testType == "benchmark") {
|
||||
isBenchmarkPending = true;
|
||||
}
|
||||
@ -288,6 +295,9 @@ function resultListener(request, sender, sendResponse) {
|
||||
} else if (request.type == "fnbpaint") {
|
||||
results.measurements.fnbpaint.push(request.value);
|
||||
isFNBPaintPending = false;
|
||||
} else if (request.type == "dcf") {
|
||||
results.measurements.dcf.push(request.value);
|
||||
isDCFPending = false;
|
||||
} else if (request.type == "fcp") {
|
||||
results.measurements.fcp.push(request.value);
|
||||
isFCPPending = false;
|
||||
|
Loading…
Reference in New Issue
Block a user