summaryrefslogtreecommitdiffstats
path: root/devtools/client/performance/test/browser_timeline-waterfall-generic.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/performance/test/browser_timeline-waterfall-generic.js')
-rw-r--r--devtools/client/performance/test/browser_timeline-waterfall-generic.js105
1 files changed, 105 insertions, 0 deletions
diff --git a/devtools/client/performance/test/browser_timeline-waterfall-generic.js b/devtools/client/performance/test/browser_timeline-waterfall-generic.js
new file mode 100644
index 000000000..bcb87d80c
--- /dev/null
+++ b/devtools/client/performance/test/browser_timeline-waterfall-generic.js
@@ -0,0 +1,105 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
+
+/**
+ * Tests if the waterfall is properly built after finishing a recording.
+ */
+
+const { SIMPLE_URL } = require("devtools/client/performance/test/helpers/urls");
+const { initPerformanceInNewTab, teardownToolboxAndRemoveTab } = require("devtools/client/performance/test/helpers/panel-utils");
+const { startRecording, stopRecording, waitForOverviewRenderedWithMarkers } = require("devtools/client/performance/test/helpers/actions");
+const { once } = require("devtools/client/performance/test/helpers/event-utils");
+
+add_task(function* () {
+ let { panel } = yield initPerformanceInNewTab({
+ url: SIMPLE_URL,
+ win: window
+ });
+
+ let { $, $$, EVENTS, WaterfallView } = panel.panelWin;
+
+ yield startRecording(panel);
+ ok(true, "Recording has started.");
+
+ // Ensure overview is rendering and some markers were received.
+ yield waitForOverviewRenderedWithMarkers(panel);
+
+ yield stopRecording(panel);
+ ok(true, "Recording has ended.");
+
+ // Test the header container.
+
+ ok($(".waterfall-header"),
+ "A header container should have been created.");
+
+ // Test the header sidebar (left).
+
+ ok($(".waterfall-header > .waterfall-sidebar"),
+ "A header sidebar node should have been created.");
+
+ // 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;
+ // Make sure the bounds are up to date.
+ WaterfallView._recalculateBounds();
+
+ 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(WaterfallView.waterfallWidth,
+ parentWidthBefore - sidebarWidthBefore
+ - WaterfallView.WATERFALL_MARKER_SIDEBAR_SAFE_BOUNDS,
+ "The waterfall width is correct (1).");
+
+ let waterfallRerendered = once(WaterfallView, EVENTS.UI_WATERFALL_RENDERED);
+ $$(".waterfall-tree-item")[0].click();
+ 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(WaterfallView.waterfallWidth,
+ parentWidthAfter - sidebarWidthAfter - detailsWidthAfter
+ - WaterfallView.WATERFALL_MARKER_SIDEBAR_SAFE_BOUNDS,
+ "The waterfall width is correct (2).");
+
+ yield teardownToolboxAndRemoveTab(panel);
+});