Bug 1426094 - Add test for URL linkification in the JSON Viewer draft
authorOriol Brufau <oriol-bugzilla@hotmail.com>
Fri, 22 Dec 2017 17:41:09 +0100
changeset 715336 5a564a957b9f5ac13d63167603c5c724b70d2cd6
parent 714369 947b1418ebb23e1faf716cec11237c6861c5d061
child 744774 4453a60f27f936021fa6c550c4348ea193b4c575
push id94141
push userbmo:oriol-bugzilla@hotmail.com
push dateWed, 03 Jan 2018 18:51:18 +0000
bugs1426094
milestone59.0a1
Bug 1426094 - Add test for URL linkification in the JSON Viewer MozReview-Commit-ID: Xbn28TLcMu
devtools/client/jsonview/test/browser.ini
devtools/client/jsonview/test/browser_jsonview_url_linkification.js
--- a/devtools/client/jsonview/test/browser.ini
+++ b/devtools/client/jsonview/test/browser.ini
@@ -49,9 +49,10 @@ skip-if = (os == 'linux' && bits == 32 &
 [browser_jsonview_object-type.js]
 [browser_jsonview_row_selection.js]
 [browser_jsonview_save_json.js]
 support-files =
   !/toolkit/content/tests/browser/common/mockTransfer.js
 [browser_jsonview_serviceworker.js]
 [browser_jsonview_slash.js]
 [browser_jsonview_theme.js]
+[browser_jsonview_url_linkification.js]
 [browser_jsonview_valid_json.js]
new file mode 100644
--- /dev/null
+++ b/devtools/client/jsonview/test/browser_jsonview_url_linkification.js
@@ -0,0 +1,51 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const {ELLIPSIS} = require("devtools/shared/l10n");
+
+add_task(async function () {
+  info("Test short URL linkification JSON started");
+
+  let url = "http://example.com/";
+  let tab = await addJsonViewTab("data:application/json," + JSON.stringify([url]));
+
+  // eslint-disable-next-line no-shadow
+  await ContentTask.spawn(tab.linkedBrowser, {url}, function ({url}) {
+    let {document} = content;
+
+    let link = document.querySelector(".jsonPanelBox .treeTable .treeValueCell a");
+    is(link.href, url, "The URL was linkified.");
+    is(link.textContent, url, "The full URL is displayed.");
+
+    // Click the label
+    document.querySelector(".jsonPanelBox .treeTable .treeLabel").click();
+    is(link.href, url, "The link target didn't change.");
+    is(link.textContent, url, "The link text didn't change.");
+  });
+});
+
+add_task(async function () {
+  info("Test long URL linkification JSON started");
+
+  let url = "http://example.com/" + "a".repeat(100);
+  let tab = await addJsonViewTab("data:application/json," + JSON.stringify([url]));
+
+  // eslint-disable-next-line no-shadow
+  await ContentTask.spawn(tab.linkedBrowser, {url, ELLIPSIS}, function ({url, ELLIPSIS}) {
+    let croppedUrl = url.slice(0, 24) + ELLIPSIS + url.slice(-24);
+    let {document} = content;
+
+    let link = document.querySelector(".jsonPanelBox .treeTable .treeValueCell a");
+    is(link.href, url, "The URL was linkified.");
+    is(link.textContent, url, "The full URL is displayed.");
+
+    // Click the label, this crops the value.
+    document.querySelector(".jsonPanelBox .treeTable .treeLabel").click();
+    is(link.href, url, "The link target didn't change.");
+    is(link.textContent, croppedUrl, "The link text was cropped.");
+  });
+});