[perf] Force update components for perf profile (#33273)

This commit is contained in:
Mikhail
2026-01-19 15:24:23 +00:00
committed by GitHub
parent c627b86e85
commit 7acea3ddb4
2 changed files with 19 additions and 5 deletions
@@ -28,7 +28,7 @@ class BraveUtilsBenchmark(perf_benchmark.PerfBenchmark):
"""
def CreateStorySet(self, options):
return BravePerfUtilsStorySet(30, options)
return BravePerfUtilsStorySet(30, False, options)
@classmethod
def Name(cls):
@@ -56,7 +56,7 @@ class BraveUtilsOnlineBenchmark(BraveUtilsBenchmark):
cls._delay = args.delay
def CreateStorySet(self, options):
return BravePerfUtilsStorySet(self._delay, options)
return BravePerfUtilsStorySet(self._delay, True, options)
def SetExtraBrowserOptions(self, options):
# To enable Safe Browsing updates:
@@ -104,10 +104,12 @@ class _UpdateProfileSharedPageState(shared_page_state.SharedPageState):
class _UpdateProfilePage(page_module.Page):
_delay: int
_force_update_componets: bool
def __init__(self, page_set, delay: int):
def __init__(self, page_set, delay: int, force_update_componets: bool):
EXTRA_BROWSER_ARGUMENTS = ['--enable-brave-features-for-perf-testing']
self._delay = delay
self._force_update_componets = force_update_componets
super().__init__(url='https://example.com',
page_set=page_set,
shared_page_state_class=_UpdateProfileSharedPageState,
@@ -115,6 +117,18 @@ class _UpdateProfilePage(page_module.Page):
extra_browser_args=EXTRA_BROWSER_ARGUMENTS)
def RunPageInteractions(self, action_runner):
if self._force_update_componets:
# Go to chrome://components and click every "Check for update" button
action_runner.tab.Navigate('chrome://components')
action_runner.tab.WaitForDocumentReadyStateToBeInteractiveOrBetter()
action_runner.Wait(1)
forceUpdateScript = """
document.querySelectorAll('.button-check-update').forEach((b, i) => {
setTimeout(() => b.click(), i * 100);
});
"""
action_runner.tab.EvaluateJavaScript(forceUpdateScript)
action_runner.Wait(self._delay)
if action_runner.tab.browser.platform.GetOSName() != 'android':
# Disable session restore via settingsPrivate API.
@@ -136,9 +150,9 @@ class BravePerfUtilsStorySet(story.StorySet):
See loading_desktop.py for details.
"""
def __init__(self, delay: int, options):
def __init__(self, delay: int, force_update_componets: bool, options):
platform = 'mobile' if options.os_name == 'android' else 'desktop'
archive_data_file = GetPageSetsDataPath('system_health_%s.json' % platform)
super().__init__(archive_data_file,
cloud_storage_bucket=story.PARTNER_BUCKET)
self.AddStory(_UpdateProfilePage(self, delay))
self.AddStory(_UpdateProfilePage(self, delay, force_update_componets))