Files
sousa-gecko/devtools/server/tests/browser/browser_perf-02.js
T
Florian Quèze e611cdb4b9 Bug 2049634 - Make more devtools tests pass with the Gecko profiler enabled by default, r=devtools-reviewers,ochameau.
Follow-up to bug 2044390, which fixed the devtools tests that failed in the
try jobs run at the time. Standalone and all-mochitest jobs surface four more
tests in the same two failure classes.

browser_perf-02.js and browser_perf-04.js assert the profiler is inactive
before starting it. browser_perf-01.js already stops the startup profiler via
ProfilerTestUtils.assertProfilerInactive, and in a shared browser instance it
runs first and leaves the profiler stopped for the rest of the folder, hiding
these two. Standalone jobs restart the browser per test, so they each start
with the profiler active and fail; add the same add_setup call.

browser_toolbox_tabsswitch_shortcuts.js and the mozscreenshots
browser_devtools.js open the performance panel, whose
ProfilerEventHandling.componentWillUnmount issues a stopProfilerAndDiscardProfile
request on toolbox close that races the connection teardown and rejects (bug
2044383). Tolerate it with PromiseTestUtils.allowMatchingRejectionsGlobally,
like the four toolbox tests fixed in bug 2044390.

Differential Revision: https://phabricator.services.mozilla.com/D308218
2026-06-24 16:45:09 +00:00

44 lines
1.3 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const { ProfilerTestUtils } = ChromeUtils.importESModule(
"resource://testing-common/ProfilerTestUtils.sys.mjs"
);
add_setup(ProfilerTestUtils.assertProfilerInactive);
/**
* Test what happens when other tools control the profiler.
*/
add_task(async function () {
const { front, client } = await initPerfFront();
// Simulate other tools by getting an independent handle on the Gecko Profiler.
// eslint-disable-next-line mozilla/use-services
const geckoProfiler = Cc["@mozilla.org/tools/profiler;1"].getService(
Ci.nsIProfiler
);
is(await front.isActive(), false, "The profiler hasn't been started yet.");
// Start the profiler.
await front.startProfiler();
is(await front.isActive(), true, "The profiler was started.");
// Stop the profiler manually through the Gecko Profiler interface.
const profilerStopped = once(front, "profiler-stopped");
geckoProfiler.StopProfiler();
await profilerStopped;
is(
await front.isActive(),
false,
"The profiler was stopped by another tool."
);
// Clean up.
await front.destroy();
await client.close();
});