1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# Copyright 2014 The Chromium Authors. All rights reserved.
2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# Use of this source code is governed by a BSD-style license that can be
3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch# found in the LICENSE file.
4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import os
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import sys
7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry import benchmark
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccifrom telemetry import decorators
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry.core import util
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry.core import wpr_modes
12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochfrom telemetry.page import page as page_module
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry.page import page_set as page_set_module
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry.page import page_test
15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochfrom telemetry.page import record_wpr
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)from telemetry.unittest import tab_test_case
17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class MockPage(page_module.Page):
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def __init__(self, page_set, url):
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    super(MockPage, self).__init__(url=url,
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                   page_set=page_set,
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                   base_dir=util.GetUnittestDataDir())
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls = []
25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def RunNavigateSteps(self, action_runner):
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls.append('RunNavigateSteps')
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    super(MockPage, self).RunNavigateSteps(action_runner)
29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  def RunFoo(self, _):
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls.append('RunFoo')
32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  def RunBar(self, _):
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls.append('RunBar')
35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def RunBaz(self, _):
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls.append('RunBaz')
38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class MockPageSet(page_set_module.PageSet):
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def __init__(self, url=''):
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    super(MockPageSet, self).__init__(archive_data_file='data/test.json')
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.AddPage(MockPage(self, url))
44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class MockPageTest(page_test.PageTest):
475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def __init__(self):
485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    super(MockPageTest, self).__init__()
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self._action_name_to_run = "RunBaz"
505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls = []
515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  @classmethod
535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def AddCommandLineArgs(cls, parser):
545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    parser.add_option('--mock-page-test-option', action="store_true")
555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def WillNavigateToPage(self, page, tab):
575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls.append('WillNavigateToPage')
585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def DidNavigateToPage(self, page, tab):
605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls.append('DidNavigateToPage')
615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def WillRunActions(self, page, tab):
635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls.append('WillRunActions')
645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def DidRunActions(self, page, tab):
665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls.append('DidRunActions')
675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def ValidatePage(self, page, tab, results):
695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.func_calls.append('ValidatePage')
705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  def WillStartBrowser(self, platform):
7203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    self.func_calls.append('WillStartBrowser')
7303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
7403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  def DidStartBrowser(self, browser):
7503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    self.func_calls.append('DidStartBrowser')
765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class MockBenchmark(benchmark.Benchmark):
785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  test = MockPageTest
795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  mock_page_set = None
805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  @classmethod
825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def AddTestCommandLineArgs(cls, group):
835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    group.add_option('', '--mock-benchmark-url', action='store', type='string')
845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def CreatePageSet(self, options):
865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    kwargs = {}
875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if (options.mock_benchmark_url):
885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      kwargs['url'] = options.mock_benchmark_url
895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.mock_page_set = MockPageSet(**kwargs)
905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    return self.mock_page_set
915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class RecordWprUnitTests(tab_test_case.TabTestCase):
945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  _base_dir = util.GetUnittestDataDir()
966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  _test_data_dir = os.path.join(util.GetUnittestDataDir(), 'page_tests')
975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  @classmethod
995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def setUpClass(cls):
1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    sys.path.extend([cls._base_dir, cls._test_data_dir])
1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    super(RecordWprUnitTests, cls).setUpClass()
1026e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    cls._url = cls.UrlOfUnittestFile('blank.html')
1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  # When the RecorderPageTest is created from a PageSet, we do not have a
1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  # PageTest to use. In this case, we will record every available action.
1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testRunPage_AllActions(self):
1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test = record_wpr.RecorderPageTest(["RunFoo", "RunBar"])
1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    page = MockPage(page_set=MockPageSet(url=self._url), url=self._url)
1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test.RunPage(page, self._tab, results=None)
1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertTrue('RunFoo' in page.func_calls)
1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertTrue('RunBar' in page.func_calls)
1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertFalse('RunBaz' in page.func_calls)
1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testRunPage_DontReloadSingleActions(self):
1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test = record_wpr.RecorderPageTest(["RunFoo"])
1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    page = MockPage(page_set=MockPageSet(url=self._url), url=self._url)
1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test.RunPage(page, self._tab, results=None)
1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertFalse('RunNavigateSteps' in page.func_calls)
1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testRunPage_ReloadPageBetweenActions(self):
1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test = record_wpr.RecorderPageTest(["RunFoo", "RunBar"])
1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    page = MockPage(page_set=MockPageSet(url=self._url), url=self._url)
1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test.RunPage(page, self._tab, results=None)
1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertTrue('RunNavigateSteps' in page.func_calls)
1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  # When the RecorderPageTest is created from a Benchmark, the benchmark will
1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  # have a PageTest, specified by its test attribute.
1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testRunPage_OnlyRunBenchmarkAction(self):
1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test = record_wpr.RecorderPageTest(["RunFoo"])
1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test.page_test = MockBenchmark().test()
1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    page = MockPage(page_set=MockPageSet(url=self._url), url=self._url)
1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test.RunPage(page, self._tab, results=None)
1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertFalse('RunFoo' in page.func_calls)
1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertTrue('RunBaz' in page.func_calls)
1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testRunPage_CallBenchmarksPageTestsFunctions(self):
1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test = record_wpr.RecorderPageTest([])
1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test.page_test = MockBenchmark().test()
1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    page = MockPage(page_set=MockPageSet(url=self._url), url=self._url)
1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    record_page_test.RunPage(page, self._tab, results=None)
1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertEqual(3, len(record_page_test.page_test.func_calls))
1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertEqual('WillRunActions', record_page_test.page_test.func_calls[0])
1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertEqual('DidRunActions', record_page_test.page_test.func_calls[1])
1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertEqual('ValidatePage', record_page_test.page_test.func_calls[2])
1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  @decorators.Disabled('chromeos') # crbug.com/404868.
1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testWprRecorderWithPageSet(self):
1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    flags = []
1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    mock_page_set = MockPageSet(url=self._url)
1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    wpr_recorder = record_wpr.WprRecorder(self._test_data_dir,
1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                          mock_page_set, flags)
1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    results = wpr_recorder.CreateResults()
1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    wpr_recorder.Record(results)
1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertEqual(set(mock_page_set.pages), results.pages_that_succeeded)
1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testWprRecorderWithBenchmark(self):
1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    flags = ['--mock-benchmark-url', self._url]
1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    mock_benchmark = MockBenchmark()
1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    wpr_recorder = record_wpr.WprRecorder(self._test_data_dir, mock_benchmark,
1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                          flags)
1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    results = wpr_recorder.CreateResults()
1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    wpr_recorder.Record(results)
1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertEqual(set(mock_benchmark.mock_page_set.pages),
1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                     results.pages_that_succeeded)
1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testCommandLineFlags(self):
1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    flags = [
1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        '--page-repeat', '2',
1695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        '--mock-benchmark-url', self._url,
1705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        '--mock-page-test-option',
1715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    ]
1725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    wpr_recorder = record_wpr.WprRecorder(self._test_data_dir, MockBenchmark(),
1735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                          flags)
1745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    # page_runner command-line args
1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertEquals(2, wpr_recorder.options.page_repeat)
1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    # benchmark command-line args
1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertEquals(self._url, wpr_recorder.options.mock_benchmark_url)
1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    # benchmark's page_test command-line args
1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertTrue(wpr_recorder.options.mock_page_test_option)
1805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    # invalid command-line args
1815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertFalse(hasattr(wpr_recorder.options, 'not_a_real_option'))
1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testRecordingEnabled(self):
1845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    flags = ['--mock-benchmark-url', self._url]
1855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    wpr_recorder = record_wpr.WprRecorder(self._test_data_dir, MockBenchmark(),
1865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                          flags)
1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertEqual(wpr_modes.WPR_RECORD,
1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                     wpr_recorder.options.browser_options.wpr_mode)
1895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  def testFindAllActionNames(self):
1916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    # The src/tools/telemetry/unittest_data/page_tests/ has been
1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    # populated with three simple Page Measurement classes, the first two of
1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    # which have action_name_to_run defined.
1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    action_names_to_run = record_wpr.FindAllActionNames(self._test_data_dir)
1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertTrue('RunFoo' in action_names_to_run)
1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertTrue('RunBar' in action_names_to_run)
1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    self.assertFalse('RunBaz' in action_names_to_run)
19803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
19903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  # When the RecorderPageTest WillStartBrowser/DidStartBrowser function is
20003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  # called, it forwards the call to the PageTest
20103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  def testRecorderPageTest_BrowserMethods(self):
20203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    record_page_test = record_wpr.RecorderPageTest([])
20303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    record_page_test.page_test = MockBenchmark().test()
2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    record_page_test.WillStartBrowser(self._tab.browser.platform)
20503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    record_page_test.DidStartBrowser(self._tab.browser)
20603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    self.assertTrue('WillStartBrowser' in record_page_test.page_test.func_calls)
20703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    self.assertTrue('DidStartBrowser' in record_page_test.page_test.func_calls)
208