diff --git a/cobalt/black_box_tests/black_box_tests.py b/cobalt/black_box_tests/black_box_tests.py index 7dc6fd7ab359..98430bda0f22 100755 --- a/cobalt/black_box_tests/black_box_tests.py +++ b/cobalt/black_box_tests/black_box_tests.py @@ -78,6 +78,7 @@ 'disable_eval_with_csp', 'h5vcc_storage_write_verify_test', 'http_cache', + 'javascript_profiler', 'persistent_cookie', 'scroll', 'service_worker_add_to_cache_test', diff --git a/cobalt/black_box_tests/testdata/javascript_profiler.html b/cobalt/black_box_tests/testdata/javascript_profiler.html new file mode 100644 index 000000000000..f268510db49a --- /dev/null +++ b/cobalt/black_box_tests/testdata/javascript_profiler.html @@ -0,0 +1,88 @@ + + + + JavaScript Profiler Test + + + + + + diff --git a/cobalt/black_box_tests/tests/javascript_profiler.py b/cobalt/black_box_tests/tests/javascript_profiler.py new file mode 100644 index 000000000000..33dabc7a0821 --- /dev/null +++ b/cobalt/black_box_tests/tests/javascript_profiler.py @@ -0,0 +1,40 @@ +# Copyright 2024 The Cobalt Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Tests if Cobalt client page can use window.Profiler.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +from cobalt.black_box_tests import black_box_tests +from cobalt.black_box_tests.threaded_web_server import ThreadedWebServer + + +class JavaScriptProfilerTest(black_box_tests.BlackBoxTestCase): + """Ensure that the client can declare a `window.Profiler` object.""" + + def test_javascript_profiler_prime_profiler(self): + with ThreadedWebServer(binding_address=self.GetBindingAddress()) as server: + modes = [ + 'testPrimeProfiler', + 'testSampleBufferFullProfiler', + 'testAbruptGarbageCollection', + ] + for mode in modes: + url = server.GetURL( + file_name=f'testdata/javascript_profiler.html?mode={mode}') + with self.CreateCobaltRunner(url=url) as runner: + runner.WaitForJSTestsSetup() + self.assertTrue(runner.JSTestsSucceeded(), + f'JavaScript profiler failed at case mode="{mode}".')