mirror of
https://github.com/roytam1/UXP.git
synced 2026-06-16 21:38:46 +00:00
65 lines
2.3 KiB
JavaScript
65 lines
2.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Tests the breakpoint gutter and making sure breakpoint icons exist
|
|
// correctly
|
|
|
|
// Utilities for interacting with the editor
|
|
function clickGutter(dbg, line) {
|
|
clickElement(dbg, "gutter", line);
|
|
}
|
|
|
|
function getLineEl(dbg, line) {
|
|
const lines = dbg.win.document.querySelectorAll(".CodeMirror-code > div");
|
|
return lines[line - 1];
|
|
}
|
|
|
|
function assertEditorBreakpoint(dbg, line, shouldExist) {
|
|
const exists = !!getLineEl(dbg, line).querySelector(".new-breakpoint");
|
|
ok(exists === shouldExist,
|
|
"Breakpoint " + (shouldExist ? "exists" : "does not exist") +
|
|
" on line " + line);
|
|
}
|
|
|
|
add_task(function* () {
|
|
const dbg = yield initDebugger("doc-scripts.html");
|
|
const { selectors: { getBreakpoints, getBreakpoint }, getState } = dbg;
|
|
const source = findSource(dbg, "simple1.js");
|
|
|
|
yield selectSource(dbg, source.url);
|
|
|
|
// Make sure that clicking the gutter creates a breakpoint icon.
|
|
clickGutter(dbg, 4);
|
|
yield waitForDispatch(dbg, "ADD_BREAKPOINT");
|
|
is(getBreakpoints(getState()).size, 1, "One breakpoint exists");
|
|
assertEditorBreakpoint(dbg, 4, true);
|
|
|
|
// Make sure clicking at the same place removes the icon.
|
|
clickGutter(dbg, 4);
|
|
yield waitForDispatch(dbg, "REMOVE_BREAKPOINT");
|
|
is(getBreakpoints(getState()).size, 0, "No breakpoints exist");
|
|
assertEditorBreakpoint(dbg, 4, false);
|
|
|
|
// Test that a breakpoint icon slides down to the correct line.
|
|
clickGutter(dbg, 2);
|
|
yield waitForDispatch(dbg, "ADD_BREAKPOINT");
|
|
is(getBreakpoints(getState()).size, 1, "One breakpoint exists");
|
|
ok(getBreakpoint(getState(), { sourceId: source.id, line: 4 }),
|
|
"Breakpoint has correct line");
|
|
assertEditorBreakpoint(dbg, 2, false);
|
|
assertEditorBreakpoint(dbg, 4, true);
|
|
|
|
// Do the same sliding and make sure it works if there's already a
|
|
// breakpoint.
|
|
clickGutter(dbg, 2);
|
|
yield waitForDispatch(dbg, "ADD_BREAKPOINT");
|
|
is(getBreakpoints(getState()).size, 1, "One breakpoint exists");
|
|
assertEditorBreakpoint(dbg, 2, false);
|
|
assertEditorBreakpoint(dbg, 4, true);
|
|
|
|
clickGutter(dbg, 4);
|
|
yield waitForDispatch(dbg, "REMOVE_BREAKPOINT");
|
|
is(getBreakpoints(getState()).size, 0, "No breakpoints exist");
|
|
assertEditorBreakpoint(dbg, 4, false);
|
|
});
|