Bug 1422985. Add test to ensure details param is JSON object. r=miketaylr a=testonly
MozReview-Commit-ID: IjyT44EbRL
--- a/browser/extensions/webcompat-reporter/test/browser/browser_report_site_issue.js
+++ b/browser/extensions/webcompat-reporter/test/browser/browser_report_site_issue.js
@@ -1,11 +1,11 @@
/* Test that clicking on the Report Site Issue button opens a new tab
and sends a postMessaged blob to it. */
-add_task(async function test_screenshot() {
+add_task(async function test_opened_page() {
requestLongerTimeout(2);
// ./head.js sets the value for PREF_WC_REPORTER_ENDPOINT
await SpecialPowers.pushPrefEnv({set: [[PREF_WC_REPORTER_ENDPOINT, NEW_ISSUE_PAGE]]});
let tab1 = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_PAGE);
let webcompatButton = document.getElementById(WC_PAGE_ACTION_ID);
@@ -26,15 +26,18 @@ add_task(async function test_screenshot(
await screenshotPromise;
await ContentTask.spawn(tab2.linkedBrowser, {TEST_PAGE}, function(args) {
let doc = content.document;
let urlParam = doc.getElementById("url").innerText;
let preview = doc.getElementById("screenshot-preview");
is(urlParam, args.TEST_PAGE, "Reported page is correctly added to the url param");
+ let detailsParam = doc.getElementById("details").innerText;
+ ok(typeof JSON.parse(detailsParam) == "object", "Details param is a stringified JSON object.");
+
is(preview.innerText, "Pass", "A Blob object was successfully transferred to the test page.");
ok(preview.style.backgroundImage.startsWith("url(\"data:image/png;base64,iVBOR"), "A green screenshot was successfully postMessaged");
});
await BrowserTestUtils.removeTab(tab2);
await BrowserTestUtils.removeTab(tab1);
});
--- a/browser/extensions/webcompat-reporter/test/browser/webcompat.html
+++ b/browser/extensions/webcompat-reporter/test/browser/webcompat.html
@@ -1,20 +1,23 @@
<!DOCTYPE html>
<meta charset="utf-8">
<style>
#screenshot-preview {width: 200px; height: 200px;}
</style>
<div id="url"></div>
+<div id="details"></div>
<div id="screenshot-preview">Fail</div>
<script>
let params = new URL(location.href).searchParams;
let preview = document.getElementById("screenshot-preview");
let url = document.getElementById("url");
url.innerText = params.get("url");
+let details = document.getElementById("details");
+details.innerText = params.get("details");
function getBlobAsDataURL(blob) {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.addEventListener("error", (e) => {
reject(`There was an error reading the blob: ${e.type}`);
});