browser/devtools/canvasdebugger/test/browser_canvas-frontend-slider-02.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:807cd3294907
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 /**
5 * Tests if the slider in the calls list view works as advertised.
6 */
7
8 function ifTestingSupported() {
9 let [target, debuggee, panel] = yield initCanavsDebuggerFrontend(SIMPLE_CANVAS_URL);
10 let { window, $, EVENTS, gFront, SnapshotsListView, CallsListView } = panel.panelWin;
11
12 yield reload(target);
13
14 let recordingFinished = once(window, EVENTS.SNAPSHOT_RECORDING_FINISHED);
15 let callListPopulated = once(window, EVENTS.CALL_LIST_POPULATED);
16 let thumbnailsDisplayed = once(window, EVENTS.THUMBNAILS_DISPLAYED);
17 SnapshotsListView._onRecordButtonClick();
18 yield promise.all([recordingFinished, callListPopulated, thumbnailsDisplayed]);
19
20 let firstSnapshot = SnapshotsListView.getItemAtIndex(0);
21 let firstSnapshotOverview = yield firstSnapshot.attachment.actor.getOverview();
22
23 let thumbnails = firstSnapshotOverview.thumbnails;
24 is(thumbnails.length, 4,
25 "There should be 4 thumbnails cached for the snapshot item.");
26
27 let thumbnailImageElementSet = waitForMozSetImageElement(window);
28 $("#calls-slider").value = 1;
29 let thumbnailPixels = yield thumbnailImageElementSet;
30
31 ok(sameArray(thumbnailPixels, thumbnails[0].pixels),
32 "The screenshot element should have a thumbnail as an immediate background.");
33
34 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED);
35 ok(true, "The full-sized screenshot was displayed for the item at index 1.");
36
37 let thumbnailImageElementSet = waitForMozSetImageElement(window);
38 $("#calls-slider").value = 2;
39 let thumbnailPixels = yield thumbnailImageElementSet;
40
41 ok(sameArray(thumbnailPixels, thumbnails[1].pixels),
42 "The screenshot element should have a thumbnail as an immediate background.");
43
44 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED);
45 ok(true, "The full-sized screenshot was displayed for the item at index 2.");
46
47 let thumbnailImageElementSet = waitForMozSetImageElement(window);
48 $("#calls-slider").value = 7;
49 let thumbnailPixels = yield thumbnailImageElementSet;
50
51 ok(sameArray(thumbnailPixels, thumbnails[3].pixels),
52 "The screenshot element should have a thumbnail as an immediate background.");
53
54 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED);
55 ok(true, "The full-sized screenshot was displayed for the item at index 7.");
56
57 let thumbnailImageElementSet = waitForMozSetImageElement(window);
58 $("#calls-slider").value = 4;
59 let thumbnailPixels = yield thumbnailImageElementSet;
60
61 ok(sameArray(thumbnailPixels, thumbnails[2].pixels),
62 "The screenshot element should have a thumbnail as an immediate background.");
63
64 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED);
65 ok(true, "The full-sized screenshot was displayed for the item at index 4.");
66
67 let thumbnailImageElementSet = waitForMozSetImageElement(window);
68 $("#calls-slider").value = 0;
69 let thumbnailPixels = yield thumbnailImageElementSet;
70
71 ok(sameArray(thumbnailPixels, thumbnails[0].pixels),
72 "The screenshot element should have a thumbnail as an immediate background.");
73
74 yield once(window, EVENTS.CALL_SCREENSHOT_DISPLAYED);
75 ok(true, "The full-sized screenshot was displayed for the item at index 0.");
76
77 yield teardown(panel);
78 finish();
79 }
80
81 function waitForMozSetImageElement(panel) {
82 let deferred = promise.defer();
83 panel._onMozSetImageElement = deferred.resolve;
84 return deferred.promise;
85 }
86
87 function sameArray(a, b) {
88 if (a.length != b.length) {
89 return false;
90 }
91 for (let i = 0; i < a.length; i++) {
92 if (a[i] !== b[i]) {
93 return false;
94 }
95 }
96 return true;
97 }

mercurial