watir 6.10.0 → 6.10.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (280) hide show
  1. checksums.yaml +4 -4
  2. data/.document +5 -5
  3. data/.github/ISSUE_TEMPLATE.md +16 -16
  4. data/.gitignore +21 -21
  5. data/.travis.yml +72 -72
  6. data/CHANGES.md +6 -0
  7. data/Gemfile +16 -16
  8. data/LICENSE +23 -23
  9. data/README.md +106 -106
  10. data/Rakefile +153 -153
  11. data/appveyor.yml +13 -13
  12. data/lib/watir-webdriver.rb +2 -2
  13. data/lib/watir.rb +158 -158
  14. data/lib/watir/adjacent.rb +126 -126
  15. data/lib/watir/after_hooks.rb +132 -132
  16. data/lib/watir/alert.rb +120 -120
  17. data/lib/watir/aliases.rb +6 -6
  18. data/lib/watir/attribute_helper.rb +96 -96
  19. data/lib/watir/browser.rb +349 -349
  20. data/lib/watir/capabilities.rb +123 -123
  21. data/lib/watir/cell_container.rb +25 -25
  22. data/lib/watir/container.rb +51 -51
  23. data/lib/watir/cookies.rb +134 -134
  24. data/lib/watir/element_collection.rb +138 -138
  25. data/lib/watir/elements/area.rb +12 -12
  26. data/lib/watir/elements/button.rb +37 -37
  27. data/lib/watir/elements/cell.rb +17 -17
  28. data/lib/watir/elements/checkbox.rb +56 -56
  29. data/lib/watir/elements/dlist.rb +12 -12
  30. data/lib/watir/elements/element.rb +6 -5
  31. data/lib/watir/elements/file_field.rb +41 -41
  32. data/lib/watir/elements/font.rb +25 -25
  33. data/lib/watir/elements/form.rb +16 -16
  34. data/lib/watir/elements/hidden.rb +25 -25
  35. data/lib/watir/elements/html_elements.rb +2035 -2035
  36. data/lib/watir/elements/iframe.rb +166 -166
  37. data/lib/watir/elements/image.rb +21 -21
  38. data/lib/watir/elements/input.rb +15 -15
  39. data/lib/watir/elements/link.rb +18 -18
  40. data/lib/watir/elements/list.rb +49 -49
  41. data/lib/watir/elements/option.rb +72 -72
  42. data/lib/watir/elements/radio.rb +60 -60
  43. data/lib/watir/elements/row.rb +17 -17
  44. data/lib/watir/elements/select.rb +250 -250
  45. data/lib/watir/elements/svg_elements.rb +613 -613
  46. data/lib/watir/elements/table.rb +76 -76
  47. data/lib/watir/elements/table_cell.rb +31 -31
  48. data/lib/watir/elements/table_row.rb +32 -32
  49. data/lib/watir/elements/table_section.rb +15 -15
  50. data/lib/watir/elements/text_area.rb +5 -5
  51. data/lib/watir/elements/text_field.rb +39 -39
  52. data/lib/watir/exception.rb +16 -16
  53. data/lib/watir/extensions/nokogiri.rb +14 -14
  54. data/lib/watir/generator.rb +3 -3
  55. data/lib/watir/generator/base.rb +11 -11
  56. data/lib/watir/generator/base/generator.rb +115 -115
  57. data/lib/watir/generator/base/idl_sorter.rb +47 -47
  58. data/lib/watir/generator/base/spec_extractor.rb +138 -138
  59. data/lib/watir/generator/base/util.rb +21 -21
  60. data/lib/watir/generator/base/visitor.rb +162 -162
  61. data/lib/watir/generator/html.rb +15 -15
  62. data/lib/watir/generator/html/generator.rb +36 -36
  63. data/lib/watir/generator/html/spec_extractor.rb +50 -50
  64. data/lib/watir/generator/html/visitor.rb +21 -21
  65. data/lib/watir/generator/svg.rb +7 -7
  66. data/lib/watir/generator/svg/generator.rb +38 -38
  67. data/lib/watir/generator/svg/spec_extractor.rb +53 -53
  68. data/lib/watir/generator/svg/visitor.rb +21 -21
  69. data/lib/watir/has_window.rb +68 -68
  70. data/lib/watir/js_execution.rb +143 -143
  71. data/lib/watir/js_snippets.rb +16 -16
  72. data/lib/watir/js_snippets/backgroundColor.js +7 -7
  73. data/lib/watir/js_snippets/fireEvent.js +31 -31
  74. data/lib/watir/js_snippets/focus.js +3 -3
  75. data/lib/watir/js_snippets/getInnerHtml.js +19 -19
  76. data/lib/watir/js_snippets/getInnerText.js +19 -19
  77. data/lib/watir/js_snippets/getOuterHtml.js +20 -20
  78. data/lib/watir/js_snippets/getTextContent.js +19 -19
  79. data/lib/watir/js_snippets/isImageLoaded.js +3 -3
  80. data/lib/watir/js_snippets/selectOptionsLabel.js +10 -10
  81. data/lib/watir/js_snippets/selectOptionsText.js +10 -10
  82. data/lib/watir/js_snippets/selectOptionsValue.js +10 -10
  83. data/lib/watir/js_snippets/selectText.js +64 -64
  84. data/lib/watir/js_snippets/selectedOptions.js +11 -11
  85. data/lib/watir/js_snippets/setValue.js +3 -3
  86. data/lib/watir/legacy_wait.rb +126 -126
  87. data/lib/watir/locators.rb +60 -60
  88. data/lib/watir/locators/button/locator.rb +31 -31
  89. data/lib/watir/locators/button/selector_builder.rb +30 -30
  90. data/lib/watir/locators/button/selector_builder/xpath.rb +29 -29
  91. data/lib/watir/locators/button/validator.rb +15 -15
  92. data/lib/watir/locators/cell/locator.rb +15 -15
  93. data/lib/watir/locators/cell/selector_builder.rb +24 -24
  94. data/lib/watir/locators/element/locator.rb +1 -0
  95. data/lib/watir/locators/element/selector_builder.rb +150 -150
  96. data/lib/watir/locators/element/selector_builder/xpath.rb +119 -119
  97. data/lib/watir/locators/element/validator.rb +18 -18
  98. data/lib/watir/locators/row/locator.rb +15 -15
  99. data/lib/watir/locators/row/selector_builder.rb +29 -29
  100. data/lib/watir/locators/text_area/locator.rb +13 -13
  101. data/lib/watir/locators/text_area/selector_builder.rb +22 -22
  102. data/lib/watir/locators/text_field/locator.rb +30 -30
  103. data/lib/watir/locators/text_field/selector_builder.rb +31 -31
  104. data/lib/watir/locators/text_field/selector_builder/xpath.rb +17 -17
  105. data/lib/watir/locators/text_field/validator.rb +12 -12
  106. data/lib/watir/logger.rb +109 -109
  107. data/lib/watir/radio_set.rb +231 -231
  108. data/lib/watir/row_container.rb +36 -36
  109. data/lib/watir/screenshot.rb +50 -50
  110. data/lib/watir/user_editable.rb +56 -56
  111. data/lib/watir/wait.rb +200 -200
  112. data/lib/watir/wait/timer.rb +52 -52
  113. data/lib/watir/window.rb +257 -257
  114. data/lib/watir/xpath_support.rb +20 -20
  115. data/lib/watirspec.rb +86 -86
  116. data/lib/watirspec/guards.rb +60 -60
  117. data/lib/watirspec/implementation.rb +51 -51
  118. data/lib/watirspec/rake_tasks.rb +115 -115
  119. data/lib/watirspec/remote_server.rb +38 -38
  120. data/lib/watirspec/runner.rb +53 -53
  121. data/lib/watirspec/server.rb +99 -99
  122. data/lib/watirspec/server/app.rb +76 -76
  123. data/spec/browser_spec.rb +278 -278
  124. data/spec/click_spec.rb +19 -19
  125. data/spec/container_spec.rb +34 -34
  126. data/spec/element_locator_spec.rb +517 -517
  127. data/spec/element_spec.rb +158 -158
  128. data/spec/implementation_spec.rb +24 -24
  129. data/spec/input_spec.rb +14 -14
  130. data/spec/locator_spec_helper.rb +55 -55
  131. data/spec/logger_spec.rb +46 -46
  132. data/spec/spec_helper.rb +22 -22
  133. data/spec/special_chars_spec.rb +13 -13
  134. data/spec/watirspec/adjacent_spec.rb +227 -227
  135. data/spec/watirspec/after_hooks_spec.rb +182 -182
  136. data/spec/watirspec/alert_spec.rb +108 -108
  137. data/spec/watirspec/attributes_spec.rb +16 -16
  138. data/spec/watirspec/browser_spec.rb +281 -281
  139. data/spec/watirspec/cookies_spec.rb +154 -154
  140. data/spec/watirspec/drag_and_drop_spec.rb +49 -49
  141. data/spec/watirspec/element_hidden_spec.rb +75 -75
  142. data/spec/watirspec/elements/area_spec.rb +72 -72
  143. data/spec/watirspec/elements/areas_spec.rb +42 -42
  144. data/spec/watirspec/elements/button_spec.rb +277 -277
  145. data/spec/watirspec/elements/buttons_spec.rb +55 -55
  146. data/spec/watirspec/elements/checkbox_spec.rb +275 -275
  147. data/spec/watirspec/elements/checkboxes_spec.rb +44 -44
  148. data/spec/watirspec/elements/collections_spec.rb +52 -52
  149. data/spec/watirspec/elements/dd_spec.rb +124 -124
  150. data/spec/watirspec/elements/dds_spec.rb +42 -42
  151. data/spec/watirspec/elements/del_spec.rb +126 -126
  152. data/spec/watirspec/elements/dels_spec.rb +40 -40
  153. data/spec/watirspec/elements/div_spec.rb +245 -245
  154. data/spec/watirspec/elements/divs_spec.rb +42 -42
  155. data/spec/watirspec/elements/dl_spec.rb +142 -142
  156. data/spec/watirspec/elements/dls_spec.rb +43 -43
  157. data/spec/watirspec/elements/dt_spec.rb +122 -122
  158. data/spec/watirspec/elements/dts_spec.rb +42 -42
  159. data/spec/watirspec/elements/element_spec.rb +483 -483
  160. data/spec/watirspec/elements/elements_spec.rb +47 -47
  161. data/spec/watirspec/elements/em_spec.rb +96 -96
  162. data/spec/watirspec/elements/ems_spec.rb +43 -43
  163. data/spec/watirspec/elements/filefield_spec.rb +170 -170
  164. data/spec/watirspec/elements/filefields_spec.rb +43 -43
  165. data/spec/watirspec/elements/font_spec.rb +29 -29
  166. data/spec/watirspec/elements/form_spec.rb +66 -66
  167. data/spec/watirspec/elements/forms_spec.rb +46 -46
  168. data/spec/watirspec/elements/frame_spec.rb +123 -123
  169. data/spec/watirspec/elements/frames_spec.rb +41 -41
  170. data/spec/watirspec/elements/hidden_spec.rb +104 -104
  171. data/spec/watirspec/elements/hiddens_spec.rb +43 -43
  172. data/spec/watirspec/elements/hn_spec.rb +92 -92
  173. data/spec/watirspec/elements/hns_spec.rb +38 -38
  174. data/spec/watirspec/elements/iframe_spec.rb +10 -0
  175. data/spec/watirspec/elements/iframes_spec.rb +47 -47
  176. data/spec/watirspec/elements/image_spec.rb +158 -158
  177. data/spec/watirspec/elements/images_spec.rb +40 -40
  178. data/spec/watirspec/elements/ins_spec.rb +127 -127
  179. data/spec/watirspec/elements/inses_spec.rb +40 -40
  180. data/spec/watirspec/elements/label_spec.rb +75 -75
  181. data/spec/watirspec/elements/labels_spec.rb +40 -40
  182. data/spec/watirspec/elements/li_spec.rb +111 -111
  183. data/spec/watirspec/elements/link_spec.rb +171 -171
  184. data/spec/watirspec/elements/links_spec.rb +44 -44
  185. data/spec/watirspec/elements/lis_spec.rb +42 -42
  186. data/spec/watirspec/elements/list_spec.rb +32 -32
  187. data/spec/watirspec/elements/map_spec.rb +75 -75
  188. data/spec/watirspec/elements/maps_spec.rb +41 -41
  189. data/spec/watirspec/elements/meta_spec.rb +23 -23
  190. data/spec/watirspec/elements/metas_spec.rb +40 -40
  191. data/spec/watirspec/elements/ol_spec.rb +87 -87
  192. data/spec/watirspec/elements/ols_spec.rb +40 -40
  193. data/spec/watirspec/elements/option_spec.rb +121 -121
  194. data/spec/watirspec/elements/p_spec.rb +111 -111
  195. data/spec/watirspec/elements/pre_spec.rb +111 -111
  196. data/spec/watirspec/elements/pres_spec.rb +40 -40
  197. data/spec/watirspec/elements/ps_spec.rb +40 -40
  198. data/spec/watirspec/elements/radio_spec.rb +273 -273
  199. data/spec/watirspec/elements/radios_spec.rb +43 -43
  200. data/spec/watirspec/elements/select_list_spec.rb +553 -553
  201. data/spec/watirspec/elements/select_lists_spec.rb +46 -46
  202. data/spec/watirspec/elements/span_spec.rb +128 -128
  203. data/spec/watirspec/elements/spans_spec.rb +40 -40
  204. data/spec/watirspec/elements/strong_spec.rb +88 -88
  205. data/spec/watirspec/elements/strongs_spec.rb +43 -43
  206. data/spec/watirspec/elements/table_nesting_spec.rb +51 -51
  207. data/spec/watirspec/elements/table_spec.rb +156 -156
  208. data/spec/watirspec/elements/tables_spec.rb +42 -42
  209. data/spec/watirspec/elements/tbody_spec.rb +93 -93
  210. data/spec/watirspec/elements/tbodys_spec.rb +62 -62
  211. data/spec/watirspec/elements/td_spec.rb +93 -93
  212. data/spec/watirspec/elements/tds_spec.rb +53 -53
  213. data/spec/watirspec/elements/text_field_spec.rb +360 -360
  214. data/spec/watirspec/elements/text_fields_spec.rb +44 -44
  215. data/spec/watirspec/elements/textarea_spec.rb +26 -26
  216. data/spec/watirspec/elements/textareas_spec.rb +24 -24
  217. data/spec/watirspec/elements/tfoot_spec.rb +86 -86
  218. data/spec/watirspec/elements/tfoots_spec.rb +68 -68
  219. data/spec/watirspec/elements/thead_spec.rb +86 -86
  220. data/spec/watirspec/elements/theads_spec.rb +68 -68
  221. data/spec/watirspec/elements/tr_spec.rb +78 -78
  222. data/spec/watirspec/elements/trs_spec.rb +61 -61
  223. data/spec/watirspec/elements/ul_spec.rb +76 -76
  224. data/spec/watirspec/elements/uls_spec.rb +39 -39
  225. data/spec/watirspec/html/alerts.html +12 -12
  226. data/spec/watirspec/html/aria_attributes.html +9 -9
  227. data/spec/watirspec/html/class_locator.html +8 -8
  228. data/spec/watirspec/html/clicks.html +19 -19
  229. data/spec/watirspec/html/closeable.html +12 -12
  230. data/spec/watirspec/html/collections.html +14 -14
  231. data/spec/watirspec/html/css/jquery-ui-1.8.17.custom.css +286 -286
  232. data/spec/watirspec/html/data_attributes.html +9 -9
  233. data/spec/watirspec/html/definition_lists.html +47 -47
  234. data/spec/watirspec/html/drag_and_drop.html +106 -106
  235. data/spec/watirspec/html/font.html +10 -10
  236. data/spec/watirspec/html/forms_with_input_elements.html +174 -174
  237. data/spec/watirspec/html/frame_1.html +22 -22
  238. data/spec/watirspec/html/frame_2.html +15 -15
  239. data/spec/watirspec/html/frames.html +10 -10
  240. data/spec/watirspec/html/hover.html +11 -11
  241. data/spec/watirspec/html/iframe_1.html +22 -22
  242. data/spec/watirspec/html/iframes.html +12 -12
  243. data/spec/watirspec/html/images.html +27 -27
  244. data/spec/watirspec/html/inner_outer.html +4 -4
  245. data/spec/watirspec/html/javascript/angular.min.js +331 -331
  246. data/spec/watirspec/html/javascript/helpers.js +16 -16
  247. data/spec/watirspec/html/javascript/jquery-1.7.1.min.js +3 -3
  248. data/spec/watirspec/html/javascript/jquery-ui-1.8.17.custom.min.js +67 -67
  249. data/spec/watirspec/html/keylogger.html +14 -14
  250. data/spec/watirspec/html/modal_dialog.html +9 -9
  251. data/spec/watirspec/html/multiple_ids.html +14 -14
  252. data/spec/watirspec/html/nested_elements.html +33 -33
  253. data/spec/watirspec/html/nested_frame_2.html +9 -9
  254. data/spec/watirspec/html/nested_frame_3.html +14 -14
  255. data/spec/watirspec/html/nested_frames.html +10 -10
  256. data/spec/watirspec/html/nested_iframe_2.html +12 -12
  257. data/spec/watirspec/html/nested_iframes.html +13 -13
  258. data/spec/watirspec/html/nested_tables.html +202 -202
  259. data/spec/watirspec/html/non_control_elements.html +140 -140
  260. data/spec/watirspec/html/removed_element.html +24 -24
  261. data/spec/watirspec/html/right_click.html +10 -10
  262. data/spec/watirspec/html/special_chars.html +11 -11
  263. data/spec/watirspec/html/tables.html +120 -120
  264. data/spec/watirspec/html/timeout_window_location.html +19 -19
  265. data/spec/watirspec/html/uneven_table.html +20 -20
  266. data/spec/watirspec/html/wait.html +84 -84
  267. data/spec/watirspec/html/window_switching.html +11 -11
  268. data/spec/watirspec/radio_set_spec.rb +336 -336
  269. data/spec/watirspec/relaxed_locate_spec.rb +99 -99
  270. data/spec/watirspec/screenshot_spec.rb +29 -29
  271. data/spec/watirspec/support/raise_exception_matchers.rb +36 -36
  272. data/spec/watirspec/wait_spec.rb +381 -381
  273. data/spec/watirspec/window_switching_spec.rb +415 -415
  274. data/spec/watirspec_helper.rb +161 -161
  275. data/support/appveyor.cmd +9 -9
  276. data/support/doctest_helper.rb +101 -101
  277. data/support/travis.sh +11 -11
  278. data/support/version_differ.rb +59 -59
  279. data/watir.gemspec +1 -1
  280. metadata +4 -170
@@ -1,203 +1,203 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
- <title>Nested tables from WebKit/LayoutTests/fast/dom</title>
6
- </head>
7
- <body>
8
- <script>
9
- // seems like the HTML parser will fix some of the problematic nesting here,
10
- // so we build this in JS (like the original test).
11
- function buildRowsTest()
12
- {
13
- var rowsTest = document.createElement("div");
14
- rowsTest.id = "table-rows-test";
15
-
16
- function createNoBodyRowNesting(tag, count, idx)
17
- {
18
- var table = document.createElement("table");
19
- var container = document.createElement(tag);
20
- var row = document.createElement("tr");
21
-
22
- table.appendChild(container);
23
- container.appendChild(row);
24
- rowsTest.appendChild(table);
25
-
26
- table.setAttribute("data-row-count", count)
27
- table.setAttribute("data-browser-count", table.rows.length);
28
- table.setAttribute("id", "tbl" + idx);
29
- }
30
-
31
- function createRowNesting(tag, count, idx)
32
- {
33
- var table = document.createElement("table");
34
- var body = document.createElement("tbody");
35
- var container = document.createElement(tag);
36
- var row = document.createElement("tr");
37
-
38
- table.appendChild(body);
39
- body.appendChild(container);
40
- container.appendChild(row);
41
- rowsTest.appendChild(table)
42
-
43
- table.setAttribute("data-row-count", count)
44
- table.setAttribute("data-browser-count", table.rows.length);
45
- table.setAttribute("id", "tbl" + idx);
46
- }
47
-
48
- var sectionTags = [
49
- "tbody",
50
- "tfoot",
51
- "thead",
52
- ];
53
-
54
- var otherTags = [
55
- "col",
56
- "colgroup",
57
- "div",
58
- "form",
59
- "script",
60
- "table",
61
- "td",
62
- "th",
63
- ];
64
-
65
- var index = 0;
66
-
67
- for (i = 0; i < otherTags.length; ++i)
68
- createRowNesting(otherTags[i], 0, index++);
69
-
70
- for (i = 0; i < sectionTags.length; ++i)
71
- createRowNesting(sectionTags[i], 0, index++)
72
-
73
- createRowNesting("tr", 1, index++)
74
-
75
- for (i = 0; i < otherTags.length; ++i)
76
- createNoBodyRowNesting(otherTags[i], 0, index++)
77
-
78
- for (i = 0; i < sectionTags.length; ++i)
79
- createNoBodyRowNesting(sectionTags[i], 1, index++)
80
-
81
- createNoBodyRowNesting("tr", 1, index++)
82
-
83
- document.body.appendChild(rowsTest);
84
- };
85
-
86
- function buildCellsTest() {
87
- var cellsTest = document.createElement("div");
88
- cellsTest.id = "row-cells-test";
89
-
90
- function createCellNesting(tag, count, idx)
91
- {
92
- var row = document.createElement("tr");
93
- var container = document.createElement(tag);
94
- var cell = document.createElement("td");
95
- row.appendChild(container);
96
- container.appendChild(cell);
97
-
98
- row.setAttribute("data-cell-count", count)
99
- row.setAttribute("data-browser-count", row.cells.length);
100
- row.setAttribute("id", "row" + idx);
101
-
102
- cellsTest.appendChild(row);
103
- }
104
-
105
- function createHeaderCellNesting(tag, count, idx)
106
- {
107
- var row = document.createElement("tr");
108
- var container = document.createElement(tag);
109
- var cell = document.createElement("th");
110
- row.appendChild(container);
111
- container.appendChild(cell);
112
-
113
- row.setAttribute("data-cell-count", count)
114
- row.setAttribute("data-browser-count", row.cells.length);
115
- row.setAttribute("id", "row" + idx);
116
-
117
- cellsTest.appendChild(row);
118
- }
119
-
120
-
121
- var tags = [
122
- "col",
123
- "colgroup",
124
- "div",
125
- "form",
126
- "script",
127
- "table",
128
- "tbody",
129
- "tfoot",
130
- "thead",
131
- "tr",
132
- ];
133
-
134
- var index = 0;
135
-
136
- for (i = 0; i < tags.length; ++i)
137
- createCellNesting(tags[i], 0, index++);
138
-
139
- createCellNesting("td", 1, index++);
140
- createCellNesting("th", 1, index++);
141
-
142
- for (i = 0; i < tags.length; ++i)
143
- createHeaderCellNesting(tags[i], 0, index++);
144
-
145
- createHeaderCellNesting("td", 1, index++)
146
- createHeaderCellNesting("th", 1, index++)
147
-
148
- document.body.appendChild(cellsTest);
149
- };
150
-
151
- function buildBodiesTest() {
152
- var bodiesTest = document.createElement("table");
153
- bodiesTest.id = "tbody-rows-test";
154
-
155
- function createRowNesting(tag, count, idx)
156
- {
157
- var body = document.createElement("tbody");
158
- var container = document.createElement(tag);
159
- var row = document.createElement("tr");
160
- body.appendChild(container);
161
- container.appendChild(row);
162
- bodiesTest.appendChild(body);
163
-
164
- body.setAttribute("data-rows-count", count)
165
- body.setAttribute("data-browser-count", body.rows.length);
166
- body.setAttribute("id", "body" + idx);
167
- }
168
-
169
- var sectionTags = [
170
- "tbody",
171
- "tfoot",
172
- "thead",
173
- ];
174
-
175
- var otherTags = [
176
- "col",
177
- "colgroup",
178
- "div",
179
- "form",
180
- "script",
181
- "table",
182
- "td",
183
- "th",
184
- ];
185
-
186
- var index = 0;
187
- for (i = 0; i < otherTags.length; ++i)
188
- createRowNesting(otherTags[i], 0, index++);
189
-
190
- for (i = 0; i < sectionTags.length; ++i)
191
- createRowNesting(sectionTags[i], 0, index++);
192
-
193
- createRowNesting("tr", 1, index++);
194
-
195
- document.body.appendChild(bodiesTest);
196
- };
197
-
198
- buildRowsTest();
199
- buildCellsTest();
200
- buildBodiesTest();
201
- </script>
202
- <body>
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>Nested tables from WebKit/LayoutTests/fast/dom</title>
6
+ </head>
7
+ <body>
8
+ <script>
9
+ // seems like the HTML parser will fix some of the problematic nesting here,
10
+ // so we build this in JS (like the original test).
11
+ function buildRowsTest()
12
+ {
13
+ var rowsTest = document.createElement("div");
14
+ rowsTest.id = "table-rows-test";
15
+
16
+ function createNoBodyRowNesting(tag, count, idx)
17
+ {
18
+ var table = document.createElement("table");
19
+ var container = document.createElement(tag);
20
+ var row = document.createElement("tr");
21
+
22
+ table.appendChild(container);
23
+ container.appendChild(row);
24
+ rowsTest.appendChild(table);
25
+
26
+ table.setAttribute("data-row-count", count)
27
+ table.setAttribute("data-browser-count", table.rows.length);
28
+ table.setAttribute("id", "tbl" + idx);
29
+ }
30
+
31
+ function createRowNesting(tag, count, idx)
32
+ {
33
+ var table = document.createElement("table");
34
+ var body = document.createElement("tbody");
35
+ var container = document.createElement(tag);
36
+ var row = document.createElement("tr");
37
+
38
+ table.appendChild(body);
39
+ body.appendChild(container);
40
+ container.appendChild(row);
41
+ rowsTest.appendChild(table)
42
+
43
+ table.setAttribute("data-row-count", count)
44
+ table.setAttribute("data-browser-count", table.rows.length);
45
+ table.setAttribute("id", "tbl" + idx);
46
+ }
47
+
48
+ var sectionTags = [
49
+ "tbody",
50
+ "tfoot",
51
+ "thead",
52
+ ];
53
+
54
+ var otherTags = [
55
+ "col",
56
+ "colgroup",
57
+ "div",
58
+ "form",
59
+ "script",
60
+ "table",
61
+ "td",
62
+ "th",
63
+ ];
64
+
65
+ var index = 0;
66
+
67
+ for (i = 0; i < otherTags.length; ++i)
68
+ createRowNesting(otherTags[i], 0, index++);
69
+
70
+ for (i = 0; i < sectionTags.length; ++i)
71
+ createRowNesting(sectionTags[i], 0, index++)
72
+
73
+ createRowNesting("tr", 1, index++)
74
+
75
+ for (i = 0; i < otherTags.length; ++i)
76
+ createNoBodyRowNesting(otherTags[i], 0, index++)
77
+
78
+ for (i = 0; i < sectionTags.length; ++i)
79
+ createNoBodyRowNesting(sectionTags[i], 1, index++)
80
+
81
+ createNoBodyRowNesting("tr", 1, index++)
82
+
83
+ document.body.appendChild(rowsTest);
84
+ };
85
+
86
+ function buildCellsTest() {
87
+ var cellsTest = document.createElement("div");
88
+ cellsTest.id = "row-cells-test";
89
+
90
+ function createCellNesting(tag, count, idx)
91
+ {
92
+ var row = document.createElement("tr");
93
+ var container = document.createElement(tag);
94
+ var cell = document.createElement("td");
95
+ row.appendChild(container);
96
+ container.appendChild(cell);
97
+
98
+ row.setAttribute("data-cell-count", count)
99
+ row.setAttribute("data-browser-count", row.cells.length);
100
+ row.setAttribute("id", "row" + idx);
101
+
102
+ cellsTest.appendChild(row);
103
+ }
104
+
105
+ function createHeaderCellNesting(tag, count, idx)
106
+ {
107
+ var row = document.createElement("tr");
108
+ var container = document.createElement(tag);
109
+ var cell = document.createElement("th");
110
+ row.appendChild(container);
111
+ container.appendChild(cell);
112
+
113
+ row.setAttribute("data-cell-count", count)
114
+ row.setAttribute("data-browser-count", row.cells.length);
115
+ row.setAttribute("id", "row" + idx);
116
+
117
+ cellsTest.appendChild(row);
118
+ }
119
+
120
+
121
+ var tags = [
122
+ "col",
123
+ "colgroup",
124
+ "div",
125
+ "form",
126
+ "script",
127
+ "table",
128
+ "tbody",
129
+ "tfoot",
130
+ "thead",
131
+ "tr",
132
+ ];
133
+
134
+ var index = 0;
135
+
136
+ for (i = 0; i < tags.length; ++i)
137
+ createCellNesting(tags[i], 0, index++);
138
+
139
+ createCellNesting("td", 1, index++);
140
+ createCellNesting("th", 1, index++);
141
+
142
+ for (i = 0; i < tags.length; ++i)
143
+ createHeaderCellNesting(tags[i], 0, index++);
144
+
145
+ createHeaderCellNesting("td", 1, index++)
146
+ createHeaderCellNesting("th", 1, index++)
147
+
148
+ document.body.appendChild(cellsTest);
149
+ };
150
+
151
+ function buildBodiesTest() {
152
+ var bodiesTest = document.createElement("table");
153
+ bodiesTest.id = "tbody-rows-test";
154
+
155
+ function createRowNesting(tag, count, idx)
156
+ {
157
+ var body = document.createElement("tbody");
158
+ var container = document.createElement(tag);
159
+ var row = document.createElement("tr");
160
+ body.appendChild(container);
161
+ container.appendChild(row);
162
+ bodiesTest.appendChild(body);
163
+
164
+ body.setAttribute("data-rows-count", count)
165
+ body.setAttribute("data-browser-count", body.rows.length);
166
+ body.setAttribute("id", "body" + idx);
167
+ }
168
+
169
+ var sectionTags = [
170
+ "tbody",
171
+ "tfoot",
172
+ "thead",
173
+ ];
174
+
175
+ var otherTags = [
176
+ "col",
177
+ "colgroup",
178
+ "div",
179
+ "form",
180
+ "script",
181
+ "table",
182
+ "td",
183
+ "th",
184
+ ];
185
+
186
+ var index = 0;
187
+ for (i = 0; i < otherTags.length; ++i)
188
+ createRowNesting(otherTags[i], 0, index++);
189
+
190
+ for (i = 0; i < sectionTags.length; ++i)
191
+ createRowNesting(sectionTags[i], 0, index++);
192
+
193
+ createRowNesting("tr", 1, index++);
194
+
195
+ document.body.appendChild(bodiesTest);
196
+ };
197
+
198
+ buildRowsTest();
199
+ buildCellsTest();
200
+ buildBodiesTest();
201
+ </script>
202
+ <body>
203
203
  </html>
@@ -1,140 +1,140 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
- <head>
4
- <title>Non-control elements</title>
5
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
- <script src="javascript/helpers.js" type="text/javascript" charset="utf-8"></script>
7
- </head>
8
- <body>
9
- <div></div>
10
- <div id="outer_container">
11
- <div id="header" title="Header and primary navigation" class="profile">
12
- <h1 id="first_header" class="primary">Header 1</h1>
13
- <ul id="navbar" class="navigation">
14
- <li><a></a></li>
15
- <li><a id="link_2" title="link_title_2" href="non_control_elements.html" class="external">Link 2</a></li>
16
- <li><a id="link_3" title="link_title_3" href="forms_with_input_elements.html" name="bad_attribute" value="bad_attribute" class="external">Link 3</a></li>
17
- <li></li>
18
- <li id="non_link_1" class="nonlink" title="This is not a link!">Non-link 1</li>
19
- <li id="non_link_2">Non-link 2</li>
20
- <li>Non-link 3</li>
21
- </ul>
22
- </div>
23
- <div id="promo" name="invalid_attribute" value="invalid_attribute">
24
- <h2 id="promo_header">Promo</h2>
25
- <span id="lead" class="lead" title="Lorem ipsum">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur eu pede. Ut justo. Praesent feugiat, elit in feugiat iaculis, sem risus rutrum justo, eget fermentum dolor arcu non nunc.</span>
26
- <span name="invalid_attribute" value="invalid_attribute">Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</span>
27
- <span>Suspendisse at ipsum a turpis viverra venenatis. Praesent ut nibh. Nullam eu odio. Donec tempor, elit ut lacinia porttitor, augue neque vehicula diam, in elementum ligula nisi a tellus. Aliquam vestibulum ultricies tortor. </span>
28
- <span><strong id="descartes" class="descartes">Dubito, <em class="important-class" id="important-id" title="ergo cogito">ergo cogito</em>, ergo sum.</strong></span>
29
- <span></span>
30
- <h3>Chemical compounds</h3>
31
- <ul>
32
- <li>Abietic acid, <strong>C20H30O2</strong></li>
33
- <li>Acenaphthene, C12H10</li>
34
- <li>Acenaphthoquinone, C12H6O2</li>
35
- <li>Acenaphthylene, C12H8</li>
36
- <li>Acetaldehyde (ethanal), CH3CHO</li>
37
- </ul>
38
- <ol id="favorite_compounds" class="chemistry">
39
- <li>Propanol, CH3CH2CH2OH</li>
40
- <li>Ethane, C2H6</li>
41
- <li>Hexene, C6H12</li>
42
- <li>Acetone, CH3COCH3</li>
43
- <li>Ethanol, CH3CH2OH</li>
44
- </ol>
45
- <ol>
46
- <li></li>
47
- </ol>
48
- </div>
49
- <div id="content">
50
- <h2>Content</h2>
51
- <p id="lead" class="lead" title="Lorem ipsum">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur eu pede. Ut justo. Praesent feugiat, elit in feugiat iaculis, sem risus rutrum justo, eget fermentum dolor arcu non nunc.</p>
52
- <p name="invalid_attribute" value="invalid_attribute">Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
53
- <p>Suspendisse at ipsum a turpis viverra venenatis. Praesent ut nibh. Nullam eu odio. Donec tempor, elit ut lacinia porttitor, augue neque vehicula diam, in elementum ligula nisi a tellus. Aliquam vestibulum ultricies tortor. </p>
54
- <p>Dubito, ergo cogito, ergo sum.</p>
55
- <p></p>
56
- <pre></pre>
57
- <div id="best_language" onclick="this.innerHTML = 'Ruby!'" style="color: red; text-decoration: underline; cursor: pointer;">What's the best programming language?</div>
58
- <h2>Ruby RSpec example</h2>
59
- <pre class="ruby" id="rspec">
60
- browser.pre(id: "rspec").should exist
61
- </pre>
62
- <h2>PHP Hello World</h2>
63
- <pre class="php">
64
- &lt;?php
65
- echo "Hello, World!\n";
66
- ?&gt;
67
- </pre>
68
- <h2>Ruby Hello World</h2>
69
- <pre class="ruby">
70
- puts "Hello, World!"
71
- </pre>
72
- <h2>C++ Hello World</h2>
73
- <pre class="c-plus-plus">
74
- main() {
75
- cout << "Hello World!\n";
76
- return 0;
77
- }
78
- </pre>
79
- <h2>Haskell</h2>
80
- <pre class="haskell">main = putStrLn "Hello World"</pre>
81
- <h2>Brainfuck</h2>
82
- <pre class="brainfuck" title="The brainfuck language is an esoteric programming language noted for its extreme minimalism">
83
- ++++++++++
84
- [>+++++++>++++++++++>+++>+<<<<-] The initial loop to set up useful values in the array
85
- >++. Print 'H'
86
- >+. Print 'e'
87
- +++++++. Print 'l'
88
- . Print 'l'
89
- +++. Print 'o'
90
- >++. Print ' '
91
- <<+++++++++++++++. Print 'W'
92
- >. Print 'o'
93
- +++. Print 'r'
94
- ------. Print 'l'
95
- --------. Print 'd'
96
- >+. Print '!'
97
- >. Print newline
98
- </pre>
99
- </div>
100
- <div id="html_test" class=some_class title="This is a title" ondblclick="WatirSpec.addMessage('double clicked')">
101
- <h1 id="header1">Header 1</h1>
102
- <h2 id="header2">Header 2</h2>
103
- <h3 id="header3">Header 3</h3>
104
- <h4 id="header4">Header 4</h4>
105
- <h5 id="header5">Header 5</h5>
106
- <h6 id="header6">Header 6</h6>
107
- <h6 id="empty_header"></h6>
108
- </div>
109
- <div id="footer" title="Closing remarks" class="profile">
110
- <span class="footer" onclick="this.innerHTML = 'This is a footer with text set by Javascript.'">This is a footer.</span>
111
- </div>
112
- <a href="strip_space ">Space should be stripped from href</a>
113
- <div id="shown"><div id="hidden" style="display: none;">Not shown</div><div>Not hidden</div></div>
114
- </div>
115
-
116
- <div id="messages"></div>
117
-
118
- <div id="ins_tag_test">
119
- <ins id="lead" class="lead" title='Lorem ipsum'>This is an inserted text tag 1</ins>
120
- <ins value="invalid_attribute">This is an inserted text tag 2</ins>
121
- <ins>This is an inserted text tag 3</ins>
122
- <ins></ins>
123
- <ins class="footer" onclick="this.innerHTML = 'This is an ins with text set by Javascript.'">This is an ins.</ins>
124
- </div>
125
-
126
- <div id="del_tag_test">
127
- <del id="lead" class="lead" title='Lorem ipsum'>This is a deleted text tag 1</del>
128
- <del value="invalid_attribute">This is a deleted text tag 2</del>
129
- <del>This is a deleted text tag 3</del>
130
- <del></del>
131
- <del class="footer" onclick="this.innerHTML = 'This is a del with text set by Javascript.'">This is a del.</del>
132
- </div>
133
- <div custom-attribute=custom>Custom</div>
134
- <div id="visible_text">
135
- <a id="all_visible_text">all visible</a>
136
- <a id="some_visible_text">some visible<span style="display:none;"> some hidden</span></a>
137
- <a id="no_visible_text" style="display:none;">none visible</a>
138
- </div>
139
- </body>
140
- </html>
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <title>Non-control elements</title>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <script src="javascript/helpers.js" type="text/javascript" charset="utf-8"></script>
7
+ </head>
8
+ <body>
9
+ <div></div>
10
+ <div id="outer_container">
11
+ <div id="header" title="Header and primary navigation" class="profile">
12
+ <h1 id="first_header" class="primary">Header 1</h1>
13
+ <ul id="navbar" class="navigation">
14
+ <li><a></a></li>
15
+ <li><a id="link_2" title="link_title_2" href="non_control_elements.html" class="external">Link 2</a></li>
16
+ <li><a id="link_3" title="link_title_3" href="forms_with_input_elements.html" name="bad_attribute" value="bad_attribute" class="external">Link 3</a></li>
17
+ <li></li>
18
+ <li id="non_link_1" class="nonlink" title="This is not a link!">Non-link 1</li>
19
+ <li id="non_link_2">Non-link 2</li>
20
+ <li>Non-link 3</li>
21
+ </ul>
22
+ </div>
23
+ <div id="promo" name="invalid_attribute" value="invalid_attribute">
24
+ <h2 id="promo_header">Promo</h2>
25
+ <span id="lead" class="lead" title="Lorem ipsum">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur eu pede. Ut justo. Praesent feugiat, elit in feugiat iaculis, sem risus rutrum justo, eget fermentum dolor arcu non nunc.</span>
26
+ <span name="invalid_attribute" value="invalid_attribute">Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</span>
27
+ <span>Suspendisse at ipsum a turpis viverra venenatis. Praesent ut nibh. Nullam eu odio. Donec tempor, elit ut lacinia porttitor, augue neque vehicula diam, in elementum ligula nisi a tellus. Aliquam vestibulum ultricies tortor. </span>
28
+ <span><strong id="descartes" class="descartes">Dubito, <em class="important-class" id="important-id" title="ergo cogito">ergo cogito</em>, ergo sum.</strong></span>
29
+ <span></span>
30
+ <h3>Chemical compounds</h3>
31
+ <ul>
32
+ <li>Abietic acid, <strong>C20H30O2</strong></li>
33
+ <li>Acenaphthene, C12H10</li>
34
+ <li>Acenaphthoquinone, C12H6O2</li>
35
+ <li>Acenaphthylene, C12H8</li>
36
+ <li>Acetaldehyde (ethanal), CH3CHO</li>
37
+ </ul>
38
+ <ol id="favorite_compounds" class="chemistry">
39
+ <li>Propanol, CH3CH2CH2OH</li>
40
+ <li>Ethane, C2H6</li>
41
+ <li>Hexene, C6H12</li>
42
+ <li>Acetone, CH3COCH3</li>
43
+ <li>Ethanol, CH3CH2OH</li>
44
+ </ol>
45
+ <ol>
46
+ <li></li>
47
+ </ol>
48
+ </div>
49
+ <div id="content">
50
+ <h2>Content</h2>
51
+ <p id="lead" class="lead" title="Lorem ipsum">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur eu pede. Ut justo. Praesent feugiat, elit in feugiat iaculis, sem risus rutrum justo, eget fermentum dolor arcu non nunc.</p>
52
+ <p name="invalid_attribute" value="invalid_attribute">Sed pretium metus et quam. Nullam odio dolor, vestibulum non, tempor ut, vehicula sed, sapien. Vestibulum placerat ligula at quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
53
+ <p>Suspendisse at ipsum a turpis viverra venenatis. Praesent ut nibh. Nullam eu odio. Donec tempor, elit ut lacinia porttitor, augue neque vehicula diam, in elementum ligula nisi a tellus. Aliquam vestibulum ultricies tortor. </p>
54
+ <p>Dubito, ergo cogito, ergo sum.</p>
55
+ <p></p>
56
+ <pre></pre>
57
+ <div id="best_language" onclick="this.innerHTML = 'Ruby!'" style="color: red; text-decoration: underline; cursor: pointer;">What's the best programming language?</div>
58
+ <h2>Ruby RSpec example</h2>
59
+ <pre class="ruby" id="rspec">
60
+ browser.pre(id: "rspec").should exist
61
+ </pre>
62
+ <h2>PHP Hello World</h2>
63
+ <pre class="php">
64
+ &lt;?php
65
+ echo "Hello, World!\n";
66
+ ?&gt;
67
+ </pre>
68
+ <h2>Ruby Hello World</h2>
69
+ <pre class="ruby">
70
+ puts "Hello, World!"
71
+ </pre>
72
+ <h2>C++ Hello World</h2>
73
+ <pre class="c-plus-plus">
74
+ main() {
75
+ cout << "Hello World!\n";
76
+ return 0;
77
+ }
78
+ </pre>
79
+ <h2>Haskell</h2>
80
+ <pre class="haskell">main = putStrLn "Hello World"</pre>
81
+ <h2>Brainfuck</h2>
82
+ <pre class="brainfuck" title="The brainfuck language is an esoteric programming language noted for its extreme minimalism">
83
+ ++++++++++
84
+ [>+++++++>++++++++++>+++>+<<<<-] The initial loop to set up useful values in the array
85
+ >++. Print 'H'
86
+ >+. Print 'e'
87
+ +++++++. Print 'l'
88
+ . Print 'l'
89
+ +++. Print 'o'
90
+ >++. Print ' '
91
+ <<+++++++++++++++. Print 'W'
92
+ >. Print 'o'
93
+ +++. Print 'r'
94
+ ------. Print 'l'
95
+ --------. Print 'd'
96
+ >+. Print '!'
97
+ >. Print newline
98
+ </pre>
99
+ </div>
100
+ <div id="html_test" class=some_class title="This is a title" ondblclick="WatirSpec.addMessage('double clicked')">
101
+ <h1 id="header1">Header 1</h1>
102
+ <h2 id="header2">Header 2</h2>
103
+ <h3 id="header3">Header 3</h3>
104
+ <h4 id="header4">Header 4</h4>
105
+ <h5 id="header5">Header 5</h5>
106
+ <h6 id="header6">Header 6</h6>
107
+ <h6 id="empty_header"></h6>
108
+ </div>
109
+ <div id="footer" title="Closing remarks" class="profile">
110
+ <span class="footer" onclick="this.innerHTML = 'This is a footer with text set by Javascript.'">This is a footer.</span>
111
+ </div>
112
+ <a href="strip_space ">Space should be stripped from href</a>
113
+ <div id="shown"><div id="hidden" style="display: none;">Not shown</div><div>Not hidden</div></div>
114
+ </div>
115
+
116
+ <div id="messages"></div>
117
+
118
+ <div id="ins_tag_test">
119
+ <ins id="lead" class="lead" title='Lorem ipsum'>This is an inserted text tag 1</ins>
120
+ <ins value="invalid_attribute">This is an inserted text tag 2</ins>
121
+ <ins>This is an inserted text tag 3</ins>
122
+ <ins></ins>
123
+ <ins class="footer" onclick="this.innerHTML = 'This is an ins with text set by Javascript.'">This is an ins.</ins>
124
+ </div>
125
+
126
+ <div id="del_tag_test">
127
+ <del id="lead" class="lead" title='Lorem ipsum'>This is a deleted text tag 1</del>
128
+ <del value="invalid_attribute">This is a deleted text tag 2</del>
129
+ <del>This is a deleted text tag 3</del>
130
+ <del></del>
131
+ <del class="footer" onclick="this.innerHTML = 'This is a del with text set by Javascript.'">This is a del.</del>
132
+ </div>
133
+ <div custom-attribute=custom>Custom</div>
134
+ <div id="visible_text">
135
+ <a id="all_visible_text">all visible</a>
136
+ <a id="some_visible_text">some visible<span style="display:none;"> some hidden</span></a>
137
+ <a id="no_visible_text" style="display:none;">none visible</a>
138
+ </div>
139
+ </body>
140
+ </html>