Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: asan
- Manifest: devtools/client/debugger/test/mochitest/browser_aj.toml
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
/**
* Test the watch expressions "refresh" button:
* - hidden when no expression is available
* - visible with one or more expressions
* - updates expressions values after clicking on it
* - disappears when all expressions are removed
*/
"use strict";
add_task(async function () {
const dbg = await initDebugger("doc-script-switching.html");
invokeInTab("firstCall");
await waitForPaused(dbg);
ok(
!getRefreshExpressionsElement(dbg),
"No refresh button is displayed when there are no watch expressions"
);
await addExpression(dbg, "someVariable");
ok(
getRefreshExpressionsElement(dbg),
"Refresh button is displayed after adding a watch expression"
);
is(
getWatchExpressionLabel(dbg, 1),
"someVariable",
"Watch expression was added"
);
is(
getWatchExpressionValue(dbg, 1),
"(unavailable)",
"Watch expression has no value"
);
info("Switch to the console and update the value of the watched variable");
const { hud } = await dbg.toolbox.selectTool("webconsole");
await evaluateExpressionInConsole(hud, "var someVariable = 1");
info("Switch back to the debugger");
await dbg.toolbox.selectTool("jsdebugger");
is(
getWatchExpressionLabel(dbg, 1),
"someVariable",
"Watch expression is still available"
);
is(
getWatchExpressionValue(dbg, 1),
"(unavailable)",
"Watch expression still has no value"
);
info(
"Click on the watch expression refresh button and wait for the " +
"expression to update."
);
const refreshed = waitForDispatch(dbg.store, "EVALUATE_EXPRESSIONS");
await clickElement(dbg, "expressionRefresh");
await refreshed;
is(
getWatchExpressionLabel(dbg, 1),
"someVariable",
"Watch expression is still available"
);
is(
getWatchExpressionValue(dbg, 1),
"1",
"Watch expression value has been updated"
);
await deleteExpression(dbg, "someVariable");
ok(
!getRefreshExpressionsElement(dbg),
"The refresh button is no longer displayed after removing watch expressions"
);
});
function getRefreshExpressionsElement(dbg) {
return findElement(dbg, "expressionRefresh", 1);
}