tenfourfox/devtools/client/performance/test/browser_timeline-waterfall-generic.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

113 lines
4.4 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* Tests if the waterfall is properly built after finishing a recording.
*/
function* spawnTest() {
// This test seems to take a long time to cleanup on Ubuntu VMs.
requestLongerTimeout(2);
let { target, panel } = yield initPerformance(SIMPLE_URL);
let { $, $$, EVENTS, PerformanceController, OverviewView, WaterfallView, DetailsView } = panel.panelWin;
let { WATERFALL_MARKER_SIDEBAR_SAFE_BOUNDS } = require("devtools/client/performance/modules/widgets/marker-view");
yield startRecording(panel);
ok(true, "Recording has started.");
let updated = 0;
OverviewView.on(EVENTS.OVERVIEW_RENDERED, () => updated++);
ok((yield waitUntil(() => updated > 0)),
"The overview graphs were updated a bunch of times.");
ok((yield waitUntil(() => PerformanceController.getCurrentRecording().getMarkers().length > 0)),
"There are some markers available.");
let rendered = Promise.all([
DetailsView.selectView("waterfall"),
once(WaterfallView, EVENTS.WATERFALL_RENDERED)
]);
yield stopRecording(panel);
ok(true, "Recording has ended.");
yield rendered;
ok(true, "Recording has rendered.");
// Test the header container.
ok($(".waterfall-header-container"),
"A header container should have been created.");
// Test the header sidebar (left).
ok($(".waterfall-header-container > .waterfall-sidebar"),
"A header sidebar node should have been created.");
ok($(".waterfall-header-container > .waterfall-sidebar > .waterfall-header-name"),
"A header name label should have been created inside the sidebar.");
// Test the header ticks (right).
ok($(".waterfall-header-ticks"),
"A header ticks node should have been created.");
ok($$(".waterfall-header-ticks > .waterfall-header-tick").length > 0,
"Some header tick labels should have been created inside the tick node.");
// Test the markers sidebar (left).
ok($$(".waterfall-tree-item > .waterfall-sidebar").length,
"Some marker sidebar nodes should have been created.");
ok($$(".waterfall-tree-item > .waterfall-sidebar > .waterfall-marker-bullet").length,
"Some marker color bullets should have been created inside the sidebar.");
ok($$(".waterfall-tree-item > .waterfall-sidebar > .waterfall-marker-name").length,
"Some marker name labels should have been created inside the sidebar.");
// Test the markers waterfall (right).
ok($$(".waterfall-tree-item > .waterfall-marker").length,
"Some marker waterfall nodes should have been created.");
ok($$(".waterfall-tree-item > .waterfall-marker > .waterfall-marker-bar").length,
"Some marker color bars should have been created inside the waterfall.");
// Test the sidebar
let detailsView = WaterfallView.details;
let markersRoot = WaterfallView._markersRoot;
let parentWidthBefore = $("#waterfall-view").getBoundingClientRect().width;
let sidebarWidthBefore = $(".waterfall-sidebar").getBoundingClientRect().width;
let detailsWidthBefore = $("#waterfall-details").getBoundingClientRect().width;
ok(detailsView.hidden,
"The details view in the waterfall view is hidden by default.");
is(detailsWidthBefore, 0,
"The details view width should be 0 when hidden.");
is(markersRoot._waterfallWidth, parentWidthBefore - sidebarWidthBefore - WATERFALL_MARKER_SIDEBAR_SAFE_BOUNDS,
"The waterfall width is correct.")
let receivedFocusEvent = markersRoot.once("focus");
let waterfallRerendered = once(WaterfallView, EVENTS.WATERFALL_RENDERED);
WaterfallView._markersRoot.getChild(0).focus();
yield receivedFocusEvent;
yield waterfallRerendered;
let parentWidthAfter = $("#waterfall-view").getBoundingClientRect().width;
let sidebarWidthAfter = $(".waterfall-sidebar").getBoundingClientRect().width;
let detailsWidthAfter = $("#waterfall-details").getBoundingClientRect().width;
ok(!detailsView.hidden,
"The details view in the waterfall view is now visible.");
is(parentWidthBefore, parentWidthAfter,
"The parent view's width should not have changed.");
is(sidebarWidthBefore, sidebarWidthAfter,
"The sidebar view's width should not have changed.");
isnot(detailsWidthAfter, 0,
"The details view width should not be 0 when visible.");
is(markersRoot._waterfallWidth, parentWidthAfter - sidebarWidthAfter - detailsWidthAfter - WATERFALL_MARKER_SIDEBAR_SAFE_BOUNDS,
"The waterfall width is correct (2).")
yield teardown(panel);
finish();
}