{"id":291,"date":"2021-11-30T07:30:24","date_gmt":"2021-11-30T15:30:24","guid":{"rendered":"https:\/\/blog.mozilla.org\/performance\/?p=291"},"modified":"2021-11-30T07:30:24","modified_gmt":"2021-11-30T15:30:24","slug":"updates-to-warm-page-load-tests","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/performance\/2021\/11\/30\/updates-to-warm-page-load-tests\/","title":{"rendered":"Updates to Warm Page Load Tests"},"content":{"rendered":"<h1>Background<\/h1>\n<p>We have recently begun the process of updating our warm page load tests to be more representative of real user behavior.<\/p>\n<p><b>Cold page load<\/b> is defined as the first page load, just after the initial startup of the browser. <b>Warm page load<\/b> is any load of a page after the first page load, and the cache has been populated with some data for the page, i.e. the cache is \u201cwarmed up&#8221;. The results of these tests can be found on the <a href=\"https:\/\/arewefastyet.com\/\" target=\"_blank\" rel=\"noopener\">AreWeFastYet dashboard<\/a>, also referred to as AWFY. Below is an example of one of our AWFY graphs:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-295 size-extra-large\" src=\"http:\/\/blog.mozilla.org\/performance\/files\/2021\/11\/Screenshot-2021-11-18-at-11-56-31-Firefox-Performance-Dashboard-1000x290.png\" alt=\"are we fast yest graph\" width=\"1000\" height=\"290\" srcset=\"https:\/\/blog.mozilla.org\/performance\/files\/2021\/11\/Screenshot-2021-11-18-at-11-56-31-Firefox-Performance-Dashboard-1000x290.png 1000w, https:\/\/blog.mozilla.org\/performance\/files\/2021\/11\/Screenshot-2021-11-18-at-11-56-31-Firefox-Performance-Dashboard-300x87.png 300w, https:\/\/blog.mozilla.org\/performance\/files\/2021\/11\/Screenshot-2021-11-18-at-11-56-31-Firefox-Performance-Dashboard-600x174.png 600w, https:\/\/blog.mozilla.org\/performance\/files\/2021\/11\/Screenshot-2021-11-18-at-11-56-31-Firefox-Performance-Dashboard-768x223.png 768w, https:\/\/blog.mozilla.org\/performance\/files\/2021\/11\/Screenshot-2021-11-18-at-11-56-31-Firefox-Performance-Dashboard.png 1162w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Our page load tests currently load the test URL 25 times, and navigate to about:blank in between each iteration.<\/p>\n<p>This is not realistic behavior for a user to perform, however. Most users will never navigate to about:blank before loading a new url, and rarely reload the same URL again and again (unless perhaps waiting for tickets to go on sale \ud83c\udf9f).<\/p>\n<h1>Why These Changes?<\/h1>\n<p><a href=\"https:\/\/wiki.mozilla.org\/Project_Fission\" target=\"_blank\" rel=\"noopener\">Project Fission<\/a> is Mozilla\u2019s implementation of <i>site isolation<\/i> in Firefox.<\/p>\n<p>When Fission is enabled, each site is run in a different process. Loading a sub-page of the same domain will not destroy the process, but when navigating to about:blank, the process may be destroyed. With the bfcache (back-forward cache) in Fission, the old page may be kept in a frozen state for a while, but not every page can enter the bfcache, such as those using unload handlers or <a href=\"https:\/\/webrtc.org\/\" target=\"_blank\" rel=\"noopener\">webRTC<\/a>.<\/p>\n<p>For these reasons, we are currently updating these tests to navigate to another page on the same site between each iteration. This is more representative of user behavior: to load a site, navigate to another page on that site, navigate back to the home page, and repeat. The process termination when navigating to about:blank has been <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1725270\" target=\"_blank\" rel=\"noopener\">temporarily disabled<\/a> until all tests have been updated.<\/p>\n<h1>Issues Encountered<\/h1>\n<p>At the time of writing this post, the update process is around 60% complete\u2013<a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1p7-PNG7v32rHSbyz1uLmPTSm8Zhf9krB5OnLRCYx_Y8\/edit?usp=sharing\" target=\"_blank\" rel=\"noopener\">19 of 33<\/a> tests have been updated. Several of the tests have encountered unexpected errors when re-recording these tests.<\/p>\n<p>As an example, amazon is the only test we run on mozilla-central with the profiler enabled. (While developers have the ability to run any test with the profiler enabled, we have one site running regularly to detect issues related to this functionality.)<\/p>\n<p>When running the test with a secondary URL while the profiler is running, the browser will successfully load the secondary URL, but crashes when it navigates back to the test URL.<\/p>\n<p><a href=\"https:\/\/mitmproxy.org\/\" target=\"_blank\" rel=\"noopener\">Mitmproxy<\/a> is the third-party software we use to record page loads. It has recently been updated from version 6 to 7. Several of the tests that encountered issues with testing using a secondary url while running mitmproxy 6 seem to be resolved when running using mitmproxy 7.<\/p>\n<h1>Going Forward<\/h1>\n<p>In the future, we plan to continue making our tests more representative of how users behave. Greg Mierzwinski has begun working on this with his<a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1647352\" target=\"_blank\" rel=\"noopener\"> responsiveness tests<\/a>.<\/p>\n<p>Thanks for reading! For more information on the update to mitmproxy 7, read my earlier post<a href=\"https:\/\/blog.mozilla.org\/performance\/2021\/11\/19\/upgrading-page-load-tests-to-use-mitmproxy-7\/\" target=\"_blank\" rel=\"noopener\"> Upgrading Page Load Tests to Use Mitmproxy 7<\/a>.<\/p>\n<p>\/kimberlythegeek<\/p>\n<p><b>Related Links<\/b><\/p>\n<ul>\n<li aria-level=\"1\"><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1p7-PNG7v32rHSbyz1uLmPTSm8Zhf9krB5OnLRCYx_Y8\/edit?usp=sharing\" target=\"_blank\" rel=\"noopener\">Page Load Test Update Tracking Doc<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/docs.google.com\/document\/d\/1V4bJkSNTeUhm4_uItDCuk1AFLYs8ynSNzuE0YsO8Fzc\/edit?usp=sharing\" target=\"_blank\" rel=\"noopener\">Notes on Page Load Recordings<\/a><\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1724261\" target=\"_blank\" rel=\"noopener\">Tracking Bug for Secondary URL Page Load Tests<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Background We have recently begun the process of updating our warm page load tests to be more representative of real user behavior. Cold page load is defined as the first &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/performance\/2021\/11\/30\/updates-to-warm-page-load-tests\/\">Read more<\/a><\/p>\n","protected":false},"author":1594,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[453323,265],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/performance\/wp-json\/wp\/v2\/posts\/291"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/performance\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/performance\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/performance\/wp-json\/wp\/v2\/users\/1594"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/performance\/wp-json\/wp\/v2\/comments?post=291"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/performance\/wp-json\/wp\/v2\/posts\/291\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/performance\/wp-json\/wp\/v2\/media?parent=291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/performance\/wp-json\/wp\/v2\/categories?post=291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/performance\/wp-json\/wp\/v2\/tags?post=291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}