All Results

Test files: 723; Total subtests: 728

Test Files

  1. /2dcontext/compositing/2d.composite.canvas.copy.html
  2. /2dcontext/compositing/2d.composite.canvas.destination-atop.html
  3. /2dcontext/compositing/2d.composite.canvas.destination-in.html
  4. /2dcontext/compositing/2d.composite.canvas.destination-out.html
  5. /2dcontext/compositing/2d.composite.canvas.destination-over.html
  6. /2dcontext/compositing/2d.composite.canvas.lighter.html
  7. /2dcontext/compositing/2d.composite.canvas.source-atop.html
  8. /2dcontext/compositing/2d.composite.canvas.source-in.html
  9. /2dcontext/compositing/2d.composite.canvas.source-out.html
  10. /2dcontext/compositing/2d.composite.canvas.source-over.html
  11. /2dcontext/compositing/2d.composite.canvas.xor.html
  12. /2dcontext/compositing/2d.composite.clip.copy.html
  13. /2dcontext/compositing/2d.composite.clip.destination-atop.html
  14. /2dcontext/compositing/2d.composite.clip.destination-in.html
  15. /2dcontext/compositing/2d.composite.clip.destination-out.html
  16. /2dcontext/compositing/2d.composite.clip.destination-over.html
  17. /2dcontext/compositing/2d.composite.clip.lighter.html
  18. /2dcontext/compositing/2d.composite.clip.source-atop.html
  19. /2dcontext/compositing/2d.composite.clip.source-in.html
  20. /2dcontext/compositing/2d.composite.clip.source-out.html
  21. /2dcontext/compositing/2d.composite.clip.source-over.html
  22. /2dcontext/compositing/2d.composite.clip.xor.html
  23. /2dcontext/compositing/2d.composite.globalAlpha.canvas.html
  24. /2dcontext/compositing/2d.composite.globalAlpha.canvaspattern.html
  25. /2dcontext/compositing/2d.composite.globalAlpha.default.html
  26. /2dcontext/compositing/2d.composite.globalAlpha.fill.html
  27. /2dcontext/compositing/2d.composite.globalAlpha.image.html
  28. /2dcontext/compositing/2d.composite.globalAlpha.imagepattern.html
  29. /2dcontext/compositing/2d.composite.globalAlpha.invalid.html
  30. /2dcontext/compositing/2d.composite.globalAlpha.range.html
  31. /2dcontext/compositing/2d.composite.image.copy.html
  32. /2dcontext/compositing/2d.composite.image.destination-atop.html
  33. /2dcontext/compositing/2d.composite.image.destination-in.html
  34. /2dcontext/compositing/2d.composite.image.destination-out.html
  35. /2dcontext/compositing/2d.composite.image.destination-over.html
  36. /2dcontext/compositing/2d.composite.image.lighter.html
  37. /2dcontext/compositing/2d.composite.image.source-atop.html
  38. /2dcontext/compositing/2d.composite.image.source-in.html
  39. /2dcontext/compositing/2d.composite.image.source-out.html
  40. /2dcontext/compositing/2d.composite.image.source-over.html
  41. /2dcontext/compositing/2d.composite.image.xor.html
  42. /2dcontext/compositing/2d.composite.operation.casesensitive.html
  43. /2dcontext/compositing/2d.composite.operation.clear.html
  44. /2dcontext/compositing/2d.composite.operation.darker.html
  45. /2dcontext/compositing/2d.composite.operation.default.html
  46. /2dcontext/compositing/2d.composite.operation.get.html
  47. /2dcontext/compositing/2d.composite.operation.highlight.html
  48. /2dcontext/compositing/2d.composite.operation.nullsuffix.html
  49. /2dcontext/compositing/2d.composite.operation.over.html
  50. /2dcontext/compositing/2d.composite.operation.unrecognised.html
  51. /2dcontext/compositing/2d.composite.solid.copy.html
  52. /2dcontext/compositing/2d.composite.solid.destination-atop.html
  53. /2dcontext/compositing/2d.composite.solid.destination-in.html
  54. /2dcontext/compositing/2d.composite.solid.destination-out.html
  55. /2dcontext/compositing/2d.composite.solid.destination-over.html
  56. /2dcontext/compositing/2d.composite.solid.lighter.html
  57. /2dcontext/compositing/2d.composite.solid.source-atop.html
  58. /2dcontext/compositing/2d.composite.solid.source-in.html
  59. /2dcontext/compositing/2d.composite.solid.source-out.html
  60. /2dcontext/compositing/2d.composite.solid.source-over.html
  61. /2dcontext/compositing/2d.composite.solid.xor.html
  62. /2dcontext/compositing/2d.composite.transparent.copy.html
  63. /2dcontext/compositing/2d.composite.transparent.destination-atop.html
  64. /2dcontext/compositing/2d.composite.transparent.destination-in.html
  65. /2dcontext/compositing/2d.composite.transparent.destination-out.html
  66. /2dcontext/compositing/2d.composite.transparent.destination-over.html
  67. /2dcontext/compositing/2d.composite.transparent.lighter.html
  68. /2dcontext/compositing/2d.composite.transparent.source-atop.html
  69. /2dcontext/compositing/2d.composite.transparent.source-in.html
  70. /2dcontext/compositing/2d.composite.transparent.source-out.html
  71. /2dcontext/compositing/2d.composite.transparent.source-over.html
  72. /2dcontext/compositing/2d.composite.transparent.xor.html
  73. /2dcontext/compositing/2d.composite.uncovered.fill.copy.html
  74. /2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.html
  75. /2dcontext/compositing/2d.composite.uncovered.fill.destination-in.html
  76. /2dcontext/compositing/2d.composite.uncovered.fill.source-in.html
  77. /2dcontext/compositing/2d.composite.uncovered.fill.source-out.html
  78. /2dcontext/compositing/2d.composite.uncovered.image.copy.html
  79. /2dcontext/compositing/2d.composite.uncovered.image.destination-atop.html
  80. /2dcontext/compositing/2d.composite.uncovered.image.destination-in.html
  81. /2dcontext/compositing/2d.composite.uncovered.image.source-in.html
  82. /2dcontext/compositing/2d.composite.uncovered.image.source-out.html
  83. /2dcontext/compositing/2d.composite.uncovered.nocontext.copy.html
  84. /2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.html
  85. /2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.html
  86. /2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.html
  87. /2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.html
  88. /2dcontext/compositing/2d.composite.uncovered.pattern.copy.html
  89. /2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.html
  90. /2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.html
  91. /2dcontext/compositing/2d.composite.uncovered.pattern.source-in.html
  92. /2dcontext/compositing/2d.composite.uncovered.pattern.source-out.html
  93. /2dcontext/conformance-requirements/2d.missingargs.html
  94. /2dcontext/conformance-requirements/2d.type.delete.html
  95. /2dcontext/conformance-requirements/2d.voidreturn.html
  96. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.3arg.html
  97. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.5arg.html
  98. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html
  99. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html
  100. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html
  101. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html
  102. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html
  103. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.alpha.html
  104. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html
  105. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html
  106. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html
  107. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.broken.html
  108. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.canvas.html
  109. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.clip.html
  110. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.composite.html
  111. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.floatsource.html
  112. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html
  113. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html
  114. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html
  115. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html
  116. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html
  117. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedest.html
  118. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedir.html
  119. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativesource.html
  120. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html
  121. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.nowrap.html
  122. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.null.html
  123. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.path.html
  124. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.1.html
  125. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.2.html
  126. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.svg.html
  127. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.transform.html
  128. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html
  129. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html
  130. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html
  131. /2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html
  132. /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.html
  133. /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_002.html
  134. /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_003.html
  135. /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_004.html
  136. /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.html
  137. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html
  138. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html
  139. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html
  140. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html
  141. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html
  142. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html
  143. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.path.html
  144. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html
  145. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html
  146. /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html
  147. /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html
  148. /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html
  149. /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html
  150. /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html
  151. /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.path.html
  152. /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html
  153. /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html
  154. /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html
  155. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html
  156. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html
  157. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html
  158. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html
  159. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html
  160. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html
  161. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html
  162. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html
  163. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html
  164. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html
  165. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html
  166. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html
  167. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html
  168. /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html
  169. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html
  170. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html
  171. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html
  172. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html
  173. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html
  174. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html
  175. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html
  176. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html
  177. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html
  178. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html
  179. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html
  180. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html
  181. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html
  182. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html
  183. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html
  184. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html
  185. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html
  186. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html
  187. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html
  188. /2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html
  189. /2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html
  190. /2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html
  191. /2dcontext/fill-and-stroke-styles/2d.fillStyle.default.html
  192. /2dcontext/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html
  193. /2dcontext/fill-and-stroke-styles/2d.fillStyle.get.solid.html
  194. /2dcontext/fill-and-stroke-styles/2d.fillStyle.get.transparent.html
  195. /2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidstring.html
  196. /2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidtype.html
  197. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html
  198. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html
  199. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html
  200. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html
  201. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html
  202. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html
  203. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html
  204. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html
  205. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html
  206. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html
  207. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html
  208. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html
  209. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html
  210. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html
  211. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html
  212. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html
  213. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html
  214. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html
  215. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html
  216. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html
  217. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html
  218. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html
  219. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html
  220. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html
  221. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html
  222. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.html
  223. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html
  224. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html
  225. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html
  226. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html
  227. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html
  228. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html
  229. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html
  230. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html
  231. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html
  232. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html
  233. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html
  234. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html
  235. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html
  236. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html
  237. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html
  238. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html
  239. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html
  240. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html
  241. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html
  242. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html
  243. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html
  244. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html
  245. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html
  246. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html
  247. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-4.html
  248. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-5.html
  249. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-6.html
  250. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-7.html
  251. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html
  252. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html
  253. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html
  254. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html
  255. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html
  256. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-6.html
  257. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-7.html
  258. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html
  259. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html
  260. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html
  261. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html
  262. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html
  263. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html
  264. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html
  265. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html
  266. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html
  267. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html
  268. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html
  269. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html
  270. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html
  271. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html
  272. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html
  273. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html
  274. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html
  275. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html
  276. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html
  277. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html
  278. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.system.html
  279. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html
  280. /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html
  281. /2dcontext/fill-and-stroke-styles/2d.gradient.empty.html
  282. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html
  283. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.html
  284. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html
  285. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html
  286. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.html
  287. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html
  288. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html
  289. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.html
  290. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html
  291. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html
  292. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html
  293. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html
  294. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html
  295. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html
  296. /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html
  297. /2dcontext/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html
  298. /2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.1.html
  299. /2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.2.html
  300. /2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.3.html
  301. /2dcontext/fill-and-stroke-styles/2d.gradient.object.compare.html
  302. /2dcontext/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html
  303. /2dcontext/fill-and-stroke-styles/2d.gradient.object.current.html
  304. /2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html
  305. /2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html
  306. /2dcontext/fill-and-stroke-styles/2d.gradient.object.return.html
  307. /2dcontext/fill-and-stroke-styles/2d.gradient.object.type.html
  308. /2dcontext/fill-and-stroke-styles/2d.gradient.object.update.html
  309. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html
  310. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html
  311. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html
  312. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html
  313. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.front.html
  314. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html
  315. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html
  316. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.top.html
  317. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.html
  318. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside1.html
  319. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside2.html
  320. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside3.html
  321. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html
  322. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html
  323. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside1.html
  324. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside2.html
  325. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.html
  326. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.html
  327. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch2.html
  328. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.html
  329. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.1.html
  330. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.2.html
  331. /2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.3.html
  332. /2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html
  333. /2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.html
  334. /2dcontext/fill-and-stroke-styles/2d.pattern.basic.image.html
  335. /2dcontext/fill-and-stroke-styles/2d.pattern.basic.nocontext.html
  336. /2dcontext/fill-and-stroke-styles/2d.pattern.basic.type.html
  337. /2dcontext/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html
  338. /2dcontext/fill-and-stroke-styles/2d.pattern.crosscanvas.html
  339. /2dcontext/fill-and-stroke-styles/2d.pattern.image.broken.html
  340. /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html
  341. /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html
  342. /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html
  343. /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html
  344. /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html
  345. /2dcontext/fill-and-stroke-styles/2d.pattern.image.null.html
  346. /2dcontext/fill-and-stroke-styles/2d.pattern.image.string.html
  347. /2dcontext/fill-and-stroke-styles/2d.pattern.image.undefined.html
  348. /2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas1.html
  349. /2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas2.html
  350. /2dcontext/fill-and-stroke-styles/2d.pattern.modify.image1.html
  351. /2dcontext/fill-and-stroke-styles/2d.pattern.modify.image2.html
  352. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html
  353. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html
  354. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html
  355. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html
  356. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html
  357. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html
  358. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html
  359. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html
  360. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html
  361. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html
  362. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html
  363. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html
  364. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html
  365. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html
  366. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html
  367. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html
  368. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html
  369. /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html
  370. /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.case.html
  371. /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html
  372. /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html
  373. /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html
  374. /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.undefined.html
  375. /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html
  376. /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html
  377. /2dcontext/fill-and-stroke-styles/2d.strokeStyle.default.html
  378. /2dcontext/hit-regions/addHitRegions-NotSupportedError-01.html
  379. /2dcontext/hit-regions/hitregions-members-exist.html
  380. /2dcontext/line-styles/2d.line.cap.butt.html
  381. /2dcontext/line-styles/2d.line.cap.closed.html
  382. /2dcontext/line-styles/2d.line.cap.invalid.html
  383. /2dcontext/line-styles/2d.line.cap.open.html
  384. /2dcontext/line-styles/2d.line.cap.round.html
  385. /2dcontext/line-styles/2d.line.cap.square.html
  386. /2dcontext/line-styles/2d.line.cap.valid.html
  387. /2dcontext/line-styles/2d.line.cross.html
  388. /2dcontext/line-styles/2d.line.defaults.html
  389. /2dcontext/line-styles/2d.line.join.bevel.html
  390. /2dcontext/line-styles/2d.line.join.closed.html
  391. /2dcontext/line-styles/2d.line.join.invalid.html
  392. /2dcontext/line-styles/2d.line.join.miter.html
  393. /2dcontext/line-styles/2d.line.join.open.html
  394. /2dcontext/line-styles/2d.line.join.parallel.html
  395. /2dcontext/line-styles/2d.line.join.round.html
  396. /2dcontext/line-styles/2d.line.join.valid.html
  397. /2dcontext/line-styles/2d.line.miter.acute.html
  398. /2dcontext/line-styles/2d.line.miter.exceeded.html
  399. /2dcontext/line-styles/2d.line.miter.invalid.html
  400. /2dcontext/line-styles/2d.line.miter.lineedge.html
  401. /2dcontext/line-styles/2d.line.miter.obtuse.html
  402. /2dcontext/line-styles/2d.line.miter.rightangle.html
  403. /2dcontext/line-styles/2d.line.miter.valid.html
  404. /2dcontext/line-styles/2d.line.miter.within.html
  405. /2dcontext/line-styles/2d.line.union.html
  406. /2dcontext/line-styles/2d.line.width.basic.html
  407. /2dcontext/line-styles/2d.line.width.invalid.html
  408. /2dcontext/line-styles/2d.line.width.scaledefault.html
  409. /2dcontext/line-styles/2d.line.width.transformed.html
  410. /2dcontext/line-styles/2d.line.width.valid.html
  411. /2dcontext/path-objects/2d.path.arc.angle.1.html
  412. /2dcontext/path-objects/2d.path.arc.angle.2.html
  413. /2dcontext/path-objects/2d.path.arc.angle.3.html
  414. /2dcontext/path-objects/2d.path.arc.angle.4.html
  415. /2dcontext/path-objects/2d.path.arc.angle.5.html
  416. /2dcontext/path-objects/2d.path.arc.angle.6.html
  417. /2dcontext/path-objects/2d.path.arc.default.html
  418. /2dcontext/path-objects/2d.path.arc.empty.html
  419. /2dcontext/path-objects/2d.path.arc.end.html
  420. /2dcontext/path-objects/2d.path.arc.negative.html
  421. /2dcontext/path-objects/2d.path.arc.nonempty.html
  422. /2dcontext/path-objects/2d.path.arc.nonfinite.html
  423. /2dcontext/path-objects/2d.path.arc.scale.1.html
  424. /2dcontext/path-objects/2d.path.arc.scale.2.html
  425. /2dcontext/path-objects/2d.path.arc.selfintersect.1.html
  426. /2dcontext/path-objects/2d.path.arc.selfintersect.2.html
  427. /2dcontext/path-objects/2d.path.arc.shape.1.html
  428. /2dcontext/path-objects/2d.path.arc.shape.2.html
  429. /2dcontext/path-objects/2d.path.arc.shape.3.html
  430. /2dcontext/path-objects/2d.path.arc.shape.4.html
  431. /2dcontext/path-objects/2d.path.arc.shape.5.html
  432. /2dcontext/path-objects/2d.path.arc.twopie.1.html
  433. /2dcontext/path-objects/2d.path.arc.twopie.2.html
  434. /2dcontext/path-objects/2d.path.arc.twopie.3.html
  435. /2dcontext/path-objects/2d.path.arc.twopie.4.html
  436. /2dcontext/path-objects/2d.path.arc.zero.1.html
  437. /2dcontext/path-objects/2d.path.arc.zero.2.html
  438. /2dcontext/path-objects/2d.path.arc.zeroradius.html
  439. /2dcontext/path-objects/2d.path.arcTo.coincide.1.html
  440. /2dcontext/path-objects/2d.path.arcTo.coincide.2.html
  441. /2dcontext/path-objects/2d.path.arcTo.collinear.1.html
  442. /2dcontext/path-objects/2d.path.arcTo.collinear.2.html
  443. /2dcontext/path-objects/2d.path.arcTo.collinear.3.html
  444. /2dcontext/path-objects/2d.path.arcTo.ensuresubpath.1.html
  445. /2dcontext/path-objects/2d.path.arcTo.ensuresubpath.2.html
  446. /2dcontext/path-objects/2d.path.arcTo.negative.html
  447. /2dcontext/path-objects/2d.path.arcTo.nonfinite.html
  448. /2dcontext/path-objects/2d.path.arcTo.scale.html
  449. /2dcontext/path-objects/2d.path.arcTo.shape.curve1.html
  450. /2dcontext/path-objects/2d.path.arcTo.shape.curve2.html
  451. /2dcontext/path-objects/2d.path.arcTo.shape.end.html
  452. /2dcontext/path-objects/2d.path.arcTo.shape.start.html
  453. /2dcontext/path-objects/2d.path.arcTo.transformation.html
  454. /2dcontext/path-objects/2d.path.arcTo.zero.1.html
  455. /2dcontext/path-objects/2d.path.arcTo.zero.2.html
  456. /2dcontext/path-objects/2d.path.beginPath.html
  457. /2dcontext/path-objects/2d.path.bezierCurveTo.basic.html
  458. /2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html
  459. /2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html
  460. /2dcontext/path-objects/2d.path.bezierCurveTo.nonfinite.html
  461. /2dcontext/path-objects/2d.path.bezierCurveTo.scaled.html
  462. /2dcontext/path-objects/2d.path.bezierCurveTo.shape.html
  463. /2dcontext/path-objects/2d.path.clip.basic.1.html
  464. /2dcontext/path-objects/2d.path.clip.basic.2.html
  465. /2dcontext/path-objects/2d.path.clip.empty.html
  466. /2dcontext/path-objects/2d.path.clip.intersect.html
  467. /2dcontext/path-objects/2d.path.clip.unaffected.html
  468. /2dcontext/path-objects/2d.path.clip.winding.1.html
  469. /2dcontext/path-objects/2d.path.clip.winding.2.html
  470. /2dcontext/path-objects/2d.path.closePath.empty.html
  471. /2dcontext/path-objects/2d.path.closePath.newline.html
  472. /2dcontext/path-objects/2d.path.closePath.nextpoint.html
  473. /2dcontext/path-objects/2d.path.fill.closed.basic.html
  474. /2dcontext/path-objects/2d.path.fill.closed.unaffected.html
  475. /2dcontext/path-objects/2d.path.fill.overlap.html
  476. /2dcontext/path-objects/2d.path.fill.winding.add.html
  477. /2dcontext/path-objects/2d.path.fill.winding.subtract.1.html
  478. /2dcontext/path-objects/2d.path.fill.winding.subtract.2.html
  479. /2dcontext/path-objects/2d.path.fill.winding.subtract.3.html
  480. /2dcontext/path-objects/2d.path.initial.html
  481. /2dcontext/path-objects/2d.path.isPointInPath.arc.html
  482. /2dcontext/path-objects/2d.path.isPointInPath.basic.1.html
  483. /2dcontext/path-objects/2d.path.isPointInPath.basic.2.html
  484. /2dcontext/path-objects/2d.path.isPointInPath.bezier.html
  485. /2dcontext/path-objects/2d.path.isPointInPath.bigarc.html
  486. /2dcontext/path-objects/2d.path.isPointInPath.edge.html
  487. /2dcontext/path-objects/2d.path.isPointInPath.empty.html
  488. /2dcontext/path-objects/2d.path.isPointInPath.nonfinite.html
  489. /2dcontext/path-objects/2d.path.isPointInPath.outside.html
  490. /2dcontext/path-objects/2d.path.isPointInPath.subpath.html
  491. /2dcontext/path-objects/2d.path.isPointInPath.transform.1.html
  492. /2dcontext/path-objects/2d.path.isPointInPath.transform.2.html
  493. /2dcontext/path-objects/2d.path.isPointInPath.transform.3.html
  494. /2dcontext/path-objects/2d.path.isPointInPath.transform.4.html
  495. /2dcontext/path-objects/2d.path.isPointInPath.unclosed.html
  496. /2dcontext/path-objects/2d.path.isPointInPath.winding.html
  497. /2dcontext/path-objects/2d.path.lineTo.basic.html
  498. /2dcontext/path-objects/2d.path.lineTo.ensuresubpath.1.html
  499. /2dcontext/path-objects/2d.path.lineTo.ensuresubpath.2.html
  500. /2dcontext/path-objects/2d.path.lineTo.nextpoint.html
  501. /2dcontext/path-objects/2d.path.lineTo.nonfinite.html
  502. /2dcontext/path-objects/2d.path.moveTo.basic.html
  503. /2dcontext/path-objects/2d.path.moveTo.multiple.html
  504. /2dcontext/path-objects/2d.path.moveTo.newsubpath.html
  505. /2dcontext/path-objects/2d.path.moveTo.nonfinite.html
  506. /2dcontext/path-objects/2d.path.quadraticCurveTo.basic.html
  507. /2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html
  508. /2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html
  509. /2dcontext/path-objects/2d.path.quadraticCurveTo.nonfinite.html
  510. /2dcontext/path-objects/2d.path.quadraticCurveTo.scaled.html
  511. /2dcontext/path-objects/2d.path.quadraticCurveTo.shape.html
  512. /2dcontext/path-objects/2d.path.rect.basic.html
  513. /2dcontext/path-objects/2d.path.rect.closed.html
  514. /2dcontext/path-objects/2d.path.rect.end.1.html
  515. /2dcontext/path-objects/2d.path.rect.end.2.html
  516. /2dcontext/path-objects/2d.path.rect.negative.html
  517. /2dcontext/path-objects/2d.path.rect.newsubpath.html
  518. /2dcontext/path-objects/2d.path.rect.nonfinite.html
  519. /2dcontext/path-objects/2d.path.rect.selfintersect.html
  520. /2dcontext/path-objects/2d.path.rect.winding.html
  521. /2dcontext/path-objects/2d.path.rect.zero.1.html
  522. /2dcontext/path-objects/2d.path.rect.zero.2.html
  523. /2dcontext/path-objects/2d.path.rect.zero.3.html
  524. /2dcontext/path-objects/2d.path.rect.zero.4.html
  525. /2dcontext/path-objects/2d.path.rect.zero.5.html
  526. /2dcontext/path-objects/2d.path.rect.zero.6.html
  527. /2dcontext/path-objects/2d.path.stroke.empty.html
  528. /2dcontext/path-objects/2d.path.stroke.overlap.html
  529. /2dcontext/path-objects/2d.path.stroke.prune.arc.html
  530. /2dcontext/path-objects/2d.path.stroke.prune.closed.html
  531. /2dcontext/path-objects/2d.path.stroke.prune.corner.html
  532. /2dcontext/path-objects/2d.path.stroke.prune.curve.html
  533. /2dcontext/path-objects/2d.path.stroke.prune.line.html
  534. /2dcontext/path-objects/2d.path.stroke.prune.rect.html
  535. /2dcontext/path-objects/2d.path.stroke.scale1.html
  536. /2dcontext/path-objects/2d.path.stroke.scale2.html
  537. /2dcontext/path-objects/2d.path.stroke.skew.html
  538. /2dcontext/path-objects/2d.path.stroke.unaffected.html
  539. /2dcontext/path-objects/2d.path.stroke.union.html
  540. /2dcontext/path-objects/2d.path.transformation.basic.html
  541. /2dcontext/path-objects/2d.path.transformation.changing.html
  542. /2dcontext/path-objects/2d.path.transformation.multiple.html
  543. /2dcontext/pixel-manipulation/2d.imageData.create1.basic.html
  544. /2dcontext/pixel-manipulation/2d.imageData.create1.initial.html
  545. /2dcontext/pixel-manipulation/2d.imageData.create1.this.html
  546. /2dcontext/pixel-manipulation/2d.imageData.create1.type.html
  547. /2dcontext/pixel-manipulation/2d.imageData.create1.zero.html
  548. /2dcontext/pixel-manipulation/2d.imageData.create2.basic.html
  549. /2dcontext/pixel-manipulation/2d.imageData.create2.initial.html
  550. /2dcontext/pixel-manipulation/2d.imageData.create2.large.html
  551. /2dcontext/pixel-manipulation/2d.imageData.create2.negative.html
  552. /2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html
  553. /2dcontext/pixel-manipulation/2d.imageData.create2.round.html
  554. /2dcontext/pixel-manipulation/2d.imageData.create2.this.html
  555. /2dcontext/pixel-manipulation/2d.imageData.create2.tiny.html
  556. /2dcontext/pixel-manipulation/2d.imageData.create2.type.html
  557. /2dcontext/pixel-manipulation/2d.imageData.create2.zero.html
  558. /2dcontext/pixel-manipulation/2d.imageData.get.basic.html
  559. /2dcontext/pixel-manipulation/2d.imageData.get.clamp.html
  560. /2dcontext/pixel-manipulation/2d.imageData.get.length.html
  561. /2dcontext/pixel-manipulation/2d.imageData.get.nonfinite.html
  562. /2dcontext/pixel-manipulation/2d.imageData.get.nonpremul.html
  563. /2dcontext/pixel-manipulation/2d.imageData.get.order.alpha.html
  564. /2dcontext/pixel-manipulation/2d.imageData.get.order.cols.html
  565. /2dcontext/pixel-manipulation/2d.imageData.get.order.rgb.html
  566. /2dcontext/pixel-manipulation/2d.imageData.get.order.rows.html
  567. /2dcontext/pixel-manipulation/2d.imageData.get.range.html
  568. /2dcontext/pixel-manipulation/2d.imageData.get.source.negative.html
  569. /2dcontext/pixel-manipulation/2d.imageData.get.source.outside.html
  570. /2dcontext/pixel-manipulation/2d.imageData.get.source.size.html
  571. /2dcontext/pixel-manipulation/2d.imageData.get.tiny.html
  572. /2dcontext/pixel-manipulation/2d.imageData.get.type.html
  573. /2dcontext/pixel-manipulation/2d.imageData.get.unaffected.html
  574. /2dcontext/pixel-manipulation/2d.imageData.get.zero.html
  575. /2dcontext/pixel-manipulation/2d.imageData.object.clamp.html
  576. /2dcontext/pixel-manipulation/2d.imageData.object.ctor.html
  577. /2dcontext/pixel-manipulation/2d.imageData.object.nan.html
  578. /2dcontext/pixel-manipulation/2d.imageData.object.properties.html
  579. /2dcontext/pixel-manipulation/2d.imageData.object.readonly.html
  580. /2dcontext/pixel-manipulation/2d.imageData.object.round.html
  581. /2dcontext/pixel-manipulation/2d.imageData.object.set.html
  582. /2dcontext/pixel-manipulation/2d.imageData.object.string.html
  583. /2dcontext/pixel-manipulation/2d.imageData.object.undefined.html
  584. /2dcontext/pixel-manipulation/2d.imageData.put.alpha.html
  585. /2dcontext/pixel-manipulation/2d.imageData.put.basic.html
  586. /2dcontext/pixel-manipulation/2d.imageData.put.clip.html
  587. /2dcontext/pixel-manipulation/2d.imageData.put.created.html
  588. /2dcontext/pixel-manipulation/2d.imageData.put.cross.html
  589. /2dcontext/pixel-manipulation/2d.imageData.put.dirty.negative.html
  590. /2dcontext/pixel-manipulation/2d.imageData.put.dirty.outside.html
  591. /2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect1.html
  592. /2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect2.html
  593. /2dcontext/pixel-manipulation/2d.imageData.put.dirty.zero.html
  594. /2dcontext/pixel-manipulation/2d.imageData.put.modified.html
  595. /2dcontext/pixel-manipulation/2d.imageData.put.nonfinite.html
  596. /2dcontext/pixel-manipulation/2d.imageData.put.null.html
  597. /2dcontext/pixel-manipulation/2d.imageData.put.path.html
  598. /2dcontext/pixel-manipulation/2d.imageData.put.unaffected.html
  599. /2dcontext/pixel-manipulation/2d.imageData.put.unchanged.html
  600. /2dcontext/pixel-manipulation/2d.imageData.put.wrongtype.html
  601. /2dcontext/shadows/2d.shadow.alpha.1.html
  602. /2dcontext/shadows/2d.shadow.alpha.2.html
  603. /2dcontext/shadows/2d.shadow.alpha.3.html
  604. /2dcontext/shadows/2d.shadow.alpha.4.html
  605. /2dcontext/shadows/2d.shadow.alpha.5.html
  606. /2dcontext/shadows/2d.shadow.attributes.shadowBlur.initial.html
  607. /2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html
  608. /2dcontext/shadows/2d.shadow.attributes.shadowBlur.valid.html
  609. /2dcontext/shadows/2d.shadow.attributes.shadowColor.initial.html
  610. /2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html
  611. /2dcontext/shadows/2d.shadow.attributes.shadowColor.valid.html
  612. /2dcontext/shadows/2d.shadow.attributes.shadowOffset.initial.html
  613. /2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html
  614. /2dcontext/shadows/2d.shadow.attributes.shadowOffset.valid.html
  615. /2dcontext/shadows/2d.shadow.canvas.alpha.html
  616. /2dcontext/shadows/2d.shadow.canvas.basic.html
  617. /2dcontext/shadows/2d.shadow.canvas.transparent.1.html
  618. /2dcontext/shadows/2d.shadow.canvas.transparent.2.html
  619. /2dcontext/shadows/2d.shadow.clip.1.html
  620. /2dcontext/shadows/2d.shadow.clip.2.html
  621. /2dcontext/shadows/2d.shadow.clip.3.html
  622. /2dcontext/shadows/2d.shadow.composite.1.html
  623. /2dcontext/shadows/2d.shadow.composite.2.html
  624. /2dcontext/shadows/2d.shadow.composite.3.html
  625. /2dcontext/shadows/2d.shadow.enable.blur.html
  626. /2dcontext/shadows/2d.shadow.enable.off.1.html
  627. /2dcontext/shadows/2d.shadow.enable.off.2.html
  628. /2dcontext/shadows/2d.shadow.enable.x.html
  629. /2dcontext/shadows/2d.shadow.enable.y.html
  630. /2dcontext/shadows/2d.shadow.gradient.alpha.html
  631. /2dcontext/shadows/2d.shadow.gradient.basic.html
  632. /2dcontext/shadows/2d.shadow.gradient.transparent.1.html
  633. /2dcontext/shadows/2d.shadow.gradient.transparent.2.html
  634. /2dcontext/shadows/2d.shadow.image.alpha.html
  635. /2dcontext/shadows/2d.shadow.image.basic.html
  636. /2dcontext/shadows/2d.shadow.image.scale.html
  637. /2dcontext/shadows/2d.shadow.image.section.html
  638. /2dcontext/shadows/2d.shadow.image.transparent.1.html
  639. /2dcontext/shadows/2d.shadow.image.transparent.2.html
  640. /2dcontext/shadows/2d.shadow.offset.negativeX.html
  641. /2dcontext/shadows/2d.shadow.offset.negativeY.html
  642. /2dcontext/shadows/2d.shadow.offset.positiveX.html
  643. /2dcontext/shadows/2d.shadow.offset.positiveY.html
  644. /2dcontext/shadows/2d.shadow.outside.html
  645. /2dcontext/shadows/2d.shadow.pattern.alpha.html
  646. /2dcontext/shadows/2d.shadow.pattern.basic.html
  647. /2dcontext/shadows/2d.shadow.pattern.transparent.1.html
  648. /2dcontext/shadows/2d.shadow.pattern.transparent.2.html
  649. /2dcontext/shadows/2d.shadow.stroke.basic.html
  650. /2dcontext/shadows/2d.shadow.stroke.cap.1.html
  651. /2dcontext/shadows/2d.shadow.stroke.cap.2.html
  652. /2dcontext/shadows/2d.shadow.stroke.join.1.html
  653. /2dcontext/shadows/2d.shadow.stroke.join.2.html
  654. /2dcontext/shadows/2d.shadow.stroke.join.3.html
  655. /2dcontext/shadows/2d.shadow.transform.1.html
  656. /2dcontext/shadows/2d.shadow.transform.2.html
  657. /2dcontext/text-styles/2d.text.align.default.html
  658. /2dcontext/text-styles/2d.text.align.invalid.html
  659. /2dcontext/text-styles/2d.text.align.valid.html
  660. /2dcontext/text-styles/2d.text.baseline.default.html
  661. /2dcontext/text-styles/2d.text.baseline.invalid.html
  662. /2dcontext/text-styles/2d.text.baseline.valid.html
  663. /2dcontext/text-styles/2d.text.draw.baseline.bottom.html
  664. /2dcontext/text-styles/2d.text.draw.baseline.hanging.html
  665. /2dcontext/text-styles/2d.text.draw.baseline.ideographic.html
  666. /2dcontext/text-styles/2d.text.draw.baseline.middle.html
  667. /2dcontext/text-styles/2d.text.draw.baseline.top.html
  668. /2dcontext/text-styles/2d.text.draw.space.collapse.end.html
  669. /2dcontext/text-styles/2d.text.draw.space.collapse.other.html
  670. /2dcontext/text-styles/2d.text.draw.space.collapse.space.html
  671. /2dcontext/text-styles/2d.text.draw.space.collapse.start.html
  672. /2dcontext/text-styles/2d.text.font.default.html
  673. /2dcontext/text-styles/2d.text.font.parse.basic.html
  674. /2dcontext/text-styles/2d.text.font.parse.complex.html
  675. /2dcontext/text-styles/2d.text.font.parse.invalid.html
  676. /2dcontext/text-styles/2d.text.font.parse.size.percentage.default.html
  677. /2dcontext/text-styles/2d.text.font.parse.size.percentage.html
  678. /2dcontext/text-styles/2d.text.font.parse.system.html
  679. /2dcontext/text-styles/2d.text.measure.width.space.html
  680. /2dcontext/the-canvas-state/2d.state.saverestore.bitmap.html
  681. /2dcontext/the-canvas-state/2d.state.saverestore.clip.html
  682. /2dcontext/the-canvas-state/2d.state.saverestore.fillStyle.html
  683. /2dcontext/the-canvas-state/2d.state.saverestore.font.html
  684. /2dcontext/the-canvas-state/2d.state.saverestore.globalAlpha.html
  685. /2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html
  686. /2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html
  687. /2dcontext/the-canvas-state/2d.state.saverestore.lineJoin.html
  688. /2dcontext/the-canvas-state/2d.state.saverestore.lineWidth.html
  689. /2dcontext/the-canvas-state/2d.state.saverestore.miterLimit.html
  690. /2dcontext/the-canvas-state/2d.state.saverestore.path.html
  691. /2dcontext/the-canvas-state/2d.state.saverestore.shadowBlur.html
  692. /2dcontext/the-canvas-state/2d.state.saverestore.shadowColor.html
  693. /2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetX.html
  694. /2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetY.html
  695. /2dcontext/the-canvas-state/2d.state.saverestore.stack.html
  696. /2dcontext/the-canvas-state/2d.state.saverestore.stackdepth.html
  697. /2dcontext/the-canvas-state/2d.state.saverestore.strokeStyle.html
  698. /2dcontext/the-canvas-state/2d.state.saverestore.textAlign.html
  699. /2dcontext/the-canvas-state/2d.state.saverestore.textBaseline.html
  700. /2dcontext/the-canvas-state/2d.state.saverestore.transformation.html
  701. /2dcontext/the-canvas-state/2d.state.saverestore.underflow.html
  702. /2dcontext/transformations/2d.transformation.order.html
  703. /2dcontext/transformations/2d.transformation.rotate.direction.html
  704. /2dcontext/transformations/2d.transformation.rotate.nonfinite.html
  705. /2dcontext/transformations/2d.transformation.rotate.radians.html
  706. /2dcontext/transformations/2d.transformation.rotate.wrap.html
  707. /2dcontext/transformations/2d.transformation.rotate.wrapnegative.html
  708. /2dcontext/transformations/2d.transformation.rotate.zero.html
  709. /2dcontext/transformations/2d.transformation.scale.basic.html
  710. /2dcontext/transformations/2d.transformation.scale.large.html
  711. /2dcontext/transformations/2d.transformation.scale.multiple.html
  712. /2dcontext/transformations/2d.transformation.scale.negative.html
  713. /2dcontext/transformations/2d.transformation.scale.nonfinite.html
  714. /2dcontext/transformations/2d.transformation.scale.zero.html
  715. /2dcontext/transformations/2d.transformation.setTransform.multiple.html
  716. /2dcontext/transformations/2d.transformation.setTransform.nonfinite.html
  717. /2dcontext/transformations/2d.transformation.setTransform.skewed.html
  718. /2dcontext/transformations/2d.transformation.transform.identity.html
  719. /2dcontext/transformations/2d.transformation.transform.multiply.html
  720. /2dcontext/transformations/2d.transformation.transform.nonfinite.html
  721. /2dcontext/transformations/2d.transformation.transform.skewed.html
  722. /2dcontext/transformations/2d.transformation.translate.basic.html
  723. /2dcontext/transformations/2d.transformation.translate.nonfinite.html
TestCh45FF40IE11Op12Sa07UC10
/2dcontext/compositing/2d.composite.canvas.copy.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.copyPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.destination-atop.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.destination-atopPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.destination-in.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.destination-inPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.destination-out.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.destination-outPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.destination-over.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.destination-overPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.lighter.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.lighterPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.source-atop.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.source-atopPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.source-in.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.source-inPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.source-out.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.source-outPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.source-over.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.source-overPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.canvas.xor.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.canvas.xorPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.copy.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.destination-atop.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.destination-in.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.destination-out.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.destination-over.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.lighter.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.source-atop.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.source-in.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.source-out.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.source-over.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.clip.xor.htmlOKOKOKOKOKERROR
fill() does not affect pixels outside the clip region.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.globalAlpha.canvas.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.globalAlpha.canvasPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.globalAlpha.canvaspattern.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.globalAlpha.canvaspatternPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.globalAlpha.default.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.globalAlpha.defaultPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.globalAlpha.fill.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.globalAlpha.fillPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.globalAlpha.image.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.globalAlpha.imagePASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.globalAlpha.imagepattern.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.globalAlpha.imagepatternPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.globalAlpha.invalid.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.globalAlpha.invalidPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.globalAlpha.range.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.globalAlpha.rangePASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.copy.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.copyPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.destination-atop.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.destination-atopPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.destination-in.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.destination-inPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.destination-out.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.destination-outPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.destination-over.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.destination-overPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.lighter.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.lighterPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.source-atop.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.source-atopPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.source-in.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.source-inPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.source-out.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.source-outPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.source-over.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.source-overPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.image.xor.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.image.xorPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.operation.casesensitive.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.operation.casesensitivePASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.operation.clear.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.operation.clearFAILPASSPASSPASSFAILFAIL
/2dcontext/compositing/2d.composite.operation.darker.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.operation.darkerFAILPASSPASSPASSFAILFAIL
/2dcontext/compositing/2d.composite.operation.default.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.operation.defaultPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.operation.get.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.operation.getPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.operation.highlight.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.operation.highlightPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.operation.nullsuffix.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.operation.nullsuffixPASSPASSFAILFAILPASSPASS
/2dcontext/compositing/2d.composite.operation.over.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.operation.overPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.operation.unrecognised.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.operation.unrecognisedPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.copy.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.solid.copyPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.destination-atop.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.solid.destination-atopPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.destination-in.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.solid.destination-inPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.destination-out.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.solid.destination-outPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.destination-over.htmlOKOKOKOKOKERROR
Canvas test: 2d.composite.solid.destination-overPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.lighter.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.solid.lighterPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.source-atop.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.solid.source-atopPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.source-in.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.solid.source-inPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.source-out.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.solid.source-outPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.source-over.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.solid.source-overPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.solid.xor.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.solid.xorPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.copy.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.copyPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.destination-atop.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.destination-atopPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.destination-in.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.destination-inPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.destination-out.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.destination-outPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.destination-over.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.destination-overPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.lighter.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.lighterPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.source-atop.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.source-atopPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.source-in.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.source-inPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.source-out.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.source-outPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.source-over.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.source-overPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.transparent.xor.htmlOKOKOKOKOKOK
Canvas test: 2d.composite.transparent.xorPASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.fill.copy.htmlOKOKOKOKOKOK
fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.htmlOKOKOKOKOKOK
fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.fill.destination-in.htmlOKOKOKOKOKOK
fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.fill.source-in.htmlOKOKOKOKOKOK
fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.fill.source-out.htmlOKOKOKOKOKOK
fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.image.copy.htmlOKOKOKOKOKOK
drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.image.destination-atop.htmlOKOKOKOKOKOK
drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.image.destination-in.htmlOKOKOKOKOKOK
drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.image.source-in.htmlOKOKOKOKOKOK
drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.image.source-out.htmlOKOKOKOKOKOK
drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.nocontext.copy.htmlOKOKOKOKOKOK
drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.htmlOKOKOKOKOKOK
drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.htmlOKOKOKOKOKOK
drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.htmlOKOKOKOKOKOK
drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.htmlOKOKOKOKOKOK
drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSPASS
/2dcontext/compositing/2d.composite.uncovered.pattern.copy.htmlOKOKOKOKOKOK
Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.htmlOKOKOKOKOKOK
Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.htmlOKOKOKOKOKOK
Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.pattern.source-in.htmlOKOKOKOKOKOK
Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/compositing/2d.composite.uncovered.pattern.source-out.htmlOKOKOKOKOKOK
Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.PASSPASSPASSPASSPASSFAIL
/2dcontext/conformance-requirements/2d.missingargs.htmlOKOKOKOKOKOK
Missing arguments cause TypeErrorPASSPASSFAILFAILFAILFAIL
/2dcontext/conformance-requirements/2d.type.delete.htmlOKOKOKOKOKOK
window.CanvasRenderingContext2D is ConfigurableFAILPASSPASSFAILPASSFAIL
/2dcontext/conformance-requirements/2d.voidreturn.htmlOKOKOKOKOKOK
void methods return undefinedPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.3arg.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.3argPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.5arg.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.5argPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.9arg.basicPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.9arg.destposPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.9arg.destsizePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.9arg.sourceposPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.9arg.sourcesizePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.alpha.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.alphaPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.htmlOKOKOKOKOKOK
drawImage() of an APNG with no poster frame draws the first framePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.htmlOKOKOKOKOKOK
drawImage() of an animated GIF draws the first framePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.htmlOKOKOKOKOKOK
drawImage() of an APNG draws the poster framePASSFAILPASSFAILPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.broken.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.brokenPASSPASSFAILPASSFAILPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.canvas.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.canvasPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.clip.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.clipPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.composite.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.compositePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.floatsource.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.floatsourcePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.incomplete.emptysrcPASSFAILPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.incomplete.immediatePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.incomplete.nosrcPASSFAILPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.incomplete.reloadPASSFAILPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.incomplete.removedsrcPASSFAILPASSPASSFAILFAIL
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedest.htmlOKOKOKOKOKOK
Negative destination width/height represents the correct rectanglePASSFAILPASSFAILPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedir.htmlOKOKOKOKOKOK
Negative dimensions do not affect the direction of the imagePASSFAILPASSFAILPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativesource.htmlOKOKOKOKOKOK
Negative source width/height represents the correct rectanglePASSFAILPASSFAILPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nonfinite.htmlOKOKOKOKOKOK
drawImage() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nowrap.htmlOKOKOKOKOKOK
Stretched images do not get pixels wrapping around the edgesPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.null.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.nullPASSPASSFAILFAILFAILFAIL
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.path.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.pathPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.1.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.self.1PASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.2.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.self.2PASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.svg.htmlOKOKOKOKOKOK
drawImage() of an SVG imagePASSPASSTIMEOUTTIMEOUTPASSFAIL
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.transform.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.transformPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.wrongtype.htmlOKOKOKOKOKOK
Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeErrorPASSPASSFAILFAILPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.htmlOKOKOKOKOKOK
Canvas test: 2d.drawImage.zerocanvasFAILPASSPASSFAILPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.htmlOKOKOKOKOKOK
drawImage with zero-sized source rectangle throws INDEX_SIZE_ERRFAILPASSPASSPASSPASSPASS
/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.htmlOKOKOKOKOKOK
drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERRFAILPASSFAILFAILFAILFAIL
/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.htmlOKOKOKOKOKOK
drawFocusIfNeeded draws a focus ring.PASSFAILFAILFAILFAILFAIL
/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_002.htmlOKOKOKOKOKOK
drawFocusIfNeeded does not draw a focus ring if the element is not in focus.PASSPASSFAILFAILFAILFAIL
/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_003.htmlOKOKOKOKOKOK
drawFocusIfNeeded does not draw a focus ring if the element is not a descendant of the context.PASSPASSFAILFAILFAILFAIL
/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_004.htmlOKOKOKOKOKOK
drawFocusIfNeeded does draw a focus ring if the element is in focus.PASSFAILFAILFAILFAILFAIL
/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.htmlOKOKOKOKOKOK
drawFocusIfNeeded does draw a focus ring if the element is in focus and the user activated a particular focus ring.PASSFAILFAILFAILFAILFAIL
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.basic.htmlOKOKOKOKOKOK
clearRect clears to transparent blackPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.clip.htmlOKOKOKOKOKOK
clearRect is affected by clipping regionsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.htmlOKOKOKOKOKOK
clearRect is not affected by globalAlphaPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.htmlOKOKOKOKOKOK
clearRect is not affected by globalCompositeOperationPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.negative.htmlOKOKOKOKOKOK
clearRect of negative sizes worksPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.htmlOKOKOKOKOKOK
clearRect() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.path.htmlOKOKOKOKOKOK
clearRect does not affect the current pathPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.htmlOKOKOKOKOKOK
clearRect does not draw shadowsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.transform.htmlOKOKOKOKOKOK
clearRect is affected by transformsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.zero.htmlOKOKOKOKOKOK
clearRect of zero pixels has no effectPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.basic.htmlOKOKOKOKOKOK
fillRect worksPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.clip.htmlOKOKOKOKOKOK
fillRect is affected by clipping regionsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.negative.htmlOKOKOKOKOKOK
fillRect of negative sizes worksPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.htmlOKOKOKOKOKOK
fillRect() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.path.htmlOKOKOKOKOKOK
fillRect does not affect the current pathPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.htmlOKOKOKOKOKOK
fillRect draws shadowsPASSPASSPASSPASSPASSFAIL
/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.transform.htmlOKOKOKOKOKOK
fillRect is affected by transformsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.zero.htmlOKOKOKOKOKOK
fillRect of zero pixels has no effectPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.htmlOKOKOKOKOKOK
strokeRect worksPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.htmlOKOKOKOKOKOK
strokeRect is affected by clipping regionsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.htmlOKOKOKOKOKOK
strokeRect is affected by globalAlphaPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.htmlOKOKOKOKOKOK
strokeRect is not affected by globalCompositeOperationPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.htmlOKOKOKOKOKOK
strokeRect of negative sizes worksPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.htmlOKOKOKOKOKOK
strokeRect() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.path.htmlOKOKOKOKOKOK
strokeRect does not affect the current pathPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.htmlOKOKOKOKOKOK
strokeRect draws shadowsPASSPASSPASSPASSPASSFAIL
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.htmlOKOKOKOKOKOK
fillRect is affected by transformsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.htmlOKOKOKOKOKOK
strokeRect of 0x0 pixels draws nothingPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.htmlOKOKOKOKOKOK
strokeRect of 0x0 pixels draws nothing, including caps and joinsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.htmlOKOKOKOKOKOK
strokeRect of Nx0 pixels draws a straight linePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.htmlOKOKOKOKOKOK
strokeRect of Nx0 pixels draws a closed line with no capsPASSPASSFAILPASSFAILPASS
/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.htmlOKOKOKOKOKOK
strokeRect of Nx0 pixels draws a closed line with joinsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.htmlOKOKOKOKOKOK
textAlign center is the center of the em squares (not the bounding box)PASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.htmlOKOKOKOKOKOK
textAlign end with ltr is the right edgePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.htmlOKOKOKOKOKOK
textAlign end with rtl is the left edgePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.htmlOKOKOKOKOKOK
textAlign left is the left of the first em square (not the bounding box)PASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.htmlOKOKOKOKOKOK
textAlign right is the right of the last em square (not the bounding box)PASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.htmlOKOKOKOKOKOK
textAlign start with ltr is the left edgePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.htmlOKOKOKOKOKOK
textAlign start with rtl is the right edgePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.htmlOKOKOKOKOKOK
Canvas test: 2d.text.draw.baseline.alphabeticPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.htmlOKOKOKOKOKOK
fillText handles maxWidth based on line size, not bounding box sizePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.htmlOKOKOKOKOKOK
fillText works on @font-face fontsPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.htmlOKOKOKOKOKOK
fillText handles maxWidth correctlyPASSFAILPASSFAILPASSFAIL
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.htmlOKOKOKOKOKOK
fillText handles maxWidth correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.htmlOKOKOKOKOKOK
fillText handles maxWidth correctlyPASSFAILPASSPASSPASSFAIL
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.htmlOKOKOKOKOKOK
fillText does not start a new path or subpathPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.htmlOKOKOKOKOKOK
Canvas test: 2d.text.draw.fontfacePASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.htmlOKOKOKOKOKOK
@font-face fonts should work even if they are not used in the pageFAILPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.htmlOKOKOKOKOKOK
Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)PASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.htmlOKOKOKOKOKOK
U+0020 is rendered the correct size (1em wide)PASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.htmlOKOKOKOKOKOK
Non-space characters are not converted to U+0020 and collapsedPASSPASSPASSPASSPASSFAIL
/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.htmlOKOKOKOKOKOK
strokeText does not start a new path or subpathPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.text.measure.width.basicPASSPASSPASSPASSPASSPASS
/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.htmlOKOKOKOKOKOK
The empty string has zero widthPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.default.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.defaultPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.get.semitransparentPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.solid.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.get.solidPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.transparent.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.get.transparentPASSPASSPASSFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidstring.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.invalidstringPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidtype.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.invalidtypePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.htmlOKOKOKOKOKOK
currentColor is computed from the canvas elementPASSPASSFAILFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.htmlOKOKOKOKOKOK
currentColor is computed when the attribute is set, not when it is paintedPASSPASSFAILFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.htmlOKOKOKOKOKOK
currentColor is solid black when the canvas element is not in a documentPASSPASSFAILFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hex3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.htmlOKOK----
Canvas test: 2d.fillStyle.parse.hex4FAILFAIL----
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hex6PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.htmlOKOK----
Canvas test: 2d.fillStyle.parse.hex8FAILFAIL----
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-5PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-6PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-clamp-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-clamp-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-clamp-3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsl-clamp-4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsla-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsla-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsla-clamp-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsla-clamp-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsla-clamp-3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsla-clamp-4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsla-clamp-5PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.hsla-clamp-6PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.html4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hex1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hex2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hex3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hex4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hex5PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hex6PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hex7PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hex8PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hsl-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hsl-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hsl-3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hsl-4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hsl-5PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hsl-6PASSPASSFAILPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hsla-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.hsla-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.name-1PASSPASSPASSFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.name-2PASSPASSPASSFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.name-3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.name-4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.name-5PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgb-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgb-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgb-3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgb-4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-5.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgb-5PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-6.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgb-6PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-7.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgb-7PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgba-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgba-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgba-3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgba-4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgba-5PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-6.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgba-6PASSPASSFAILPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-7.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.invalid.rgba-7PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgb-clamp-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgb-clamp-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgb-clamp-3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgb-clamp-4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgb-clamp-5PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgb-eofPASSPASSFAILPASSFAILFAIL
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgb-numPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgb-percentPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-clamp-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-clamp-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-eofPASSPASSFAILPASSFAILFAIL
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-num-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-num-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-percentPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-solid-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-solid-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-solid-3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.rgba-solid-4PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.svg-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.svg-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.system.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.systemPASSPASSPASSFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.transparent-1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.htmlOKOKOKOKOKOK
Canvas test: 2d.fillStyle.parse.transparent-2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.empty.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.emptyPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.alphaPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.colourPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.colouralphaFAILPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.multiplePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.outsidePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.overlapPASSPASSFAILPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.overlap2PASSPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.solidPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.verticalPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.zerosize.fillPASSFAILPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.zerosize.fillRectPASSFAILPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.zerosize.fillTextPASSFAILPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.zerosize.strokePASSFAILPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.zerosize.strokeRectPASSFAILPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.interpolate.zerosize.strokeTextPASSFAILPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.linear.nonfinite.htmlOKOKOKOKOKOK
createLinearGradient() throws TypeError if arguments are not finitePASSPASSFAILFAILFAILFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.1.htmlOKOKOKOKOKOK
Linear gradient coordinates are relative to the coordinate space at the time of fillingPASSPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.2.htmlOKOKOKOKOKOK
Linear gradient coordinates are relative to the coordinate space at the time of fillingPASSPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.3.htmlOKOKOKOKOKOK
Linear gradient transforms do not experience broken caching effectsPASSPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.object.compare.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.object.comparePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.object.crosscanvas.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.object.crosscanvasPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.object.current.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.object.currentPASSFAILFAILFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidcolour.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.object.invalidcolourPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidoffset.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.object.invalidoffsetPASSPASSPASSFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.object.return.htmlOKOKOKOKOKOK
createLinearGradient() and createRadialGradient() returns objects implementing CanvasGradientPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.object.type.htmlOKOKOKOKOKOK
window.CanvasGradient exists and has the right propertiesPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.object.update.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.object.updatePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.cone.behindPASSFAILPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.cone.besidePASSFAILPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.cone.bottomPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.cone.cylinderPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.front.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.cone.frontPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.cone.shape1PASSPASSFAILPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.cone.shape2PASSFAILPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.top.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.cone.topPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.equalPASSFAILPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside1.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.inside1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside2.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.inside2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside3.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.inside3PASSPASSFAILPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.htmlOKOKOKOKOKOK
createRadialGradient() throws INDEX_SIZE_ERR if either radius is negativePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.nonfinite.htmlOKOKOKOKOKOK
createRadialGradient() throws TypeError if arguments are not finitePASSPASSFAILFAILFAILFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside1.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.outside1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside2.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.outside2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.outside3FAILPASSFAILPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.touch1PASSFAILFAILPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch2.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.touch2PASSPASSFAILPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.htmlOKOKOKOKOKOK
Canvas test: 2d.gradient.radial.touch3PASSFAILFAILPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.1.htmlOKOKOKOKOKOK
Radial gradient coordinates are relative to the coordinate space at the time of fillingPASSPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.2.htmlOKOKOKOKOKOK
Radial gradient coordinates are relative to the coordinate space at the time of fillingPASSPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.3.htmlOKOKOKOKOKOK
Radial gradient transforms do not experience broken caching effectsPASSPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.htmlOKOKOKOKOKOK
createPattern() of an animated GIF draws the first framePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.basic.canvasPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.basic.image.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.basic.imagePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.basic.nocontext.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.basic.nocontextPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.basic.type.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.basic.typePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.basic.zerocanvasPASSPASSPASSFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.crosscanvas.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.crosscanvasPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.image.broken.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.image.brokenFAILFAILFAILFAILFAILFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.image.incomplete.emptysrcPASSFAILPASSPASSFAILFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.image.incomplete.immediatePASSFAILPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.image.incomplete.nosrcPASSFAILPASSPASSFAILFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.image.incomplete.reloadPASSFAILPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.image.incomplete.removedsrcPASSFAILPASSPASSFAILFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.image.null.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.image.nullPASSPASSFAILFAILFAILFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.image.string.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.image.stringPASSPASSFAILFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.image.undefined.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.image.undefinedPASSPASSFAILFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas1.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.modify.canvas1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas2.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.modify.canvas2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image1.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.modify.image1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image2.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.modify.image2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.norepeat.basicPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.norepeat.coord1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.norepeat.coord2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.norepeat.coord3FAILPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.norepeat.outsidePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.htmlOKOKOKOKOKOK
Canvas patterns do not get flipped when paintedPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.image.htmlOKOKOKOKOKOK
Image patterns do not get flipped when paintedPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeat.basicPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeat.coord1PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeat.coord2PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeat.coord3PASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeat.outsidePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeatx.basicPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeatx.coord1FAILPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeatx.outsidePASSPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeaty.basicPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeaty.coord1FAILPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.paint.repeaty.outsidePASSPASSPASSPASSPASSFAIL
/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.case.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.repeat.casePASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.repeat.emptyPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.repeat.nullPASSPASSPASSFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.repeat.nullsuffixPASSPASSFAILFAILPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.undefined.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.repeat.undefinedPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.repeat.unrecognisedPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.htmlOKOKOKOKOKOK
Canvas test: 2d.pattern.repeat.unrecognisednullPASSPASSPASSPASSPASSPASS
/2dcontext/fill-and-stroke-styles/2d.strokeStyle.default.htmlOKOKOKOKOKOK
Canvas test: 2d.strokeStyle.defaultPASSPASSPASSPASSPASSPASS
/2dcontext/hit-regions/addHitRegions-NotSupportedError-01.htmlOKOKOKOKOKOK
fillRect should not affect current default path and NotSupportedError should be thrown.FAILFAILFAILFAILFAILFAIL
strokeRect should not affect current default path and NotSupportedError should be thrown.FAILFAILFAILFAILFAILFAIL
fillText should not affect current default path and NotSupportedError should be thrown.FAILFAILFAILFAILFAILFAIL
strokeText should not affect current default path and NotSupportedError shuld be thrown.FAILFAILFAILFAILFAILFAIL
/2dcontext/hit-regions/hitregions-members-exist.htmlOKOK---OK
context.addHitRegion ExistsFAILFAIL---FAIL
context.removeHitRegion ExistsFAILFAIL---FAIL
context.clearHitRegions ExistsFAILFAIL---FAIL
/2dcontext/line-styles/2d.line.cap.butt.htmlOKOKOKOKOKOK
lineCap 'butt' is rendered correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.cap.closed.htmlOKOKOKOKOKOK
Line caps are not drawn at the corners of an unclosed rectanglePASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.cap.invalid.htmlOKOKOKOKOKOK
Setting lineCap to invalid values is ignoredPASSPASSFAILFAILPASSPASS
/2dcontext/line-styles/2d.line.cap.open.htmlOKOKOKOKOKOK
Line caps are drawn at the corners of an unclosed rectanglePASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.cap.round.htmlOKOKOKOKOKOK
lineCap 'round' is rendered correctlyPASSPASSPASSPASSFAILPASS
/2dcontext/line-styles/2d.line.cap.square.htmlOKOKOKOKOKOK
lineCap 'square' is rendered correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.cap.valid.htmlOKOKOKOKOKOK
Setting lineCap to valid values worksPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.cross.htmlOKOKOKOKOKOK
Canvas test: 2d.line.crossPASSPASSPASSFAILPASSPASS
/2dcontext/line-styles/2d.line.defaults.htmlOKOKOKOKOKOK
Canvas test: 2d.line.defaultsPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.join.bevel.htmlOKOKOKOKOKOK
lineJoin 'bevel' is rendered correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.join.closed.htmlOKOKOKOKOKOK
Line joins are drawn at the corner of a closed rectanglePASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.join.invalid.htmlOKOKOKOKOKOK
Setting lineJoin to invalid values is ignoredPASSPASSFAILFAILPASSPASS
/2dcontext/line-styles/2d.line.join.miter.htmlOKOKOKOKOKOK
lineJoin 'miter' is rendered correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.join.open.htmlOKOKOKOKOKOK
Line joins are not drawn at the corner of an unclosed rectanglePASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.join.parallel.htmlOKOKOKOKOKOK
Line joins are drawn at 180-degree joinsPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.join.round.htmlOKOKOKOKOKOK
lineJoin 'round' is rendered correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.join.valid.htmlOKOKOKOKOKOK
Setting lineJoin to valid values worksPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.miter.acute.htmlOKOKOKOKOKOK
Miter joins are drawn correctly with acute anglesPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.miter.exceeded.htmlOKOKOKOKOKOK
Miter joins are not drawn when the miter limit is exceededPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.miter.invalid.htmlOKOKOKOKOKOK
Setting miterLimit to invalid values is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.miter.lineedge.htmlOKOKOKOKOKOK
Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectanglePASSPASSFAILPASSFAILFAIL
/2dcontext/line-styles/2d.line.miter.obtuse.htmlOKOKOKOKOKOK
Miter joins are drawn correctly with obtuse anglesPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.miter.rightangle.htmlOKOKOKOKOKOK
Miter joins are not drawn when the miter limit is exceeded, on exact right anglesPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.miter.valid.htmlOKOKOKOKOKOK
Setting miterLimit to valid values worksPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.miter.within.htmlOKOKOKOKOKOK
Miter joins are drawn when the miter limit is not quite exceededPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.union.htmlOKOKOKOKOKOK
Canvas test: 2d.line.unionPASSPASSPASSFAILPASSPASS
/2dcontext/line-styles/2d.line.width.basic.htmlOKOKOKOKOKOK
lineWidth determines the width of line strokesPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.width.invalid.htmlOKOKOKOKOKOK
Setting lineWidth to invalid values is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.width.scaledefault.htmlOKOKOKOKOKOK
Default lineWidth strokes are affected by scale transformationsPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.width.transformed.htmlOKOKOKOKOKOK
Line stroke widths are affected by scale transformationsPASSPASSPASSPASSPASSPASS
/2dcontext/line-styles/2d.line.width.valid.htmlOKOKOKOKOKOK
Setting lineWidth to valid values worksPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.angle.1.htmlOKOKOKOKOKOK
arc() draws pi/2 .. -pi anticlockwise correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.angle.2.htmlOKOKOKOKOKOK
arc() draws -3pi/2 .. -pi anticlockwise correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.angle.3.htmlOKOKOKOKOKOK
arc() wraps angles mod 2pi when anticlockwise and end > start+2piPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.angle.4.htmlOKOKOKOKOKOK
arc() draws a full circle when clockwise and end > start+2piPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.angle.5.htmlOKOKOKOKOKOK
arc() wraps angles mod 2pi when clockwise and start > end+2piPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.angle.6.htmlOKOKOKOKOKOK
arc() draws a full circle when anticlockwise and start > end+2piPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.default.htmlOKOKOKOKOKOK
arc() with missing last argument defaults to clockwisePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.empty.htmlOKOKOKOKOKOK
arc() with an empty path does not draw a straight line to the start pointPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.end.htmlOKOKOKOKOKOK
arc() adds the end point of the arc to the subpathPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.negative.htmlOKOKOKOKOKOK
arc() with negative radius throws INDEX_SIZE_ERRPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.nonempty.htmlOKOKOKOKOKOK
arc() with a non-empty path does draw a straight line to the start pointPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.nonfinite.htmlOKOKOKOKOKOK
arc() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.scale.1.htmlOKOKOKOKOKOK
Non-uniformly scaled arcs are the right shapePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.scale.2.htmlOKOKOKOKOKOK
Highly scaled arcs are the right shapePASSPASSPASSFAILPASSPASS
/2dcontext/path-objects/2d.path.arc.selfintersect.1.htmlOKOKOKOKOKOK
arc() with lineWidth > 2*radius is drawn sensiblyPASSFAILFAILFAILPASSPASS
/2dcontext/path-objects/2d.path.arc.selfintersect.2.htmlOKOKOKOKOKOK
arc() with lineWidth > 2*radius is drawn sensiblyPASSPASSPASSFAILPASSPASS
/2dcontext/path-objects/2d.path.arc.shape.1.htmlOKOKOKOKOKOK
arc() from 0 to pi does not draw anything in the wrong halfPASSPASSPASSFAILPASSPASS
/2dcontext/path-objects/2d.path.arc.shape.2.htmlOKOKOKOKOKOK
arc() from 0 to pi draws stuff in the right halfPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.shape.3.htmlOKOKOKOKOKOK
arc() from 0 to -pi/2 does not draw anything in the wrong quadrantPASSFAILFAILFAILPASSPASS
/2dcontext/path-objects/2d.path.arc.shape.4.htmlOKOKOKOKOKOK
arc() from 0 to -pi/2 draws stuff in the right quadrantPASSPASSPASSFAILPASSPASS
/2dcontext/path-objects/2d.path.arc.shape.5.htmlOKOKOKOKOKOK
arc() from 0 to 5pi does not draw crazy thingsPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.twopie.1.htmlOKOKOKOKOKOK
arc() draws nothing when end = start + 2pi-e and anticlockwisePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.twopie.2.htmlOKOKOKOKOKOK
arc() draws a full circle when end = start + 2pi-e and clockwisePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.twopie.3.htmlOKOKOKOKOKOK
arc() draws a full circle when end = start + 2pi+e and anticlockwisePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.twopie.4.htmlOKOKOKOKOKOK
arc() draws nothing when end = start + 2pi+e and clockwisePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.zero.1.htmlOKOKOKOKOKOK
arc() draws nothing when startAngle = endAngle and anticlockwisePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.zero.2.htmlOKOKOKOKOKOK
arc() draws nothing when startAngle = endAngle and clockwisePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arc.zeroradius.htmlOKOKOKOKOKOK
arc() with zero radius draws a line to the start pointPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.coincide.1.htmlOKOKOKOKOKOK
arcTo() has no effect if P0 = P1PASSPASSPASSFAILPASSPASS
/2dcontext/path-objects/2d.path.arcTo.coincide.2.htmlOKOKOKOKOKOK
arcTo() draws a straight line to P1 if P1 = P2PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.collinear.1.htmlOKOKOKOKOKOK
arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.collinear.2.htmlOKOKOKOKOKOK
arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.collinear.3.htmlOKOKOKOKOKOK
arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.1.htmlOKOKOKOKOKOK
If there is no subpath, the first control point is added (and nothing is drawn up to it)PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.2.htmlOKOKOKOKOKOK
If there is no subpath, the first control point is addedPASSPASSPASSFAILPASSPASS
/2dcontext/path-objects/2d.path.arcTo.negative.htmlOKOKOKOKOKOK
arcTo() with negative radius throws an exceptionPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.nonfinite.htmlOKOKOKOKOKOK
arcTo() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.scale.htmlOKOKOKOKOKOK
arcTo scales the curve, not just the control pointsPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.shape.curve1.htmlOKOKOKOKOKOK
arcTo() curves in the right kind of shapePASSPASSPASSFAILPASSFAIL
/2dcontext/path-objects/2d.path.arcTo.shape.curve2.htmlOKOKOKOKOKOK
arcTo() curves in the right kind of shapePASSPASSPASSPASSPASSFAIL
/2dcontext/path-objects/2d.path.arcTo.shape.end.htmlOKOKOKOKOKOK
arcTo() does not draw anything from P1 to P2PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.shape.start.htmlOKOKOKOKOKOK
arcTo() draws a straight line from P0 to P1PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.transformation.htmlOKOKOKOKOKOK
arcTo joins up to the last subpath point correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.arcTo.zero.1.htmlOKOKOKOKOKOK
arcTo() with zero radius draws a straight line from P0 to P1PASSPASSPASSFAILPASSPASS
/2dcontext/path-objects/2d.path.arcTo.zero.2.htmlOKOKOKOKOKOK
arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinearPASSPASSPASSFAILPASSPASS
/2dcontext/path-objects/2d.path.beginPath.htmlOKOKOKOKOKOK
Canvas test: 2d.path.beginPathPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.bezierCurveTo.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.path.bezierCurveTo.basicPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.htmlOKOKOKOKOKOK
If there is no subpath, the first control point is added (and nothing is drawn up to it)PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.htmlOKOKOKOKOKOK
If there is no subpath, the first control point is addedPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.bezierCurveTo.nonfinite.htmlOKOKOKOKOKOK
bezierCurveTo() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.bezierCurveTo.scaled.htmlOKOKOKOKOKOK
Canvas test: 2d.path.bezierCurveTo.scaledPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.bezierCurveTo.shape.htmlOKOKOKOKOKOK
Canvas test: 2d.path.bezierCurveTo.shapePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.clip.basic.1.htmlOKOKOKOKOKOK
Canvas test: 2d.path.clip.basic.1PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.clip.basic.2.htmlOKOKOKOKOKOK
Canvas test: 2d.path.clip.basic.2PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.clip.empty.htmlOKOKOKOKOKOK
Canvas test: 2d.path.clip.emptyPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.clip.intersect.htmlOKOKOKOKOKOK
Canvas test: 2d.path.clip.intersectPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.clip.unaffected.htmlOKOKOKOKOKOK
Canvas test: 2d.path.clip.unaffectedPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.clip.winding.1.htmlOKOKOKOKOKOK
Canvas test: 2d.path.clip.winding.1PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.clip.winding.2.htmlOKOKOKOKOKOK
Canvas test: 2d.path.clip.winding.2PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.closePath.empty.htmlOKOKOKOKOKOK
Canvas test: 2d.path.closePath.emptyPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.closePath.newline.htmlOKOKOKOKOKOK
Canvas test: 2d.path.closePath.newlinePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.closePath.nextpoint.htmlOKOKOKOKOKOK
Canvas test: 2d.path.closePath.nextpointPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.fill.closed.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.path.fill.closed.basicPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.fill.closed.unaffected.htmlOKOKOKOKOKOK
Canvas test: 2d.path.fill.closed.unaffectedPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.fill.overlap.htmlOKOKOKOKOKOK
Canvas test: 2d.path.fill.overlapPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.fill.winding.add.htmlOKOKOKOKOKOK
Canvas test: 2d.path.fill.winding.addPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.fill.winding.subtract.1.htmlOKOKOKOKOKOK
Canvas test: 2d.path.fill.winding.subtract.1PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.fill.winding.subtract.2.htmlOKOKOKOKOKOK
Canvas test: 2d.path.fill.winding.subtract.2PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.fill.winding.subtract.3.htmlOKOKOKOKOKOK
Canvas test: 2d.path.fill.winding.subtract.3PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.initial.htmlOKOKOKOKOKOK
Canvas test: 2d.path.initialPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.arc.htmlOKOKOKOKOKOK
isPointInPath() works on arcsPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.basic.1.htmlOKOKOKOKOKOK
isPointInPath() detects whether the point is inside the pathPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.basic.2.htmlOKOKOKOKOKOK
isPointInPath() detects whether the point is inside the pathPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.bezier.htmlOKOKOKOKOKOK
isPointInPath() works on Bezier curvesPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.bigarc.htmlOKOKOKOKOKOK
isPointInPath() works on unclosed arcs larger than 2piPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.edge.htmlOKOKOKOKOKOK
isPointInPath() counts points on the path as being insidePASSPASSPASSPASSPASSFAIL
/2dcontext/path-objects/2d.path.isPointInPath.empty.htmlOKOKOKOKOKOK
isPointInPath() works when there is no pathPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.nonfinite.htmlOKOKOKOKOKOK
isPointInPath() returns false for non-finite argumentsPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.outside.htmlOKOKOKOKOKOK
isPointInPath() works on paths outside the canvasPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.subpath.htmlOKOKOKOKOKOK
isPointInPath() uses the current path, not just the subpathPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.transform.1.htmlOKOKOKOKOKOK
isPointInPath() handles transformations correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.transform.2.htmlOKOKOKOKOKOK
isPointInPath() handles transformations correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.transform.3.htmlOKOKOKOKOKOK
isPointInPath() handles transformations correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.transform.4.htmlOKOKOKOKOKOK
isPointInPath() handles transformations correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.unclosed.htmlOKOKOKOKOKOK
isPointInPath() works on unclosed subpathsPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.isPointInPath.winding.htmlOKOKOKOKOKOK
isPointInPath() uses the non-zero winding number rulePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.lineTo.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.path.lineTo.basicPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.1.htmlOKOKOKOKOKOK
If there is no subpath, the point is added and nothing is drawnPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.2.htmlOKOKOKOKOKOK
If there is no subpath, the point is added and used for subsequent drawingPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.lineTo.nextpoint.htmlOKOKOKOKOKOK
Canvas test: 2d.path.lineTo.nextpointPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.lineTo.nonfinite.htmlOKOKOKOKOKOK
lineTo() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.moveTo.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.path.moveTo.basicPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.moveTo.multiple.htmlOKOKOKOKOKOK
Canvas test: 2d.path.moveTo.multiplePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.moveTo.newsubpath.htmlOKOKOKOKOKOK
Canvas test: 2d.path.moveTo.newsubpathPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.moveTo.nonfinite.htmlOKOKOKOKOKOK
moveTo() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.quadraticCurveTo.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.path.quadraticCurveTo.basicPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.htmlOKOKOKOKOKOK
If there is no subpath, the first control point is added (and nothing is drawn up to it)PASSFAILPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.htmlOKOKOKOKOKOK
If there is no subpath, the first control point is addedPASSFAILPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.quadraticCurveTo.nonfinite.htmlOKOKOKOKOKOK
quadraticCurveTo() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.quadraticCurveTo.scaled.htmlOKOKOKOKOKOK
Canvas test: 2d.path.quadraticCurveTo.scaledPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.quadraticCurveTo.shape.htmlOKOKOKOKOKOK
Canvas test: 2d.path.quadraticCurveTo.shapePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.basicPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.closed.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.closedPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.end.1.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.end.1PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.end.2.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.end.2PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.negative.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.negativePASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.newsubpath.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.newsubpathPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.nonfinite.htmlOKOKOKOKOKOK
rect() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.selfintersect.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.selfintersectPASSFAILPASSFAILPASSPASS
/2dcontext/path-objects/2d.path.rect.winding.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.windingPASSPASSPASSPASSFAILPASS
/2dcontext/path-objects/2d.path.rect.zero.1.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.zero.1PASSPASSFAILPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.zero.2.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.zero.2PASSPASSFAILPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.zero.3.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.zero.3PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.zero.4.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.zero.4PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.zero.5.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.zero.5PASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.rect.zero.6.htmlOKOKOKOKOKOK
Canvas test: 2d.path.rect.zero.6PASSFAILPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.empty.htmlOKOKOKOKOKOK
Empty subpaths are not strokedPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.overlap.htmlOKOKOKOKOKOK
Stroked subpaths are combined before being drawnPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.prune.arc.htmlOKOKOKOKOKOK
Zero-length line segments from arcTo and arc are removed before strokingPASSFAILFAILFAILPASSPASS
/2dcontext/path-objects/2d.path.stroke.prune.closed.htmlOKOKOKOKOKOK
Zero-length line segments from closed paths are removed before strokingPASSFAILPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.prune.corner.htmlOKOKOKOKOKOK
Zero-length line segments are removed before stroking with mitersPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.prune.curve.htmlOKOKOKOKOKOK
Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before strokingPASSFAILPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.prune.line.htmlOKOKOKOKOKOK
Zero-length line segments from lineTo are removed before strokingPASSFAILPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.prune.rect.htmlOKOKOKOKOKOK
Zero-length line segments from rect and strokeRect are removed before strokingPASSFAILPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.scale1.htmlOKOKOKOKOKOK
Stroke line widths are scaled by the current transformation matrixPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.scale2.htmlOKOKOKOKOKOK
Stroke line widths are scaled by the current transformation matrixPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.skew.htmlOKOKOKOKOKOK
Strokes lines are skewed by the current transformation matrixPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.unaffected.htmlOKOKOKOKOKOK
Stroking does not start a new path or subpathPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.stroke.union.htmlOKOKOKOKOKOK
Strokes in opposite directions are unioned, not subtractedPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.transformation.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.path.transformation.basicPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.transformation.changing.htmlOKOKOKOKOKOK
Transformations are applied while building paths, not when drawingPASSPASSPASSPASSPASSPASS
/2dcontext/path-objects/2d.path.transformation.multiple.htmlOKOKOKOKOKOK
Transformations are applied while building paths, not when drawingPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create1.basic.htmlOKOKOKOKOKOK
createImageData(imgdata) exists and returns somethingPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create1.initial.htmlOKOKOKOKOKOK
createImageData(imgdata) returns transparent black data of the right sizePASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create1.this.htmlOKOKOKOKOKOK
createImageData(imgdata) should throw when called with the wrong |this|PASSPASSPASSFAILPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create1.type.htmlOKOKOKOKOKOK
createImageData(imgdata) returns an ImageData object containing a Uint8ClampedArray objectPASSPASSFAILPASSPASSFAIL
/2dcontext/pixel-manipulation/2d.imageData.create1.zero.htmlOKOKOKOKOKOK
createImageData(null) throws TypeErrorPASSPASSFAILFAILFAILFAIL
/2dcontext/pixel-manipulation/2d.imageData.create2.basic.htmlOKOKOKOKOKOK
createImageData(sw, sh) exists and returns somethingPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create2.initial.htmlOKOKOKOKOKOK
createImageData(sw, sh) returns transparent black data of the right sizePASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create2.large.htmlOKOKOKOKOKOK
createImageData(sw, sh) works for sizes much larger than the canvasPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create2.negative.htmlOKOKOKOKOKOK
createImageData(sw, sh) takes the absolute magnitude of the size argumentsPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.htmlOKOKOKOKOKOK
createImageData() throws TypeError if arguments are not finitePASSPASSFAILFAILFAILFAIL
/2dcontext/pixel-manipulation/2d.imageData.create2.round.htmlOKOKOKOKOKOK
createImageData(w, h) is rounded the same as getImageData(0, 0, w, h)PASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create2.this.htmlOKOKOKOKOKOK
createImageData(sw, sh) should throw when called with the wrong |this|PASSPASSPASSFAILPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create2.tiny.htmlOKOKOKOKOKOK
createImageData(sw, sh) works for sizes smaller than one pixelPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.create2.type.htmlOKOKOKOKOKOK
createImageData(sw, sh) returns an ImageData object containing a Uint8ClampedArray objectPASSPASSFAILPASSPASSFAIL
/2dcontext/pixel-manipulation/2d.imageData.create2.zero.htmlOKOKOKOKOKOK
createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zeroPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.basic.htmlOKOKOKOKOKOK
getImageData() exists and returns somethingPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.clamp.htmlOKOKOKOKOKOK
getImageData() clamps colours to the range [0, 255]PASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.length.htmlOKOKOKOKOKOK
getImageData() returns a correctly-sized Uint8ClampedArrayPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.nonfinite.htmlOKOKOKOKOKOK
getImageData() throws TypeError if arguments are not finitePASSPASSFAILFAILFAILFAIL
/2dcontext/pixel-manipulation/2d.imageData.get.nonpremul.htmlOKOKOKOKOKOK
getImageData() returns non-premultiplied coloursPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.order.alpha.htmlOKOKOKOKOKOK
getImageData() returns A in the fourth componentPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.order.cols.htmlOKOKOKOKOKOK
getImageData() returns leftmost columns firstPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.order.rgb.htmlOKOKOKOKOKOK
getImageData() returns R then G then BPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.order.rows.htmlOKOKOKOKOKOK
getImageData() returns topmost rows firstPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.range.htmlOKOKOKOKOKOK
getImageData() returns values in the range [0, 255]PASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.source.negative.htmlOKOKOKOKOKOK
getImageData() works with negative width and height, and returns top-to-bottom left-to-rightPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.source.outside.htmlOKOKOKOKOKOK
getImageData() returns transparent black outside the canvasPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.source.size.htmlOKOKOKOKOKOK
getImageData() returns bigger ImageData for bigger source rectanglePASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.tiny.htmlOKOKOKOKOKOK
getImageData() works for sizes smaller than one pixelPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.type.htmlOKOKOKOKOKOK
getImageData() returns an ImageData object containing a Uint8ClampedArray objectPASSPASSFAILPASSPASSFAIL
/2dcontext/pixel-manipulation/2d.imageData.get.unaffected.htmlOKOKOKOKOKOK
getImageData() is not affected by context statePASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.get.zero.htmlOKOKOKOKOKOK
getImageData() throws INDEX_SIZE_ERR if size is zeroPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.object.clamp.htmlOKOKOKOKOKOK
ImageData.data clamps numbers to [0, 255]PASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.object.ctor.htmlOKOKOKOKOKOK
ImageData does not have a usable constructorFAILFAILPASSFAILFAILPASS
/2dcontext/pixel-manipulation/2d.imageData.object.nan.htmlOKOKOKOKOKOK
ImageData.data converts NaN to 0PASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.object.properties.htmlOKOKOKOKOKOK
ImageData objects have the right propertiesPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.object.readonly.htmlOKOKOKOKOKOK
ImageData objects properties are read-onlyPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.object.round.htmlOKOKOKOKOKOK
ImageData.data rounds numbers with round-to-zeroPASSPASSFAILPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.object.set.htmlOKOKOKOKOKOK
ImageData.data can be modifiedPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.object.string.htmlOKOKOKOKOKOK
ImageData.data converts strings to numbers with ToNumberPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.object.undefined.htmlOKOKOKOKOKOK
ImageData.data converts undefined to 0PASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.alpha.htmlOKOKOKOKOKOK
putImageData() puts non-solid image data correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.basic.htmlOKOKOKOKOKOK
putImageData() puts image data from getImageData() onto the canvasPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.clip.htmlOKOKOKOKOKOK
putImageData() is not affected by clipping regionsPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.created.htmlOKOKOKOKOKOK
putImageData() puts image data from createImageData() onto the canvasPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.cross.htmlOKOKOKOKOKOK
putImageData() accepts image data got from a different canvasPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.dirty.negative.htmlOKOKOKOKOKOK
putImageData() handles negative-sized dirty rectangles correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.dirty.outside.htmlOKOKOKOKOKOK
putImageData() handles dirty rectangles outside the canvas correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect1.htmlOKOKOKOKOKOK
putImageData() only modifies areas inside the dirty rectangle, using width and heightPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect2.htmlOKOKOKOKOKOK
putImageData() only modifies areas inside the dirty rectangle, using x and yPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.dirty.zero.htmlOKOKOKOKOKOK
putImageData() with zero-sized dirty rectangle puts nothingPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.modified.htmlOKOKOKOKOKOK
putImageData() puts modified image data correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.nonfinite.htmlOKOKOKOKOKOK
putImageData() throws TypeError if arguments are not finitePASSPASSFAILFAILFAILFAIL
/2dcontext/pixel-manipulation/2d.imageData.put.null.htmlOKOKOKOKOKOK
putImageData() with null imagedata throws TypeErrorPASSPASSFAILFAILFAILFAIL
/2dcontext/pixel-manipulation/2d.imageData.put.path.htmlOKOKOKOKOKOK
putImageData() does not affect the current pathPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.unaffected.htmlOKOKOKOKOKOK
putImageData() is not affected by context statePASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.unchanged.htmlOKOKOKOKOKOK
putImageData(getImageData(...), ...) has no effectPASSPASSPASSPASSPASSPASS
/2dcontext/pixel-manipulation/2d.imageData.put.wrongtype.htmlOKOKOKOKOKOK
putImageData() does not accept non-ImageData objectsPASSPASSFAILFAILPASSPASS
/2dcontext/shadows/2d.shadow.alpha.1.htmlOKOKOKOKOKOK
Shadow colour alpha components are usedPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.alpha.2.htmlOKOKOKOKOKOK
Shadow colour alpha components are usedPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.alpha.3.htmlOKOKOKOKOKOK
Shadows are affected by globalAlphaPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.alpha.4.htmlOKOKOKOKOKOK
Shadows with alpha components are correctly affected by globalAlphaPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.alpha.5.htmlOKOKOKOKOKOK
Shadows of shapes with alpha components are drawn correctlyPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.attributes.shadowBlur.initial.htmlOKOKOKOKOKOK
Canvas test: 2d.shadow.attributes.shadowBlur.initialPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.htmlOKOKOKOKOKOK
Canvas test: 2d.shadow.attributes.shadowBlur.invalidPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.attributes.shadowBlur.valid.htmlOKOKOKOKOKOK
Canvas test: 2d.shadow.attributes.shadowBlur.validPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.attributes.shadowColor.initial.htmlOKOKOKOKOKOK
Canvas test: 2d.shadow.attributes.shadowColor.initialPASSPASSPASSFAILPASSPASS
/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.htmlOKOKOKOKOKOK
Canvas test: 2d.shadow.attributes.shadowColor.invalidPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.attributes.shadowColor.valid.htmlOKOKOKOKOKOK
Canvas test: 2d.shadow.attributes.shadowColor.validPASSPASSPASSFAILPASSPASS
/2dcontext/shadows/2d.shadow.attributes.shadowOffset.initial.htmlOKOKOKOKOKOK
Canvas test: 2d.shadow.attributes.shadowOffset.initialPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.htmlOKOKOKOKOKOK
Canvas test: 2d.shadow.attributes.shadowOffset.invalidPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.attributes.shadowOffset.valid.htmlOKOKOKOKOKOK
Canvas test: 2d.shadow.attributes.shadowOffset.validPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.canvas.alpha.htmlOKOKOKOKOKOK
Shadows are drawn correctly for partially-transparent canvasesPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.canvas.basic.htmlOKOKOKOKOKOK
Shadows are drawn for canvasesPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.canvas.transparent.1.htmlOKOKOKOKOKOK
Shadows are not drawn for transparent canvasesPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.canvas.transparent.2.htmlOKOKOKOKOKOK
Shadows are not drawn for transparent parts of canvasesPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.clip.1.htmlOKOKOKOKOKOK
Shadows of clipped shapes are still drawn within the clipping regionPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.clip.2.htmlOKOKOKOKOKOK
Shadows are not drawn outside the clipping regionPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.clip.3.htmlOKOKOKOKOKOK
Shadows of clipped shapes are still drawn within the clipping regionPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.composite.1.htmlOKOKOKOKOKOK
Shadows are drawn using globalCompositeOperationPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.composite.2.htmlOKOKOKOKOKOK
Shadows are drawn using globalCompositeOperationPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.composite.3.htmlOKOKOKOKOKOK
Areas outside shadows are drawn correctly with destination-outPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.enable.blur.htmlOKOKOKOKOKOK
Shadows are drawn if shadowBlur is setPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.enable.off.1.htmlOKOKOKOKOKOK
Shadows are not drawn when only shadowColor is setPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.enable.off.2.htmlOKOKOKOKOKOK
Shadows are not drawn when only shadowColor is setPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.enable.x.htmlOKOKOKOKOKOK
Shadows are drawn if shadowOffsetX is setPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.enable.y.htmlOKOKOKOKOKOK
Shadows are drawn if shadowOffsetY is setPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.gradient.alpha.htmlOKOKOKOKOKOK
Shadows are drawn correctly for partially-transparent gradient fillsPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.gradient.basic.htmlOKOKOKOKOKOK
Shadows are drawn for gradient fillsPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.gradient.transparent.1.htmlOKOKOKOKOKOK
Shadows are not drawn for transparent gradient fillsPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.gradient.transparent.2.htmlOKOKOKOKOKOK
Shadows are not drawn for transparent parts of gradient fillsPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.image.alpha.htmlOKOKOKOKOKOK
Shadows are drawn correctly for partially-transparent imagesPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.image.basic.htmlOKOKOKOKOKOK
Shadows are drawn for imagesPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.image.scale.htmlOKOKOKOKOKOK
Shadows are drawn correctly for scaled imagesPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.image.section.htmlOKOKOKOKOKOK
Shadows are not drawn for areas outside image source rectanglesPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.image.transparent.1.htmlOKOKOKOKOKOK
Shadows are not drawn for transparent imagesPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.image.transparent.2.htmlOKOKOKOKOKOK
Shadows are not drawn for transparent parts of imagesPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.offset.negativeX.htmlOKOKOKOKOKOK
Shadows can be offset with negative xPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.offset.negativeY.htmlOKOKOKOKOKOK
Shadows can be offset with negative yPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.offset.positiveX.htmlOKOKOKOKOKOK
Shadows can be offset with positive xPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.offset.positiveY.htmlOKOKOKOKOKOK
Shadows can be offset with positive yPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.outside.htmlOKOKOKOKOKOK
Shadows of shapes outside the visible area can be offset onto the visible areaPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.pattern.alpha.htmlOKOKOKOKOKOK
Shadows are drawn correctly for partially-transparent fill patternsPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.pattern.basic.htmlOKOKOKOKOKOK
Shadows are drawn for fill patternsPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.pattern.transparent.1.htmlOKOKOKOKOKOK
Shadows are not drawn for transparent fill patternsPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.pattern.transparent.2.htmlOKOKOKOKOKOK
Shadows are not drawn for transparent parts of fill patternsPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.stroke.basic.htmlOKOKOKOKOKOK
Shadows are drawn for strokesPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.stroke.cap.1.htmlOKOKOKOKOKOK
Shadows are not drawn for areas outside stroke capsPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.stroke.cap.2.htmlOKOKOKOKOKOK
Shadows are drawn for stroke capsPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.stroke.join.1.htmlOKOKOKOKOKOK
Shadows are not drawn for areas outside stroke joinsPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.stroke.join.2.htmlOKOKOKOKOKOK
Shadows are drawn for stroke joinsPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.stroke.join.3.htmlOKOKOKOKOKOK
Shadows are drawn for stroke joins respecting miter limitPASSPASSPASSPASSPASSPASS
/2dcontext/shadows/2d.shadow.transform.1.htmlOKOKOKOKOKOK
Shadows take account of transformationsPASSPASSPASSPASSPASSFAIL
/2dcontext/shadows/2d.shadow.transform.2.htmlOKOKOKOKOKOK
Shadow offsets are not affected by transformationsPASSPASSPASSPASSPASSPASS
/2dcontext/text-styles/2d.text.align.default.htmlOKOKOKOKOKOK
Canvas test: 2d.text.align.defaultPASSPASSPASSPASSPASSPASS
/2dcontext/text-styles/2d.text.align.invalid.htmlOKOKOKOKOKOK
Canvas test: 2d.text.align.invalidPASSPASSFAILFAILPASSPASS
/2dcontext/text-styles/2d.text.align.valid.htmlOKOKOKOKOKOK
Canvas test: 2d.text.align.validPASSPASSPASSPASSPASSPASS
/2dcontext/text-styles/2d.text.baseline.default.htmlOKOKOKOKOKOK
Canvas test: 2d.text.baseline.defaultPASSPASSPASSPASSPASSPASS
/2dcontext/text-styles/2d.text.baseline.invalid.htmlOKOKOKOKOKOK
Canvas test: 2d.text.baseline.invalidPASSPASSFAILFAILPASSPASS
/2dcontext/text-styles/2d.text.baseline.valid.htmlOKOKOKOKOKOK
Canvas test: 2d.text.baseline.validPASSPASSPASSPASSPASSPASS
/2dcontext/text-styles/2d.text.draw.baseline.bottom.htmlOKOKOKOKOKOK
textBaseline bottom is the bottom of the em square (not the bounding box)FAILPASSPASSPASSPASSFAIL
/2dcontext/text-styles/2d.text.draw.baseline.hanging.htmlOKOKOKOKOKOK
Canvas test: 2d.text.draw.baseline.hangingFAILFAILPASSPASSPASSFAIL
/2dcontext/text-styles/2d.text.draw.baseline.ideographic.htmlOKOKOKOKOKOK
Canvas test: 2d.text.draw.baseline.ideographicFAILFAILPASSPASSPASSFAIL
/2dcontext/text-styles/2d.text.draw.baseline.middle.htmlOKOKOKOKOKOK
textBaseline middle is the middle of the em square (not the bounding box)FAILPASSPASSPASSPASSFAIL
/2dcontext/text-styles/2d.text.draw.baseline.top.htmlOKOKOKOKOKOK
textBaseline top is the top of the em square (not the bounding box)FAILPASSPASSPASSPASSFAIL
/2dcontext/text-styles/2d.text.draw.space.collapse.end.htmlOKOKOKOKOKOK
Space characters at the end of a line are collapsed (per CSS)FAILFAILPASSPASSPASSFAIL
/2dcontext/text-styles/2d.text.draw.space.collapse.other.htmlOKOKOKOKOKOK
Space characters are converted to U+0020, and collapsed (per CSS)FAILFAILPASSPASSPASSFAIL
/2dcontext/text-styles/2d.text.draw.space.collapse.space.htmlOKOKOKOKOKOK
Space characters are converted to U+0020, and collapsed (per CSS)FAILFAILPASSPASSPASSFAIL
/2dcontext/text-styles/2d.text.draw.space.collapse.start.htmlOKOKOKOKOKOK
Space characters at the start of a line are collapsed (per CSS)FAILFAILPASSPASSPASSFAIL
/2dcontext/text-styles/2d.text.font.default.htmlOKOKOKOKOKOK
Canvas test: 2d.text.font.defaultPASSPASSPASSPASSPASSPASS
/2dcontext/text-styles/2d.text.font.parse.basic.htmlOKOKOKOKOKOK
Canvas test: 2d.text.font.parse.basicPASSPASSFAILPASSPASSFAIL
/2dcontext/text-styles/2d.text.font.parse.complex.htmlOKOKOKOKOKOK
Canvas test: 2d.text.font.parse.complexPASSFAILFAILPASSPASSFAIL
/2dcontext/text-styles/2d.text.font.parse.invalid.htmlOKOKOKOKOKOK
Canvas test: 2d.text.font.parse.invalidPASSPASSFAILFAILPASSFAIL
/2dcontext/text-styles/2d.text.font.parse.size.percentage.default.htmlOKOKOKOKOKOK
Canvas test: 2d.text.font.parse.size.percentage.defaultPASSFAILFAILFAILPASSFAIL
/2dcontext/text-styles/2d.text.font.parse.size.percentage.htmlOKOKOKOKOKOK
Canvas test: 2d.text.font.parse.size.percentagePASSFAILFAILFAILPASSFAIL
/2dcontext/text-styles/2d.text.font.parse.system.htmlOKOKOKOKOKOK
System fonts must be computed to explicit valuesPASSPASSFAILFAILPASSFAIL
/2dcontext/text-styles/2d.text.measure.width.space.htmlOKOKOKOKOKOK
Space characters are converted to U+0020 and collapsed (per CSS)FAILFAILPASSPASSPASSFAIL
/2dcontext/the-canvas-state/2d.state.saverestore.bitmap.htmlOKOKOKOKOKOK
save()/restore() does not affect the current bitmapPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.clip.htmlOKOKOKOKOKOK
save()/restore() affects the clipping pathPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.fillStyle.htmlOKOKOKOKOKOK
save()/restore() works for fillStylePASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.font.htmlOKOKOKOKOKOK
save()/restore() works for fontPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.globalAlpha.htmlOKOKOKOKOKOK
save()/restore() works for globalAlphaPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.htmlOKOKOKOKOKOK
save()/restore() works for globalCompositeOperationPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.lineCap.htmlOKOKOKOKOKOK
save()/restore() works for lineCapPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.lineJoin.htmlOKOKOKOKOKOK
save()/restore() works for lineJoinPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.lineWidth.htmlOKOKOKOKOKOK
save()/restore() works for lineWidthPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.miterLimit.htmlOKOKOKOKOKOK
save()/restore() works for miterLimitPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.path.htmlOKOKOKOKOKOK
save()/restore() does not affect the current pathPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.shadowBlur.htmlOKOKOKOKOKOK
save()/restore() works for shadowBlurPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.shadowColor.htmlOKOKOKOKOKOK
save()/restore() works for shadowColorPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetX.htmlOKOKOKOKOKOK
save()/restore() works for shadowOffsetXPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetY.htmlOKOKOKOKOKOK
save()/restore() works for shadowOffsetYPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.stack.htmlOKOKOKOKOKOK
save()/restore() can be nested as a stackPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.stackdepth.htmlOKOKOKOKOKOK
save()/restore() stack depth is not unreasonably limitedPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.strokeStyle.htmlOKOKOKOKOKOK
save()/restore() works for strokeStylePASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.textAlign.htmlOKOKOKOKOKOK
save()/restore() works for textAlignPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.textBaseline.htmlOKOKOKOKOKOK
save()/restore() works for textBaselinePASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.transformation.htmlOKOKOKOKOKOK
save()/restore() affects the current transformation matrixPASSPASSPASSPASSPASSPASS
/2dcontext/the-canvas-state/2d.state.saverestore.underflow.htmlOKOKOKOKOKOK
restore() with an empty stack has no effectPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.order.htmlOKOKOKOKOKOK
Transformations are applied in the right orderPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.rotate.direction.htmlOKOKOKOKOKOK
rotate() is clockwisePASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.rotate.nonfinite.htmlOKOKOKOKOKOK
rotate() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.rotate.radians.htmlOKOKOKOKOKOK
rotate() uses radiansPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.rotate.wrap.htmlOKOKOKOKOKOK
rotate() wraps large positive values correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.rotate.wrapnegative.htmlOKOKOKOKOKOK
rotate() wraps large negative values correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.rotate.zero.htmlOKOKOKOKOKOK
rotate() by 0 does nothingPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.scale.basic.htmlOKOKOKOKOKOK
scale() worksPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.scale.large.htmlOKOKOKOKOKOK
scale() with large scale factors worksPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.scale.multiple.htmlOKOKOKOKOKOK
Multiple scale()s combinePASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.scale.negative.htmlOKOKOKOKOKOK
scale() with negative scale factors worksPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.scale.nonfinite.htmlOKOKOKOKOKOK
scale() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.scale.zero.htmlOKOKOKOKOKOK
scale() with a scale factor of zero worksPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.setTransform.multiple.htmlOKOKOKOKOKOK
Canvas test: 2d.transformation.setTransform.multiplePASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.setTransform.nonfinite.htmlOKOKOKOKOKOK
setTransform() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.setTransform.skewed.htmlOKOKOKOKOKOK
Canvas test: 2d.transformation.setTransform.skewedPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.transform.identity.htmlOKOKOKOKOKOK
transform() with the identity matrix does nothingPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.transform.multiply.htmlOKOKOKOKOKOK
transform() multiplies the CTMPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.transform.nonfinite.htmlOKOKOKOKOKOK
transform() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.transform.skewed.htmlOKOKOKOKOKOK
transform() with skewy matrix transforms correctlyPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.translate.basic.htmlOKOKOKOKOKOK
translate() worksPASSPASSPASSPASSPASSPASS
/2dcontext/transformations/2d.transformation.translate.nonfinite.htmlOKOKOKOKOKOK
translate() with Infinity/NaN is ignoredPASSPASSPASSPASSPASSPASS