Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Datadome Puzzle Detection Test</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css" />
<script src="/tests/SimpleTest/GleanTest.js"></script>
<script src="CaptchaTestingUtils.js"></script>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
<script>
function simulateMessage(message) {
info("Simulating message: " + JSON.stringify(message));
return new Promise(resolve => {
const iframe = document.createElement("iframe");
iframe.onload = resolve;
iframe.src =
"datadome.html?message=" +
encodeURIComponent(JSON.stringify(message));
document.body.appendChild(iframe);
});
}
add_task(async function () {
await GleanTest.testResetFOG();
const psMetricSet = CaptchaTestingUtils.waitForMetricSet();
await simulateMessage({ eventType: "load", responseType: "captcha" });
await psMetricSet;
const puzzleShownCount =
await GleanTest.captchaDetection.datadomePs.testGetValue();
is(puzzleShownCount, 1, "The puzzle shown count should be 1");
const blMetricSet = CaptchaTestingUtils.waitForMetricSet();
await simulateMessage({ eventType: "load", responseType: "hardblock" });
await blMetricSet;
const hardBlockCount =
await GleanTest.captchaDetection.datadomeBl.testGetValue();
is(hardBlockCount, 1, "The block count should be 1");
const pcMetricSet = CaptchaTestingUtils.waitForMetricSet();
await simulateMessage({ eventType: "passed" });
await pcMetricSet;
const puzzleCompletedCount =
await GleanTest.captchaDetection.datadomePc.testGetValue();
is(puzzleCompletedCount, 1, "The puzzle completed count should be 1");
await CaptchaTestingUtils.clearPrefs();
});
</script>
</body>
</html>