Mypal/devtools/client/webaudioeditor/test/browser_wa_inspector-bypass-01.js
2019-03-11 13:26:37 +03:00

62 lines
2.4 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* Tests that nodes are correctly bypassed when bypassing.
*/
add_task(function* () {
let { target, panel } = yield initWebAudioEditor(SIMPLE_CONTEXT_URL);
let { panelWin } = panel;
let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin;
let events = Promise.all([
get3(gFront, "create-node"),
waitForGraphRendered(panelWin, 3, 2)
]);
reload(target);
let [actors] = yield events;
let nodeIds = actors.map(actor => actor.actorID);
// Wait for the node to be set as well as the inspector to come fully into the view
yield clickGraphNode(panelWin, findGraphNode(panelWin, nodeIds[1]), true);
let $bypass = $("toolbarbutton.bypass");
is((yield actors[1].isBypassed()), false, "AudioNodeActor is not bypassed by default.");
is($bypass.checked, true, "Button is 'on' for normal nodes");
is($bypass.disabled, false, "Bypass button is not disabled for normal nodes");
command($bypass);
yield once(gAudioNodes, "bypass");
is((yield actors[1].isBypassed()), true, "AudioNodeActor is bypassed.");
is($bypass.checked, false, "Button is 'off' when clicked");
is($bypass.disabled, false, "Bypass button is not disabled after click");
ok(findGraphNode(panelWin, nodeIds[1]).classList.contains("bypassed"),
"AudioNode has 'bypassed' class.");
command($bypass);
yield once(gAudioNodes, "bypass");
is((yield actors[1].isBypassed()), false, "AudioNodeActor is no longer bypassed.");
is($bypass.checked, true, "Button is back on when clicked");
is($bypass.disabled, false, "Bypass button is not disabled after click");
ok(!findGraphNode(panelWin, nodeIds[1]).classList.contains("bypassed"),
"AudioNode no longer has 'bypassed' class.");
yield clickGraphNode(panelWin, findGraphNode(panelWin, nodeIds[0]));
is((yield actors[0].isBypassed()), false, "Unbypassable AudioNodeActor is not bypassed.");
is($bypass.checked, false, "Button is 'off' for unbypassable nodes");
is($bypass.disabled, true, "Bypass button is disabled for unbypassable nodes");
command($bypass);
is((yield actors[0].isBypassed()), false,
"Clicking button on unbypassable node does not change bypass state on actor.");
is($bypass.checked, false, "Button is still 'off' for unbypassable nodes");
is($bypass.disabled, true, "Bypass button is still disabled for unbypassable nodes");
yield teardown(target);
});