Skip to content

Commit

Permalink
Bug 1456098 - Create tests for devtools.main.activate telemetry event…
Browse files Browse the repository at this point in the history
… r=yulia

MozReview-Commit-ID: III7oI427vr
  • Loading branch information
Michael Ratcliffe committed Apr 25, 2018
1 parent 07c56c0 commit 7eacd81
Show file tree
Hide file tree
Showing 4 changed files with 165 additions and 0 deletions.
1 change: 1 addition & 0 deletions devtools/client/framework/test/browser.ini
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ skip-if = e10s # Bug 1069044 - destroyInspector may hang during shutdown
[browser_toolbox_split_console.js]
[browser_toolbox_target.js]
[browser_toolbox_tabsswitch_shortcuts.js]
[browser_toolbox_telemetry_activate_splitconsole.js]
[browser_toolbox_telemetry_close.js]
[browser_toolbox_telemetry_enter.js]
[browser_toolbox_telemetry_exit.js]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

const URL =
"data:text/html;charset=utf8,browser_toolbox_telemetry_activate_splitconsole.js";
const OPTOUT = Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTOUT;
const DATA = [
{
timestamp: null,
category: "devtools.main",
method: "activate",
object: "split_console",
value: null,
extra: {
host: "bottom",
width: "1300"
}
}, {
timestamp: null,
category: "devtools.main",
method: "activate",
object: "split_console",
value: null,
extra: {
host: "bottom",
width: "1300"
}
}
];

add_task(async function() {
// Let's reset the counts.
Services.telemetry.clearEvents();

// Ensure no events have been logged
const snapshot = Services.telemetry.snapshotEvents(OPTOUT, true);
ok(!snapshot.parent, "No events have been logged for the main process");

const tab = await addTab(URL);
const target = TargetFactory.forTab(tab);
const toolbox = await gDevTools.showToolbox(target, "inspector");

await toolbox.openSplitConsole();
await toolbox.closeSplitConsole();
await toolbox.openSplitConsole();
await toolbox.closeSplitConsole();

await checkResults();
});

async function checkResults() {
const snapshot = Services.telemetry.snapshotEvents(OPTOUT, true);
const events = snapshot.parent.filter(event => event[1] === "devtools.main" &&
event[2] === "activate" &&
event[4] === null
);

for (let i in DATA) {
const [ timestamp, category, method, object, value, extra ] = events[i];
const expected = DATA[i];

// ignore timestamp
ok(timestamp > 0, "timestamp is greater than 0");
is(category, expected.category, "category is correct");
is(method, expected.method, "method is correct");
is(object, expected.object, "object is correct");
is(value, expected.value, "value is correct");

// extras
is(extra.host, expected.extra.host, "host is correct");
ok(extra.width > 0, "width is greater than 0");
}
}
1 change: 1 addition & 0 deletions devtools/client/responsive.html/test/browser/browser.ini
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ skip-if = true # Bug 1413765
[browser_tab_close.js]
[browser_tab_remoteness_change.js]
[browser_target_blank.js]
[browser_telemetry_activate_rdm.js]
[browser_toolbox_computed_view.js]
[browser_toolbox_rule_view.js]
[browser_toolbox_swap_browsers.js]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";
const URL =
"data:text/html;charset=utf8,browser_telemetry_activate_rdm.js";
const OPTOUT = Ci.nsITelemetry.DATASET_RELEASE_CHANNEL_OPTOUT;
const DATA = [
{
timestamp: null,
category: "devtools.main",
method: "activate",
object: "responsive_design",
value: null,
extra: {
host: "none",
width: "1300"
}
}, {
timestamp: null,
category: "devtools.main",
method: "activate",
object: "responsive_design",
value: null,
extra: {
host: "bottom",
width: "1300"
}
}
];

add_task(async function() {
// Let's reset the counts.
Services.telemetry.clearEvents();

// Ensure no events have been logged
const snapshot = Services.telemetry.snapshotEvents(OPTOUT, true);
ok(!snapshot.parent, "No events have been logged for the main process");

const tab = await addTab(URL);
const target = TargetFactory.forTab(tab);

await openCloseRDM(tab);
await gDevTools.showToolbox(target, "inspector");
await openCloseRDM(tab);
await checkResults();
});

async function openCloseRDM(tab) {
let { ui } = await openRDM(tab);
let clientClosed = waitForClientClose(ui);

closeRDM(tab, {
reason: "TabClose",
});

// This flag is set at the end of `ResponsiveUI.destroy`. If it is true
// without waiting for `closeRDM` above, then we must have closed
// synchronously.
is(ui.destroyed, true, "RDM closed synchronously");

await clientClosed;
}

async function checkResults() {
const snapshot = Services.telemetry.snapshotEvents(OPTOUT, true);
const events = snapshot.parent.filter(event => event[1] === "devtools.main" &&
event[2] === "activate" &&
event[4] === null
);

for (let i in events) {
const [ timestamp, category, method, object, value, extra ] = events[i];

const expected = DATA[i];

// ignore timestamp
ok(timestamp > 0, "timestamp is greater than 0");
is(category, expected.category, "category is correct");
is(method, expected.method, "method is correct");
is(object, expected.object, "object is correct");
is(value, expected.value, "value is correct");

// extras
is(extra.host, expected.extra.host, "host is correct");
ok(extra.width > 0, "width is greater than 0");
}
}

0 comments on commit 7eacd81

Please sign in to comment.