Blame devtools/client/debugger/new/test/mochitest/browser_dbg-preview-source-maps.js

Packit f0b94e
/* Any copyright is dedicated to the Public Domain.
Packit f0b94e
 * http://creativecommons.org/publicdomain/zero/1.0/ */
Packit f0b94e
Packit f0b94e
function getCoordsFromPosition(cm, { line, ch }) {
Packit f0b94e
  return cm.charCoords({ line: ~~line, ch: ~~ch });
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
function hoverAtPos(dbg, { line, ch }) {
Packit f0b94e
  const cm = getCM(dbg);
Packit f0b94e
  const coords = getCoordsFromPosition(cm, { line: line - 1, ch });
Packit f0b94e
  const tokenEl = dbg.win.document.elementFromPoint(coords.left, coords.top);
Packit f0b94e
  tokenEl.dispatchEvent(
Packit f0b94e
    new MouseEvent("mouseover", {
Packit f0b94e
      bubbles: true,
Packit f0b94e
      cancelable: true,
Packit f0b94e
      view: dbg.win
Packit f0b94e
    })
Packit f0b94e
  );
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
function assertTooltip(dbg, { result, expression }) {
Packit f0b94e
  const previewEl = findElement(dbg, "tooltip");
Packit f0b94e
  is(previewEl.innerText, result, "Preview text shown to user");
Packit f0b94e
Packit f0b94e
  const preview = dbg.selectors.getPreview(dbg.getState());
Packit f0b94e
  is(`${preview.result}`, result, "Preview.result");
Packit f0b94e
  is(preview.updating, false, "Preview.updating");
Packit f0b94e
  is(preview.expression, expression, "Preview.expression");
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
function assertPopup(dbg, { field, value, expression }) {
Packit f0b94e
  const previewEl = findElement(dbg, "popup");
Packit f0b94e
  is(previewEl.innerText, "", "Preview text shown to user");
Packit f0b94e
Packit f0b94e
  const preview = dbg.selectors.getPreview(dbg.getState());
Packit f0b94e
Packit f0b94e
  is(
Packit f0b94e
    `${preview.result.preview.ownProperties[field].value}`,
Packit f0b94e
    value,
Packit f0b94e
    "Preview.result"
Packit f0b94e
  );
Packit f0b94e
  is(preview.updating, false, "Preview.updating");
Packit f0b94e
  is(preview.expression, expression, "Preview.expression");
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
add_task(async function() {
Packit f0b94e
  const dbg = await initDebugger("doc-sourcemaps.html");
Packit f0b94e
  const { selectors: { getSelectedSource }, getState } = dbg;
Packit f0b94e
Packit f0b94e
  await waitForSources(dbg, "entry.js", "output.js", "times2.js", "opts.js");
Packit f0b94e
  await selectSource(dbg, "times2");
Packit f0b94e
  await addBreakpoint(dbg, "times2", 2);
Packit f0b94e
Packit f0b94e
  invokeInTab("keepMeAlive");
Packit f0b94e
  await waitForPaused(dbg);
Packit f0b94e
  await waitForSelectedSource(dbg, "times2");
Packit f0b94e
Packit f0b94e
  const tooltipPreviewed = waitForDispatch(dbg, "SET_PREVIEW");
Packit f0b94e
  hoverAtPos(dbg, { line: 2, ch: 9 });
Packit f0b94e
Packit f0b94e
  await tooltipPreviewed;
Packit f0b94e
  assertTooltip(dbg, { result: 4, expression: "x" });
Packit f0b94e
});