summaryrefslogtreecommitdiffstats
path: root/devtools/client/jsonview/test/browser_jsonview_copy_rawdata.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/jsonview/test/browser_jsonview_copy_rawdata.js')
-rw-r--r--devtools/client/jsonview/test/browser_jsonview_copy_rawdata.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/devtools/client/jsonview/test/browser_jsonview_copy_rawdata.js b/devtools/client/jsonview/test/browser_jsonview_copy_rawdata.js
new file mode 100644
index 000000000..d2346ea42
--- /dev/null
+++ b/devtools/client/jsonview/test/browser_jsonview_copy_rawdata.js
@@ -0,0 +1,53 @@
+/* -*- 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 TEST_JSON_URL = URL_ROOT + "simple_json.json";
+
+let jsonText = "{\"name\": \"value\"}\n";
+let prettyJson = "{\n \"name\": \"value\"\n}";
+
+add_task(function* () {
+ info("Test copy raw data started");
+
+ yield addJsonViewTab(TEST_JSON_URL);
+
+ // Select the RawData tab
+ yield selectJsonViewContentTab("rawdata");
+
+ // Check displayed JSON
+ let text = yield getElementText(".textPanelBox .data");
+ is(text, jsonText, "Proper JSON must be displayed in DOM");
+
+ let browser = gBrowser.selectedBrowser;
+
+ // Verify JSON copy into the clipboard.
+ yield waitForClipboardPromise(function setup() {
+ BrowserTestUtils.synthesizeMouseAtCenter(
+ ".textPanelBox .toolbar button.copy",
+ {}, browser);
+ }, jsonText);
+
+ // Click 'Pretty Print' button
+ yield BrowserTestUtils.synthesizeMouseAtCenter(
+ ".textPanelBox .toolbar button.prettyprint",
+ {}, browser);
+
+ let prettyText = yield getElementText(".textPanelBox .data");
+ prettyText = normalizeNewLines(prettyText);
+ ok(prettyText.startsWith(prettyJson),
+ "Pretty printed JSON must be displayed");
+
+ // Verify JSON copy into the clipboard.
+ yield waitForClipboardPromise(function setup() {
+ BrowserTestUtils.synthesizeMouseAtCenter(
+ ".textPanelBox .toolbar button.copy",
+ {}, browser);
+ }, function validator(value) {
+ let str = normalizeNewLines(value);
+ return str == prettyJson;
+ });
+});