blob: 9b7f5e0dfb53327621f9c458099a27b84e0602be [file] [log] [blame]
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from telemetry import decorators
from telemetry.testing import tab_test_case
class InspectorMemoryTest(tab_test_case.TabTestCase):
@decorators.Enabled('has tabs')
def testGetDOMStats(self):
# Due to an issue with CrOS, we create a new tab here rather than
# using the existing tab to get a consistent starting page on all platforms.
self._tab = self._browser.tabs.New()
self.Navigate('dom_counter_sample.html')
self._tab.ExecuteJavaScript('gc();')
# Document_count > 1 indicates that WebCore::Document loaded in Chrome
# is leaking! The baseline should exactly match the numbers on:
# internal/testing/dom_counter_sample.html
# Please contact kouhei@, hajimehoshi@ when rebaselining.
counts = self._tab.dom_stats
self.assertEqual(counts['document_count'], 1,
'Document leak is detected! '+
'The previous document is likely retained unexpectedly.')
self.assertEqual(counts['node_count'], 14,
'Node leak is detected!')
self.assertEqual(counts['event_listener_count'], 2,
'EventListener leak is detected!')
@classmethod
def CustomizeBrowserOptions(cls, options):
options.AppendExtraBrowserArgs('--js-flags=--expose-gc')