|
1 /* vim: set ts=2 et sw=2 tw=80: */ |
|
2 /* Any copyright is dedicated to the Public Domain. |
|
3 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
4 |
|
5 "use strict"; |
|
6 |
|
7 // Test outerHTML edition via the markup-view |
|
8 |
|
9 loadHelperScript("helper_outerhtml_test_runner.js"); |
|
10 |
|
11 const TEST_DATA = [ |
|
12 { |
|
13 selector: "#badMarkup1", |
|
14 oldHTML: '<div id="badMarkup1">badMarkup1</div>', |
|
15 newHTML: '<div id="badMarkup1">badMarkup1</div> hanging</div>', |
|
16 validate: function(pageNode, selectedNode) { |
|
17 is(pageNode, selectedNode, "Original element is selected"); |
|
18 |
|
19 let textNode = pageNode.nextSibling; |
|
20 |
|
21 is(textNode.nodeName, "#text", "Sibling is a text element"); |
|
22 is(textNode.data, " hanging", "New text node has expected text content"); |
|
23 } |
|
24 }, |
|
25 { |
|
26 selector: "#badMarkup2", |
|
27 oldHTML: '<div id="badMarkup2">badMarkup2</div>', |
|
28 newHTML: '<div id="badMarkup2">badMarkup2</div> hanging<div></div></div></div></body>', |
|
29 validate: function(pageNode, selectedNode) { |
|
30 is(pageNode, selectedNode, "Original element is selected"); |
|
31 |
|
32 let textNode = pageNode.nextSibling; |
|
33 |
|
34 is(textNode.nodeName, "#text", "Sibling is a text element"); |
|
35 is(textNode.data, " hanging", "New text node has expected text content"); |
|
36 } |
|
37 }, |
|
38 { |
|
39 selector: "#badMarkup3", |
|
40 oldHTML: '<div id="badMarkup3">badMarkup3</div>', |
|
41 newHTML: '<div id="badMarkup3">badMarkup3 <em>Emphasized <strong> and strong</div>', |
|
42 validate: function(pageNode, selectedNode) { |
|
43 is(pageNode, selectedNode, "Original element is selected"); |
|
44 |
|
45 let em = getNode("#badMarkup3 em"); |
|
46 let strong = getNode("#badMarkup3 strong"); |
|
47 |
|
48 is(em.textContent, "Emphasized and strong", "<em> was auto created"); |
|
49 is(strong.textContent, " and strong", "<strong> was auto created"); |
|
50 } |
|
51 }, |
|
52 { |
|
53 selector: "#badMarkup4", |
|
54 oldHTML: '<div id="badMarkup4">badMarkup4</div>', |
|
55 newHTML: '<div id="badMarkup4">badMarkup4</p>', |
|
56 validate: function(pageNode, selectedNode) { |
|
57 is(pageNode, selectedNode, "Original element is selected"); |
|
58 |
|
59 let div = getNode("#badMarkup4"); |
|
60 let p = getNode("#badMarkup4 p"); |
|
61 |
|
62 is(div.textContent, "badMarkup4", "textContent is correct"); |
|
63 is(div.tagName, "DIV", "did not change to <p> tag"); |
|
64 is(p.textContent, "", "The <p> tag has no children"); |
|
65 is(p.tagName, "P", "Created an empty <p> tag"); |
|
66 } |
|
67 }, |
|
68 { |
|
69 selector: "#badMarkup5", |
|
70 oldHTML: '<p id="badMarkup5">badMarkup5</p>', |
|
71 newHTML: '<p id="badMarkup5">badMarkup5 <div>with a nested div</div></p>', |
|
72 validate: function(pageNode, selectedNode) { |
|
73 is(pageNode, selectedNode, "Original element is selected"); |
|
74 |
|
75 let p = getNode("#badMarkup5"); |
|
76 let nodiv = getNode("#badMarkup5 div"); |
|
77 let div = getNode("#badMarkup5 ~ div"); |
|
78 |
|
79 ok(!nodiv, "The invalid markup got created as a sibling"); |
|
80 is(p.textContent, "badMarkup5 ", "The <p> tag does not take in the <div> content"); |
|
81 is(p.tagName, "P", "Did not change to a <div> tag"); |
|
82 is(div.textContent, "with a nested div", "textContent is correct"); |
|
83 is(div.tagName, "DIV", "Did not change to <p> tag"); |
|
84 } |
|
85 } |
|
86 ]; |
|
87 |
|
88 const TEST_URL = "data:text/html," + |
|
89 "<!DOCTYPE html>" + |
|
90 "<head><meta charset='utf-8' /></head>" + |
|
91 "<body>" + |
|
92 [outer.oldHTML for (outer of TEST_DATA)].join("\n") + |
|
93 "</body>" + |
|
94 "</html>"; |
|
95 |
|
96 let test = asyncTest(function*() { |
|
97 let {inspector} = yield addTab(TEST_URL).then(openInspector); |
|
98 inspector.markup._frame.focus(); |
|
99 yield runEditOuterHTMLTests(TEST_DATA, inspector); |
|
100 }); |