Test files: 811; Total subtests: 1337
| Test | Sf12 |
|---|---|
| /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.case.html | OK |
| Canvas test: 2d.pattern.repeat.case | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html | OK |
| Canvas test: 2d.fillStyle.get.semitransparent | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html | OK |
| textAlign end with ltr is the right edge | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.transform.2.html | OK |
| isPointInPath() handles transformations correctly | PASS |
| /2dcontext/line-styles/2d.line.join.miter.html | OK |
| lineJoin 'miter' is rendered correctly | PASS |
| /2dcontext/shadows/canvas_shadows_001.htm | OK |
| linear gradient fillRect draws shadow (black rectange) | PASS |
| /2dcontext/shadows/2d.shadow.image.transparent.2.html | OK |
| Shadows are not drawn for transparent parts of images | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html | OK |
| strokeText does not start a new path or subpath | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.html | OK |
| Canvas test: 2d.gradient.radial.touch3 | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.path.html | OK |
| clearRect does not affect the current path | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.1.html | OK |
| Canvas test: 2d.drawImage.self.1 | PASS |
| /2dcontext/path-objects/2d.path.stroke.prune.arc.html | OK |
| Zero-length line segments from arcTo and arc are removed before stroking | PASS |
| /2dcontext/shadows/2d.shadow.stroke.basic.html | OK |
| Shadows are drawn for strokes | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.svg.html | OK |
| drawImage() of an SVG image | PASS |
| /2dcontext/compositing/2d.composite.image.destination-in.html | OK |
| Canvas test: 2d.composite.image.destination-in | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.modified.html | OK |
| putImageData() puts modified image data correctly | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html | OK |
| Canvas test: 2d.fillStyle.parse.hex3 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.clamp.html | OK |
| ImageData.data clamps numbers to [0, 255] | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.alpha.html | OK |
| putImageData() puts non-solid image data correctly | PASS |
| /2dcontext/compositing/2d.composite.transparent.destination-in.html | OK |
| Canvas test: 2d.composite.transparent.destination-in | PASS |
| /2dcontext/shadows/2d.shadow.attributes.shadowColor.initial.html | OK |
| Canvas test: 2d.shadow.attributes.shadowColor.initial | PASS |
| /2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.html | OK |
| drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/line-styles/2d.line.miter.acute.html | OK |
| Miter joins are drawn correctly with acute angles | PASS |
| /2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html | OK |
| Load a 100x100 image to a SVG image and draw it to a 100x100 canvas. | FAIL |
| /2dcontext/path-objects/2d.path.stroke.prune.line.html | OK |
| Zero-length line segments from lineTo are removed before stroking | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html | OK |
| Canvas test: 2d.gradient.interpolate.multiple | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create1.zero.html | OK |
| createImageData(null) throws TypeError | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-solid-3 | PASS |
| /2dcontext/hit-regions/hitregions-members-exist.html | OK |
| context.addHitRegion Exists | FAIL |
| context.clearHitRegions Exists | FAIL |
| context.removeHitRegion Exists | FAIL |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html | OK |
| textAlign left is the left of the first em square (not the bounding box) | PASS |
| /2dcontext/path-objects/2d.path.arcTo.transformation.html | OK |
| arcTo joins up to the last subpath point correctly | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.null.html | OK |
| putImageData() with null imagedata throws TypeError | PASS |
| /2dcontext/wide-gamut-canvas/canvas-colorManaged-convertToBlob-roundtrip.html | ERROR |
| Test canvas convertToBlob(): mimeType: image/png, blobPixelFormat: uint8, source color space: srgb, pixel format: uint8, alpha: 0.5 | NOTRUN |
| /2dcontext/shadows/2d.shadow.gradient.alpha.html | OK |
| Shadows are drawn correctly for partially-transparent gradient fills | PASS |
| /2dcontext/text-styles/2d.text.draw.space.collapse.space.html | OK |
| Space characters are converted to U+0020, and collapsed (per CSS) | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgb-3 | FAIL |
| /2dcontext/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html | ERROR |
| Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png | TIMEOUT |
| Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png | TIMEOUT |
| Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png | TIMEOUT |
| /2dcontext/the-canvas-state/2d.state.saverestore.textAlign.html | OK |
| save()/restore() works for textAlign | PASS |
| /2dcontext/path-objects/2d.path.arc.shape.4.html | OK |
| arc() from 0 to -pi/2 draws stuff in the right quadrant | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create2.zero.html | OK |
| createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero | FAIL |
| /2dcontext/line-styles/2d.line.cap.open.html | OK |
| Line caps are drawn at the corners of an unclosed rectangle | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html | OK |
| Canvas test: 2d.pattern.paint.repeaty.basic | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html | OK |
| Canvas test: 2d.pattern.repeat.nullsuffix | PASS |
| /2dcontext/imagebitmap/createImageBitmap-drawImage.html | OK |
| createImageBitmap from a Blob resized, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a Blob scaled down, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a Blob scaled up, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a Blob with negative sw/sh, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a Blob, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a bitmap HTMLImageElement resized, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a bitmap HTMLImageElement scaled down, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a bitmap HTMLImageElement scaled up, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a bitmap HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a bitmap HTMLImageElement, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a bitmap SVGImageElement resized, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from a bitmap SVGImageElement scaled down, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from a bitmap SVGImageElement scaled up, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from a bitmap SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from a bitmap SVGImageElement, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from a vector HTMLImageElement resized, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a vector HTMLImageElement scaled down, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a vector HTMLImageElement scaled up, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a vector HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a vector HTMLImageElement, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from a vector SVGImageElement resized, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from a vector SVGImageElement scaled down, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from a vector SVGImageElement scaled up, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from a vector SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from a vector SVGImageElement, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an HTMLCanvasElement resized, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLCanvasElement scaled down, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLCanvasElement scaled up, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLCanvasElement with negative sw/sh, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLCanvasElement, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement from a data URL resized, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement from a data URL scaled down, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement from a data URL scaled up, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement from a data URL with negative sw/sh, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement from a data URL, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement resized, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement scaled down, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement scaled up, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement with negative sw/sh, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an HTMLVideoElement, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an ImageBitmap resized, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an ImageBitmap scaled down, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an ImageBitmap scaled up, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an ImageBitmap with negative sw/sh, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an ImageBitmap, and drawImage on the created ImageBitmap | PASS |
| createImageBitmap from an ImageData resized, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an ImageData scaled down, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an ImageData scaled up, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an ImageData with negative sw/sh, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an ImageData, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an OffscreenCanvas resized, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an OffscreenCanvas scaled down, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an OffscreenCanvas scaled up, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an OffscreenCanvas with negative sw/sh, and drawImage on the created ImageBitmap | FAIL |
| createImageBitmap from an OffscreenCanvas, and drawImage on the created ImageBitmap | FAIL |
| /2dcontext/shadows/2d.shadow.enable.x.html | OK |
| Shadows are drawn if shadowOffsetX is set | PASS |
| /2dcontext/line-styles/2d.line.miter.exceeded.html | OK |
| Miter joins are not drawn when the miter limit is exceeded | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.unchanged.html | OK |
| putImageData(getImageData(...), ...) has no effect | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.3.html | OK |
| Radial gradient transforms do not experience broken caching effects | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html | OK |
| Canvas test: 2d.fillStyle.parse.rgb-percent | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.path.html | OK |
| fillRect does not affect the current path | PASS |
| /2dcontext/compositing/2d.composite.uncovered.nocontext.copy.html | OK |
| drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.2.html | OK |
| Canvas test: 2d.drawImage.self.2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html | OK |
| Canvas test: 2d.gradient.interpolate.zerosize.fill | PASS |
| /2dcontext/path-objects/2d.path.arc.nonfinite.html | OK |
| arc() with Infinity/NaN is ignored | PASS |
| /2dcontext/path-objects/2d.path.arc.negative.html | OK |
| arc() with negative radius throws INDEX_SIZE_ERR | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html | OK |
| fillText handles maxWidth correctly | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.bounds.html | OK |
| ImageData has a usable constructor | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.properties.html | OK |
| ImageData objects have the right properties | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsla-2 | PASS |
| /2dcontext/compositing/2d.composite.globalAlpha.canvas.html | OK |
| Canvas test: 2d.composite.globalAlpha.canvas | PASS |
| /2dcontext/path-objects/2d.path.lineTo.ensuresubpath.1.html | OK |
| If there is no subpath, the point is added and nothing is drawn | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html | OK |
| Canvas test: 2d.drawImage.incomplete.immediate | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html | OK |
| Canvas test: 2d.pattern.paint.norepeat.coord2 | PASS |
| /2dcontext/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html | OK |
| Test drawing color managed OffscreenCanvas: Canvas color params: srgb, float16; OffscreenCanvas color params: srgb, float16 | FAIL |
| Test drawing color managed OffscreenCanvas: Canvas color params: srgb, float16; OffscreenCanvas color params: srgb, uint8 | FAIL |
| Test drawing color managed OffscreenCanvas: Canvas color params: srgb, uint8; OffscreenCanvas color params: srgb, float16 | FAIL |
| Test drawing color managed OffscreenCanvas: Canvas color params: srgb, uint8; OffscreenCanvas color params: srgb, uint8 | FAIL |
| /2dcontext/text-styles/2d.text.font.parse.tiny.html | OK |
| Canvas test: 2d.text.font.parse.tiny | PASS |
| /2dcontext/line-styles/2d.line.join.open.html | OK |
| Line joins are not drawn at the corner of an unclosed rectangle | PASS |
| /2dcontext/text-styles/2d.text.baseline.default.html | OK |
| Canvas test: 2d.text.baseline.default | PASS |
| /2dcontext/path-objects/2d.path.arc.selfintersect.1.html | OK |
| arc() with lineWidth > 2*radius is drawn sensibly | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.nonfinite.html | OK |
| putImageData() throws TypeError if arguments are not finite | PASS |
| /2dcontext/path-objects/2d.path.arcTo.nonfinite.html | OK |
| arcTo() with Infinity/NaN is ignored | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html | OK |
| Canvas test: 2d.gradient.interpolate.vertical | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create1.type.html | OK |
| createImageData(imgdata) returns an ImageData object containing a Uint8ClampedArray object | PASS |
| /2dcontext/shadows/2d.shadow.alpha.5.html | OK |
| Shadows of shapes with alpha components are drawn correctly | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.front.html | OK |
| Canvas test: 2d.gradient.radial.cone.front | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsl-2 | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.path.html | OK |
| Canvas test: 2d.drawImage.path | PASS |
| /2dcontext/line-styles/2d.line.join.invalid.html | OK |
| Setting lineJoin to invalid values is ignored | PASS |
| /2dcontext/compositing/2d.composite.solid.lighter.html | OK |
| Canvas test: 2d.composite.solid.lighter | PASS |
| /2dcontext/path-objects/2d.path.fill.closed.unaffected.html | OK |
| Canvas test: 2d.path.fill.closed.unaffected | PASS |
| /2dcontext/path-objects/2d.path.arc.twopie.4.html | OK |
| arc() draws nothing when end = start + 2pi+e and clockwise | PASS |
| /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.html | OK |
| drawFocusIfNeeded draws a focus ring. | PASS |
| /2dcontext/shadows/2d.shadow.offset.positiveX.html | OK |
| Shadows can be offset with positive x | PASS |
| /2dcontext/path-objects/2d.path.quadraticCurveTo.shape.html | OK |
| Canvas test: 2d.path.quadraticCurveTo.shape | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hsla-1 | PASS |
| /2dcontext/compositing/2d.composite.clip.destination-atop.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hsla-3 | PASS |
| /2dcontext/transformations/2d.transformation.setTransform.multiple.html | OK |
| Canvas test: 2d.transformation.setTransform.multiple | PASS |
| /2dcontext/path-objects/2d.path.lineTo.basic.html | OK |
| Canvas test: 2d.path.lineTo.basic | PASS |
| /2dcontext/line-styles/2d.line.miter.within.html | OK |
| Miter joins are drawn when the miter limit is not quite exceeded | PASS |
| /2dcontext/text-styles/2d.text.draw.baseline.alphabetic.html | OK |
| Canvas test: 2d.text.draw.baseline.alphabetic | PASS |
| /2dcontext/path-objects/2d.path.quadraticCurveTo.nonfinite.html | OK |
| quadraticCurveTo() with Infinity/NaN is ignored | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html | OK |
| drawImage with zero-sized source rectangle draws nothing without exception | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.gradient.object.update.html | OK |
| Canvas test: 2d.gradient.object.update | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html | OK |
| Canvas test: 2d.gradient.object.invalidoffset | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsla-1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html | OK |
| Canvas test: 2d.gradient.radial.cone.shape1 | FAIL |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html | OK |
| fillText handles maxWidth based on line size, not bounding box size | PASS |
| /2dcontext/text-styles/2d.text.draw.baseline.ideographic.html | OK |
| Canvas test: 2d.text.draw.baseline.ideographic | FAIL |
| /2dcontext/imagebitmap/createImageBitmap-sizeOverflow.html | OK |
| createImageBitmap does not crash or reject the promise when passing very large sh | FAIL |
| createImageBitmap does not crash or reject the promise when passing very large sw | FAIL |
| createImageBitmap does not crash or reject the promise when passing very large sx | FAIL |
| createImageBitmap does not crash or reject the promise when passing very large sx, sy, sw and sh | FAIL |
| createImageBitmap does not crash or reject the promise when passing very large sy | FAIL |
| /2dcontext/pixel-manipulation/2d.imageData.put.dirty.negative.html | OK |
| putImageData() handles negative-sized dirty rectangles correctly | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html | OK |
| Canvas test: 2d.fillStyle.parse.hex4 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.image.null.html | OK |
| Canvas test: 2d.pattern.image.null | PASS |
| /2dcontext/text-styles/2d.text.draw.space.collapse.end.html | OK |
| Space characters at the end of a line are collapsed (per CSS) | FAIL |
| /2dcontext/path-objects/2d.path.isPointInPath.empty.html | OK |
| isPointInPath() works when there is no path | PASS |
| /2dcontext/path-objects/2d.path.stroke.scale2.html | OK |
| Stroke line widths are scaled by the current transformation matrix | FAIL |
| /2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.html | OK |
| Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/path-objects/2d.path.stroke.union.html | OK |
| Strokes in opposite directions are unioned, not subtracted | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html | OK |
| clearRect of zero pixels has no effect | PASS |
| /2dcontext/path-objects/2d.path.clip.intersect.html | OK |
| Canvas test: 2d.path.clip.intersect | PASS |
| /2dcontext/path-objects/2d.path.arc.shape.1.html | OK |
| arc() from 0 to pi does not draw anything in the wrong half | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.string.html | OK |
| ImageData.data converts strings to numbers with ToNumber | PASS |
| /2dcontext/path-objects/2d.path.arcTo.zero.1.html | OK |
| arcTo() with zero radius draws a straight line from P0 to P1 | PASS |
| /2dcontext/path-objects/2d.path.closePath.nextpoint.html | OK |
| Canvas test: 2d.path.closePath.nextpoint | PASS |
| /2dcontext/compositing/2d.composite.canvas.source-over.html | OK |
| Canvas test: 2d.composite.canvas.source-over | PASS |
| /2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.html | OK |
| drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/line-styles/2d.line.cap.butt.html | OK |
| lineCap 'butt' is rendered correctly | PASS |
| /2dcontext/path-objects/2d.path.quadraticCurveTo.scaled.html | OK |
| Canvas test: 2d.path.quadraticCurveTo.scaled | PASS |
| /2dcontext/path-objects/2d.path.bezierCurveTo.scaled.html | OK |
| Canvas test: 2d.path.bezierCurveTo.scaled | PASS |
| /2dcontext/path-objects/2d.path.transformation.multiple.html | OK |
| Transformations are applied while building paths, not when drawing | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-2 | PASS |
| /2dcontext/path-objects/2d.path.rect.newsubpath.html | OK |
| Canvas test: 2d.path.rect.newsubpath | PASS |
| /2dcontext/transformations/2d.transformation.scale.large.html | OK |
| scale() with large scale factors works | PASS |
| /2dcontext/text-styles/2d.text.align.default.html | OK |
| Canvas test: 2d.text.align.default | PASS |
| /2dcontext/compositing/2d.composite.solid.source-in.html | OK |
| Canvas test: 2d.composite.solid.source-in | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.clip.html | OK |
| save()/restore() affects the clipping path | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html | OK |
| Canvas test: 2d.pattern.image.incomplete.nosrc | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgb-1 | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.name-3 | PASS |
| /2dcontext/path-objects/2d.path.moveTo.nonfinite.html | OK |
| moveTo() with Infinity/NaN is ignored | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.lineWidth.html | OK |
| save()/restore() works for lineWidth | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html | OK |
| Test that restore() undoes any modifications to imageSmoothingEnabled. | PASS |
| Test that restoring actually changes smoothing and not just the attribute value. | PASS |
| Test that save() doesn't modify the values of imageSmoothingEnabled. | PASS |
| /2dcontext/line-styles/2d.line.join.valid.html | OK |
| Setting lineJoin to valid values works | PASS |
| /2dcontext/compositing/2d.composite.operation.default.html | OK |
| Canvas test: 2d.composite.operation.default | PASS |
| /2dcontext/shadows/2d.shadow.enable.y.html | OK |
| Shadows are drawn if shadowOffsetY is set | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.length.html | OK |
| getImageData() returns a correctly-sized Uint8ClampedArray | PASS |
| /2dcontext/compositing/2d.composite.canvas.copy.html | OK |
| Canvas test: 2d.composite.canvas.copy | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html | OK |
| Canvas test: 2d.pattern.paint.norepeat.coord3 | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html | OK |
| fillText does not start a new path or subpath | PASS |
| /2dcontext/compositing/2d.composite.solid.copy.html | OK |
| Canvas test: 2d.composite.solid.copy | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html | OK |
| Canvas test: 2d.gradient.interpolate.zerosize.fillRect | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.bitmap.html | OK |
| save()/restore() does not affect the current bitmap | PASS |
| /2dcontext/compositing/2d.composite.canvas.xor.html | OK |
| Canvas test: 2d.composite.canvas.xor | PASS |
| /2dcontext/path-objects/2d.path.lineTo.nonfinite.html | OK |
| lineTo() with Infinity/NaN is ignored | PASS |
| /2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.html | OK |
| drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.html | OK |
| Canvas test: 2d.gradient.radial.equal | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidtype.html | OK |
| Canvas test: 2d.fillStyle.invalidtype | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.set.html | OK |
| ImageData.data can be modified | PASS |
| /2dcontext/scroll/2d.scrollPathIntoView.verticalRL.html | OK |
| scrollPathIntoView() works in vertical-rl writing mode | FAIL |
| /2dcontext/line-styles/2d.line.union.html | OK |
| Canvas test: 2d.line.union | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html | OK |
| currentColor is computed from the canvas element | PASS |
| /2dcontext/path-objects/2d.path.fill.winding.subtract.1.html | OK |
| Canvas test: 2d.path.fill.winding.subtract.1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html | OK |
| Canvas test: 2d.fillStyle.parse.svg-2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.image.undefined.html | OK |
| Canvas test: 2d.pattern.image.undefined | PASS |
| /2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html | OK |
| Canvas test: 2d.shadow.attributes.shadowBlur.invalid | PASS |
| /2dcontext/compositing/2d.composite.canvas.source-in.html | OK |
| Canvas test: 2d.composite.canvas.source-in | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html | OK |
| strokeRect of Nx0 pixels draws a closed line with joins | PASS |
| /2dcontext/path-objects/2d.path.clip.winding.1.html | OK |
| Canvas test: 2d.path.clip.winding.1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsl-3 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.html | OK |
| Canvas test: 2d.pattern.basic.canvas | PASS |
| /2dcontext/path-objects/2d.path.stroke.prune.corner.html | OK |
| Zero-length line segments are removed before stroking with miters | PASS |
| /2dcontext/compositing/2d.composite.clip.destination-in.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/compositing/2d.composite.uncovered.pattern.source-out.html | OK |
| Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.basic.nocontext.html | OK |
| Canvas test: 2d.pattern.basic.nocontext | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.edge.html | OK |
| isPointInPath() counts points on the path as being inside | PASS |
| /2dcontext/path-objects/2d.path.arcTo.shape.start.html | OK |
| arcTo() draws a straight line from P0 to P1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html | OK |
| Canvas test: 2d.gradient.object.invalidcolour | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html | OK |
| Canvas test: 2d.drawImage.9arg.sourcesize | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html | OK |
| Canvas test: 2d.drawImage.9arg.destsize | PASS |
| /2dcontext/line-styles/2d.line.width.valid.html | OK |
| Setting lineWidth to valid values works | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.unclosed.html | OK |
| isPointInPath() works on unclosed subpaths | PASS |
| /2dcontext/path-objects/2d.path.clip.unaffected.html | OK |
| Canvas test: 2d.path.clip.unaffected | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.modify.image2.html | OK |
| Canvas test: 2d.pattern.modify.image2 | PASS |
| /2dcontext/path-objects/2d.path.rect.selfintersect.html | OK |
| Canvas test: 2d.path.rect.selfintersect | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create2.initial.html | OK |
| createImageData(sw, sh) returns transparent black data of the right size | PASS |
| /2dcontext/text-styles/2d.text.draw.baseline.hanging.html | OK |
| Canvas test: 2d.text.draw.baseline.hanging | FAIL |
| /2dcontext/text-styles/2d.text.draw.baseline.middle.html | OK |
| textBaseline middle is the middle of the em square (not the bounding box) | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.gradient.empty.html | OK |
| Canvas test: 2d.gradient.empty | PASS |
| /2dcontext/line-styles/2d.line.width.scaledefault.html | OK |
| Default lineWidth strokes are affected by scale transformations | PASS |
| /2dcontext/transformations/2d.transformation.transform.skewed.html | OK |
| transform() with skewy matrix transforms correctly | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hex8 | PASS |
| /2dcontext/shadows/2d.shadow.canvas.basic.html | OK |
| Shadows are drawn for canvases | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsla-6 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html | OK |
| Image patterns do not get flipped when painted | PASS |
| /2dcontext/shadows/2d.shadow.stroke.cap.2.html | OK |
| Shadows are drawn for stroke caps | PASS |
| /2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.html | OK |
| fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html | OK |
| @font-face fonts should work even if they are not used in the page | PASS |
| /2dcontext/shadows/2d.shadow.image.basic.html | OK |
| Shadows are drawn for images | PASS |
| /2dcontext/transformations/2d.transformation.scale.multiple.html | OK |
| Multiple scale()s combine | PASS |
| /2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html | OK |
| Canvas test: 2d.shadow.attributes.shadowOffset.invalid | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html | OK |
| save()/restore() works for globalCompositeOperation | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html | OK |
| strokeRect works | PASS |
| /2dcontext/line-styles/2d.line.miter.invalid.html | OK |
| Setting miterLimit to invalid values is ignored | PASS |
| /2dcontext/imagebitmap/createImageBitmap-blob-invalidtype.html | OK |
| createImageBitmap: blob with wrong mime type | PASS |
| /2dcontext/imagebitmap/createImageBitmap-invalid-args.html | OK |
| createImageBitmap with ArrayBuffer image source. | PASS |
| createImageBitmap with CanvasRenderingContext2D image source. | PASS |
| createImageBitmap with Uint8Array image source. | PASS |
| createImageBitmap with WebGLRenderingContext image source. | PASS |
| createImageBitmap with a Blob source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with a Blob source and sh set to 0 | PASS |
| createImageBitmap with a Blob source and sw set to 0 | PASS |
| createImageBitmap with a bitmap HTMLImageElement source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with a bitmap HTMLImageElement source and sh set to 0 | PASS |
| createImageBitmap with a bitmap HTMLImageElement source and sw set to 0 | PASS |
| createImageBitmap with a bitmap SVGImageElement source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with a bitmap SVGImageElement source and sh set to 0 | FAIL |
| createImageBitmap with a bitmap SVGImageElement source and sw set to 0 | FAIL |
| createImageBitmap with a broken image source. | PASS |
| createImageBitmap with a closed ImageBitmap. | PASS |
| createImageBitmap with a vector HTMLImageElement source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with a vector HTMLImageElement source and sh set to 0 | PASS |
| createImageBitmap with a vector HTMLImageElement source and sw set to 0 | PASS |
| createImageBitmap with a vector SVGImageElement source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with a vector SVGImageElement source and sh set to 0 | FAIL |
| createImageBitmap with a vector SVGImageElement source and sw set to 0 | FAIL |
| createImageBitmap with an HTMLCanvasElement source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with an HTMLCanvasElement source and sh set to 0 | PASS |
| createImageBitmap with an HTMLCanvasElement source and sw set to 0 | PASS |
| createImageBitmap with an HTMLVideoElement from a data URL source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with an HTMLVideoElement from a data URL source and sh set to 0 | PASS |
| createImageBitmap with an HTMLVideoElement from a data URL source and sw set to 0 | PASS |
| createImageBitmap with an HTMLVideoElement source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with an HTMLVideoElement source and sh set to 0 | PASS |
| createImageBitmap with an HTMLVideoElement source and sw set to 0 | PASS |
| createImageBitmap with an ImageBitmap source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with an ImageBitmap source and sh set to 0 | PASS |
| createImageBitmap with an ImageBitmap source and sw set to 0 | PASS |
| createImageBitmap with an ImageData source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with an ImageData source and sh set to 0 | PASS |
| createImageBitmap with an ImageData source and sw set to 0 | PASS |
| createImageBitmap with an OffscreenCanvas source and oversized (unallocatable) crop region | FAIL |
| createImageBitmap with an OffscreenCanvas source and sh set to 0 | FAIL |
| createImageBitmap with an OffscreenCanvas source and sw set to 0 | FAIL |
| createImageBitmap with an available but undecodable image source. | FAIL |
| createImageBitmap with an available but zero height image source. | FAIL |
| createImageBitmap with an available but zero width image source. | FAIL |
| createImageBitmap with an invalid OffscreenCanvas source. | FAIL |
| createImageBitmap with an oversized canvas source. | PASS |
| createImageBitmap with an undecodable blob source. | PASS |
| createImageBitmap with empty image source. | PASS |
| createImageBitmap with empty video source. | PASS |
| createImageBitmap with null image source. | PASS |
| createImageBitmap with undefined image source. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.get.solid.html | OK |
| Canvas test: 2d.fillStyle.get.solid | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.basic.html | OK |
| putImageData() puts image data from getImageData() onto the canvas | PASS |
| /2dcontext/path-objects/2d.path.lineTo.nextpoint.html | OK |
| Canvas test: 2d.path.lineTo.nextpoint | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsla-9 | PASS |
| /2dcontext/path-objects/2d.path.rect.negative.html | OK |
| Canvas test: 2d.path.rect.negative | PASS |
| /2dcontext/line-styles/2d.line.cap.closed.html | OK |
| Line caps are not drawn at the corners of an unclosed rectangle | PASS |
| /2dcontext/path-objects/2d.path.bezierCurveTo.nonfinite.html | OK |
| bezierCurveTo() with Infinity/NaN is ignored | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html | OK |
| fillRect is affected by transforms | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.clamp.html | OK |
| getImageData() clamps colours to the range [0, 255] | PASS |
| /2dcontext/compositing/2d.composite.operation.get.html | OK |
| Canvas test: 2d.composite.operation.get | PASS |
| /2dcontext/compositing/2d.composite.canvas.source-out.html | OK |
| Canvas test: 2d.composite.canvas.source-out | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html | OK |
| Canvas test: 2d.gradient.interpolate.alpha | PASS |
| /2dcontext/compositing/2d.composite.operation.over.html | OK |
| Canvas test: 2d.composite.operation.over | PASS |
| /2dcontext/shadows/2d.shadow.attributes.shadowOffset.initial.html | OK |
| Canvas test: 2d.shadow.attributes.shadowOffset.initial | PASS |
| /2dcontext/compositing/2d.composite.operation.unrecognised.html | OK |
| Canvas test: 2d.composite.operation.unrecognised | PASS |
| /2dcontext/drawing-paths-to-the-canvas/canvas_complexshapes_ispointInpath_001.htm | OK |
| isPointInPath unaffected by transformation matrix | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html | OK |
| textAlign center is the center of the em squares (not the bounding box) | PASS |
| /2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html | OK |
| If there is no subpath, the first control point is added (and nothing is drawn up to it) | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.order.rgb.html | OK |
| getImageData() returns R then G then B | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.path.html | OK |
| save()/restore() does not affect the current path | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.image.string.html | OK |
| Canvas test: 2d.pattern.image.string | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.stack.html | OK |
| save()/restore() can be nested as a stack | PASS |
| /2dcontext/transformations/2d.transformation.rotate.wrapnegative.html | OK |
| rotate() wraps large negative values correctly | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html | OK |
| Canvas test: 2d.fillStyle.parse.hsla-clamp-4 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html | OK |
| Canvas test: 2d.gradient.interpolate.zerosize.strokeRect | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html | OK |
| Canvas test: 2d.gradient.object.crosscanvas | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-num-2 | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.winding.html | OK |
| isPointInPath() uses the non-zero winding number rule | PASS |
| /2dcontext/line-styles/2d.line.miter.lineedge.html | OK |
| Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.1.html | OK |
| Radial gradient coordinates are relative to the coordinate space at the time of filling | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.floatsource.html | OK |
| Canvas test: 2d.drawImage.floatsource | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html | OK |
| Canvas test: 2d.fillStyle.parse.hsla-clamp-6 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-6 | PASS |
| /2dcontext/compositing/2d.composite.clip.source-over.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/path-objects/2d.path.beginPath.html | OK |
| Canvas test: 2d.path.beginPath | PASS |
| /2dcontext/path-objects/2d.path.fill.overlap.html | OK |
| Canvas test: 2d.path.fill.overlap | PASS |
| /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.html | OK |
| drawFocusIfNeeded does draw a focus ring if the element is in focus and the user activated a particular focus ring. | PASS |
| /2dcontext/text-styles/2d.text.font.default.html | OK |
| Canvas test: 2d.text.font.default | PASS |
| /2dcontext/compositing/2d.composite.image.copy.html | OK |
| Canvas test: 2d.composite.image.copy | PASS |
| /2dcontext/compositing/2d.composite.canvas.destination-atop.html | OK |
| Canvas test: 2d.composite.canvas.destination-atop | PASS |
| /2dcontext/compositing/2d.composite.transparent.source-in.html | OK |
| Canvas test: 2d.composite.transparent.source-in | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.nonpremul.html | OK |
| getImageData() returns non-premultiplied colours | PASS |
| /2dcontext/wide-gamut-canvas/canvas-colorspace-arguments.html | OK |
| Test CanvasColorSpace value srgb | FAIL |
| Test CanvasPixelFormat value float16 | FAIL |
| Test CanvasPixelFormat value uint8 | FAIL |
| Test default context creation parameters: srgb/uint8 | FAIL |
| Test supported color settings srgb/float16 | FAIL |
| Test supported color settings srgb/uint8 | FAIL |
| /2dcontext/transformations/2d.transformation.rotate.nonfinite.html | OK |
| rotate() with Infinity/NaN is ignored | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-eof | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html | OK |
| drawImage() of an APNG with no poster frame draws the first frame | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html | OK |
| Canvas test: 2d.pattern.paint.norepeat.basic | PASS |
| /2dcontext/path-objects/2d.path.clip.basic.1.html | OK |
| Canvas test: 2d.path.clip.basic.1 | PASS |
| /2dcontext/line-styles/2d.line.join.round.html | OK |
| lineJoin 'round' is rendered correctly | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetY.html | OK |
| save()/restore() works for shadowOffsetY | PASS |
| /2dcontext/shadows/2d.shadow.attributes.shadowBlur.initial.html | OK |
| Canvas test: 2d.shadow.attributes.shadowBlur.initial | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html | OK |
| Canvas test: 2d.pattern.paint.repeatx.basic | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html | OK |
| Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.) | PASS |
| /2dcontext/path-objects/2d.path.arc.angle.5.html | OK |
| arc() wraps angles mod 2pi when clockwise and start > end+2pi | PASS |
| /2dcontext/compositing/2d.composite.clip.source-out.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/text-styles/2d.text.draw.space.collapse.start.html | OK |
| Space characters at the start of a line are collapsed (per CSS) | FAIL |
| /2dcontext/pixel-manipulation/2d.imageData.put.dirty.zero.html | OK |
| putImageData() with zero-sized dirty rectangle puts nothing | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.strokeStyle.html | OK |
| save()/restore() works for strokeStyle | PASS |
| /2dcontext/fill-and-stroke-styles/2d.strokeStyle.default.html | OK |
| Canvas test: 2d.strokeStyle.default | PASS |
| /2dcontext/text-styles/2d.text.font.parse.complex.html | OK |
| Canvas test: 2d.text.font.parse.complex | PASS |
| /2dcontext/path-objects/2d.path.arcTo.ensuresubpath.1.html | OK |
| If there is no subpath, the first control point is added (and nothing is drawn up to it) | PASS |
| /2dcontext/scroll/2d.scrollPathIntoView.path.html | OK |
| scrollPathIntoView() with path argument works | FAIL |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html | OK |
| drawImage() of an APNG draws the poster frame | FAIL |
| /2dcontext/wide-gamut-canvas/canvas-drawImage-e_srgb.html | OK |
| Draw SRGB image on an e-sRGB canvas and read back the e-sRGB pixels. | FAIL |
| /2dcontext/path-objects/2d.path.clip.basic.2.html | OK |
| Canvas test: 2d.path.clip.basic.2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgba-3 | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.2.html | OK |
| Radial gradient coordinates are relative to the coordinate space at the time of filling | PASS |
| /2dcontext/path-objects/2d.path.stroke.prune.closed.html | OK |
| Zero-length line segments from closed paths are removed before stroking | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-4 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html | OK |
| Canvas test: 2d.pattern.image.incomplete.immediate | PASS |
| /2dcontext/text-styles/2d.text.draw.baseline.top.html | OK |
| textBaseline top is the top of the em square (not the bounding box) | FAIL |
| /2dcontext/path-objects/2d.path.arc.angle.6.html | OK |
| arc() draws a full circle when anticlockwise and start > end+2pi | PASS |
| /2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html | OK |
| If there is no subpath, the first control point is added | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.underflow.html | OK |
| restore() with an empty stack has no effect | PASS |
| /2dcontext/imagebitmap/canvas-createImageBitmap-resize.html | OK |
| createImageBitmap from a Blob with resize option. | FAIL |
| createImageBitmap from a HTMLCanvasElement with resize option. | FAIL |
| createImageBitmap from a HTMLImageElement with resize option. | FAIL |
| createImageBitmap from an ImageBitmap with resize option. | FAIL |
| createImageBitmap from an ImageData with resize option. | FAIL |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html | OK |
| drawImage with zero-sized canvas as the source shoud throw exception | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create2.basic.html | OK |
| createImageData(sw, sh) exists and returns something | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html | OK |
| strokeRect of negative sizes works | PASS |
| /2dcontext/compositing/2d.composite.canvas.source-atop.html | OK |
| Canvas test: 2d.composite.canvas.source-atop | PASS |
| /2dcontext/wide-gamut-canvas/imageData-colorSpace.html | OK |
| Test color settings: {srgb, float32} | FAIL |
| Test color settings: {srgb, uint16} | FAIL |
| Test color settings: {srgb, uint8} | FAIL |
| Test default color settings: {undefined, undefined} -> {srgb, uint8} | FAIL |
| Test default color space: {undefined, float32} -> {srgb, float32} | FAIL |
| Test default storage format: {srgb, undefined} -> {srgb, uint8} | FAIL |
| /2dcontext/drawing-images-to-the-canvas/drawimage_canvas.html | OK |
| Test scenario 10: sx = 0, sy = 0, sw = 50, sh = 50, dx = 0, dy = 0, dw = 200, dh = 200 --- Pixel 0,0 should be blue. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 50, sh = 50, dx = 0, dy = 0, dw = 200, dh = 200 --- Pixel 0,99 should be blue. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 50, sh = 50, dx = 0, dy = 0, dw = 200, dh = 200 --- Pixel 19,19 should be blue. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 50, sh = 50, dx = 0, dy = 0, dw = 200, dh = 200 --- Pixel 20,20 should be black. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 50, sh = 50, dx = 0, dy = 0, dw = 200, dh = 200 --- Pixel 20,99 should be black. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 50, sh = 50, dx = 0, dy = 0, dw = 200, dh = 200 --- Pixel 99,0 should be blue. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 50, sh = 50, dx = 0, dy = 0, dw = 200, dh = 200 --- Pixel 99,20 should be black. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 50, sh = 50, dx = 0, dy = 0, dw = 200, dh = 200 --- Pixel 99,99 should be black. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 50, sh = 50, dx = 0, dy = 0, dw = 200, dh = 200 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 0,0 should be blue. | FAIL |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 0,25 should be red. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 1,1 should be blue. | FAIL |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 21,21 should be black. | FAIL |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 21,3 should be black. | FAIL |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 23,23 should be blue. | FAIL |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 24,24 should be blue. | FAIL |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 25,0 should be red. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 25,25 should be red. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 3,21 should be black. | FAIL |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 3,3 should be black. | FAIL |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 99,99 should be red. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 100, sh = 100, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 0,69 should be red. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 69,0 should be red. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 69,69 should be red. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 70,70 should be blue. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 70,99 should be blue. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 82,82 should be blue. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 84,84 should be black. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 84,99 should be black. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 99,70 should be blue. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 99,84 should be black. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 99,99 should be black. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 0,0 should be blue. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 0,49 should be blue. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 0,50 should be red. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 44,44 should be black. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 44,5 should be black. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 49,0 should be blue. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 49,49 should be blue. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 5,44 should be black. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 5,5 should be black. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 50,0 should be red. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 50,50 should be red. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 99,99 should be red. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 24,24 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 24,75 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 25,25 should be blue. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 25,74 should be blue. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 30,30 should be black. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 30,69 should be black. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 69,30 should be black. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 69,69 should be black. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 74,25 should be blue. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 74,74 should be blue. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 75,24 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 75,75 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 0,0 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 49,49 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 49,99 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,50 should be blue. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,99 should be blue. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 55,55 should be black. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 55,94 should be black. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 94,55 should be black. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 94,94 should be black. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,49 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,50 should be blue. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,99 should be blue. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 49,49 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 49,70 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 50,50 should be blue. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 50,69 should be blue. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 52,52 should be black. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 52,67 should be black. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 67,52 should be black. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 67,67 should be black. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 69,50 should be blue. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 69,69 should be blue. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 70,49 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 70,70 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 49,49 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 49,69 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 50,50 should be blue. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 50,69 should be blue. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 55,52 should be black. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 55,67 should be black. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 94,52 should be black. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 94,67 should be black. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 99,49 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 99,50 should be blue. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 99,69 should be blue. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 99,70 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 0,0 should be blue. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 0,24 should be blue. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 24,0 should be blue. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 24,24 should be black. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 24,5 should be black. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 25,25 should be red. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 25,99 should be red. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 4,4 should be blue. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 5,24 should be black. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 5,5 should be black. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 99,25 should be red. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel 99,99 should be red. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 25, sh = 25, dx = 0, dy = 0, dw = 25, dh = 25 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 24,24 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 24,50 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 25,25 should be blue. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 25,49 should be blue. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 29,29 should be blue. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 30,30 should be black. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 30,49 should be black. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 49,25 should be blue. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 49,30 should be black. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 49,49 should be black. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 50,24 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel 50,50 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 25, sh = 25, dx = 25, dy = 25, dw = 25, dh = 25 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 0,0 should be black. | FAIL |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 0,19 should be black. | FAIL |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 0,20 should be blue. | FAIL |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 0,25 should be red. | PASS |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 19,0 should be black. | FAIL |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 19,19 should be black. | FAIL |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 20,0 should be blue. | FAIL |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 20,20 should be blue. | FAIL |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 24,24 should be blue. | FAIL |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 25,0 should be red. | PASS |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 25,25 should be red. | PASS |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel 99,99 should be red. | PASS |
| Test scenario 8: sx = 25, sy = 25, sw = 50, sh = 50, dx = 0, dy = 0, dw = 50, dh = 50 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 0,0 should be red. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 0,99 should be red. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 49,49 should be red. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 50,50 should be blue. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 50,99 should be blue. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 55,55 should be black. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 55,94 should be black. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 94,55 should be black. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 94,94 should be black. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 99,0 should be red. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 99,50 should be blue. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel 99,99 should be blue. | PASS |
| Test scenario 9: sx = 0, sy = 0, sw = 50, sh = 50, dx = 100, dy = 100, dw = -50, dh = -50 --- Pixel outside canvas should be transparent black. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgb-5 | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-clamp-3 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.top.html | OK |
| Canvas test: 2d.gradient.radial.cone.top | FAIL |
| /2dcontext/shadows/2d.shadow.attributes.shadowOffset.valid.html | OK |
| Canvas test: 2d.shadow.attributes.shadowOffset.valid | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.measure.advances.html | OK |
| Testing width advances | FAIL |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html | OK |
| Canvas test: 2d.text.draw.fontface | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.measure.emHeights.html | OK |
| Testing emHeights | FAIL |
| /2dcontext/pixel-manipulation/2d.imageData.create1.this.html | OK |
| createImageData(imgdata) should throw when called with the wrong |this| | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hsl-4 | PASS |
| /2dcontext/shadows/2d.shadow.canvas.alpha.html | OK |
| Shadows are drawn correctly for partially-transparent canvases | PASS |
| /2dcontext/wide-gamut-canvas/canvas-getImageData-e_srgb.html | OK |
| tests drawing SRGB color on e-sRGB canvas and getting e-sRGB image data. | FAIL |
| tests putting SRGB image data on e-sRGB canvas and getting e-sRGB image data. | FAIL |
| tests putting and getting in-range e-sRGB image data on e-sRGB canvas. | FAIL |
| tests putting and getting out-of-range e-sRGB image data on e-sRGB canvas. | FAIL |
| /2dcontext/the-canvas-state/2d.state.saverestore.shadowColor.html | OK |
| save()/restore() works for shadowColor | PASS |
| /2dcontext/shadows/2d.shadow.stroke.join.1.html | OK |
| Shadows are not drawn for areas outside stroke joins | PASS |
| /2dcontext/transformations/2d.transformation.transform.multiply.html | OK |
| transform() multiplies the CTM | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidstring.html | OK |
| Canvas test: 2d.fillStyle.invalidstring | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create2.large.html | OK |
| createImageData(sw, sh) works for sizes much larger than the canvas | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html | OK |
| Canvas test: 2d.pattern.repeat.unrecognised | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.rgba-4 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch2.html | OK |
| Canvas test: 2d.gradient.radial.touch2 | FAIL |
| /2dcontext/shadows/2d.shadow.transform.1.html | OK |
| Shadows take account of transformations | PASS |
| /2dcontext/compositing/2d.composite.transparent.destination-atop.html | OK |
| Canvas test: 2d.composite.transparent.destination-atop | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.wrongtype.html | OK |
| putImageData() does not accept non-ImageData objects | PASS |
| /2dcontext/shadows/2d.shadow.pattern.transparent.2.html | OK |
| Shadows are not drawn for transparent parts of fill patterns | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.transform.1.html | OK |
| isPointInPath() handles transformations correctly | PASS |
| /2dcontext/compositing/2d.composite.clip.xor.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-5 | PASS |
| /2dcontext/path-objects/2d.path.arc.scale.2.html | OK |
| Highly scaled arcs are the right shape | PASS |
| /2dcontext/transformations/2d.transformation.scale.zero.html | OK |
| scale() with a scale factor of zero works | PASS |
| /2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html | OK |
| If there is no subpath, the first control point is added | PASS |
| /2dcontext/path-objects/2d.path.stroke.empty.html | OK |
| Empty subpaths are not stroked | PASS |
| /2dcontext/transformations/2d.transformation.scale.basic.html | OK |
| scale() works | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html | OK |
| U+0020 is rendered the correct size (1em wide) | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.nonfinite.html | OK |
| getImageData() throws TypeError if arguments are not finite | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas1.html | OK |
| Canvas test: 2d.pattern.modify.canvas1 | PASS |
| /2dcontext/compositing/2d.composite.solid.destination-in.html | OK |
| Canvas test: 2d.composite.solid.destination-in | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html | OK |
| Canvas test: 2d.fillStyle.parse.hsla-clamp-3 | PASS |
| /2dcontext/text-styles/2d.text.font.parse.invalid.html | OK |
| Canvas test: 2d.text.font.parse.invalid | PASS |
| /2dcontext/shadows/2d.shadow.gradient.basic.html | OK |
| Shadows are drawn for gradient fills | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html | OK |
| strokeRect of 0x0 pixels draws nothing, including caps and joins | PASS |
| /2dcontext/shadows/2d.shadow.alpha.3.html | OK |
| Shadows are affected by globalAlpha | PASS |
| /2dcontext/compositing/2d.composite.uncovered.image.destination-atop.html | OK |
| drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/compositing/2d.composite.globalAlpha.image.html | OK |
| Canvas test: 2d.composite.globalAlpha.image | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-5 | PASS |
| /2dcontext/compositing/2d.composite.image.destination-over.html | OK |
| Canvas test: 2d.composite.image.destination-over | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html | OK |
| Canvas test: 2d.gradient.radial.cone.beside | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedir.html | OK |
| Negative dimensions do not affect the direction of the image | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetX.html | OK |
| save()/restore() works for shadowOffsetX | PASS |
| /2dcontext/compositing/2d.composite.canvas.destination-in.html | OK |
| Canvas test: 2d.composite.canvas.destination-in | PASS |
| /2dcontext/line-styles/2d.line.cap.valid.html | OK |
| Setting lineCap to valid values works | PASS |
| /2dcontext/line-styles/2d.line.width.basic.html | OK |
| lineWidth determines the width of line strokes | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.html | OK |
| ImageData has a usable constructor | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html | OK |
| Canvas test: 2d.pattern.paint.norepeat.coord1 | PASS |
| /2dcontext/path-objects/2d.path.arcTo.collinear.3.html | OK |
| arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1 | PASS |
| /2dcontext/path-objects/2d.path.stroke.prune.curve.html | OK |
| Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking | PASS |
| /2dcontext/compositing/2d.composite.operation.highlight.html | OK |
| Canvas test: 2d.composite.operation.highlight | PASS |
| /2dcontext/path-objects/2d.path.arc.shape.3.html | OK |
| arc() from 0 to -pi/2 does not draw anything in the wrong quadrant | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-num-1 | PASS |
| /2dcontext/path-objects/2d.path.rect.zero.5.html | OK |
| Canvas test: 2d.path.rect.zero.5 | PASS |
| /2dcontext/image-smoothing/imagesmoothing.html | OK |
| On getting imageSmoothingEnabled, the user agent must return the last value it was set to. | PASS |
| Test that image smoothing is actually on by default and just the attribute value. | PASS |
| Test that image smoothing works when imageSmoothingEnabled is set to true | PASS |
| Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) still works after repaints. | PASS |
| Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with drawImage(). | PASS |
| Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fill() and createPattern(). | FAIL |
| Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fillRect and createPattern(). | FAIL |
| Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern(). | FAIL |
| When the canvas context is created, imageSmoothingEnabled must be set to true. | PASS |
| /2dcontext/shadows/2d.shadow.gradient.transparent.2.html | OK |
| Shadows are not drawn for transparent parts of gradient fills | PASS |
| /2dcontext/compositing/2d.composite.operation.clear.html | OK |
| Canvas test: 2d.composite.operation.clear | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsl-1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html | OK |
| Canvas test: 2d.fillStyle.parse.rgb-num | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.rgb-1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-solid-1 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.double.html | OK |
| createImageData(w, h) double is converted to long | FAIL |
| /2dcontext/pixel-manipulation/2d.imageData.get.order.alpha.html | OK |
| getImageData() returns A in the fourth component | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hex7 | PASS |
| /2dcontext/text-styles/2d.text.font.parse.size.percentage.default.html | OK |
| Canvas test: 2d.text.font.parse.size.percentage.default | PASS |
| /2dcontext/path-objects/2d.path.arcTo.scale.html | OK |
| arcTo scales the curve, not just the control points | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.miterLimit.html | OK |
| save()/restore() works for miterLimit | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-solid-2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-4 | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html | OK |
| strokeRect is affected by globalAlpha | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.basic.2.html | OK |
| isPointInPath() detects whether the point is inside the path | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html | OK |
| Canvas test: 2d.gradient.radial.cone.cylinder | FAIL |
| /2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html | OK |
| The empty string has zero width | PASS |
| /2dcontext/path-objects/2d.path.arc.zeroradius.html | OK |
| arc() with zero radius draws a line to the start point | PASS |
| /2dcontext/transformations/2d.transformation.rotate.wrap.html | OK |
| rotate() wraps large positive values correctly | PASS |
| /2dcontext/path-objects/2d.path.arc.shape.2.html | OK |
| arc() from 0 to pi draws stuff in the right half | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html | OK |
| fillRect works | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html | OK |
| Canvas test: 2d.fillStyle.parse.transparent-2 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.path.html | OK |
| putImageData() does not affect the current path | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hsl-1 | PASS |
| /2dcontext/line-styles/2d.line.miter.rightangle.html | OK |
| Miter joins are not drawn when the miter limit is exceeded, on exact right angles | PASS |
| /2dcontext/path-objects/2d.path.arcTo.shape.curve2.html | OK |
| arcTo() curves in the right kind of shape | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html | OK |
| save()/restore() works for lineCap | PASS |
| /2dcontext/line-styles/2d.line.width.invalid.html | OK |
| Setting lineWidth to invalid values is ignored | PASS |
| /2dcontext/text-styles/2d.text.align.valid.html | OK |
| Canvas test: 2d.text.align.valid | PASS |
| /2dcontext/text-styles/2d.text.baseline.valid.html | OK |
| Canvas test: 2d.text.baseline.valid | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-3 | PASS |
| /2dcontext/shadows/2d.shadow.offset.negativeX.html | OK |
| Shadows can be offset with negative x | PASS |
| /2dcontext/shadows/2d.shadow.alpha.1.html | OK |
| Shadow colour alpha components are used | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.unaffected.html | OK |
| getImageData() is not affected by context state | PASS |
| /2dcontext/imagebitmap/createImageBitmap-bounds.html | OK |
| createImageBitmap: clipping to the bitmap | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-clamp-2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.system.html | OK |
| Canvas test: 2d.fillStyle.parse.system | PASS |
| /2dcontext/transformations/2d.transformation.rotate.zero.html | OK |
| rotate() by 0 does nothing | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.range.html | OK |
| getImageData() returns values in the range [0, 255] | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html | OK |
| Canvas test: 2d.pattern.paint.repeat.coord2 | PASS |
| /2dcontext/text-styles/2d.text.font.parse.system.html | OK |
| System fonts must be computed to explicit values | PASS |
| /2dcontext/path-objects/2d.path.stroke.skew.html | OK |
| Strokes lines are skewed by the current transformation matrix | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html | OK |
| drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR | FAIL |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html | OK |
| clearRect does not draw shadows | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create2.double.html | OK |
| createImageData(w, h) double is converted to long | FAIL |
| /2dcontext/shadows/2d.shadow.canvas.transparent.2.html | OK |
| Shadows are not drawn for transparent parts of canvases | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside1.html | OK |
| Canvas test: 2d.gradient.radial.inside1 | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsla-8 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsla-5 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.unaffected.html | OK |
| putImageData() is not affected by context state | PASS |
| /2dcontext/path-objects/2d.path.moveTo.multiple.html | OK |
| Canvas test: 2d.path.moveTo.multiple | PASS |
| /2dcontext/compositing/2d.composite.clip.source-in.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/compositing/2d.composite.clip.destination-over.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/line-styles/2d.line.cross.html | OK |
| Canvas test: 2d.line.cross | PASS |
| /2dcontext/compositing/2d.composite.canvas.destination-over.html | OK |
| Canvas test: 2d.composite.canvas.destination-over | PASS |
| /2dcontext/path-objects/2d.path.rect.zero.2.html | OK |
| Canvas test: 2d.path.rect.zero.2 | PASS |
| /2dcontext/transformations/2d.transformation.scale.negative.html | OK |
| scale() with negative scale factors works | PASS |
| /2dcontext/compositing/2d.composite.solid.source-atop.html | OK |
| Canvas test: 2d.composite.solid.source-atop | PASS |
| /2dcontext/compositing/2d.composite.uncovered.image.destination-in.html | OK |
| drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html | OK |
| Canvas test: 2d.pattern.repeat.empty | PASS |
| /2dcontext/compositing/2d.composite.transparent.source-out.html | OK |
| Canvas test: 2d.composite.transparent.source-out | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html | OK |
| Canvas test: 2d.fillStyle.parse.svg-1 | PASS |
| /2dcontext/line-styles/2d.line.cap.square.html | OK |
| lineCap 'square' is rendered correctly | PASS |
| /2dcontext/drawing-images-to-the-canvas/drawimage_html_image.html | OK |
| Draw 100x100 image to 100x100 canvas at 0,0. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 512, sh = 512, dx = 0, dy = 0, dw = 256, dh = 256 --- Pixel 0,0 should be light purple. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 512, sh = 512, dx = 0, dy = 0, dw = 256, dh = 256 --- Pixel 0,99 should be light purple. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 512, sh = 512, dx = 0, dy = 0, dw = 256, dh = 256 --- Pixel 99,0 should be light purple. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 512, sh = 512, dx = 0, dy = 0, dw = 256, dh = 256 --- Pixel 99,99 should be light purple. | PASS |
| Test scenario 10: sx = 0, sy = 0, sw = 512, sh = 512, dx = 0, dy = 0, dw = 256, dh = 256 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 2048, sh = 2048, dx = 0, dy = 0, dw = 800, dh = 800 --- Pixel 0,0 should be light purple. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 2048, sh = 2048, dx = 0, dy = 0, dw = 800, dh = 800 --- Pixel 0,99 should be light purple. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 2048, sh = 2048, dx = 0, dy = 0, dw = 800, dh = 800 --- Pixel 99,0 should be light purple. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 2048, sh = 2048, dx = 0, dy = 0, dw = 800, dh = 800 --- Pixel 99,99 should be light purple. | PASS |
| Test scenario 11: sx = 0, sy = 0, sw = 2048, sh = 2048, dx = 0, dy = 0, dw = 800, dh = 800 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 0,0 should be red. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 0,99 should be red. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 69,69 should be red. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 69,99 should be red. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 70,70 should be light purple. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 70,99 should be light purple. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 99,0 should be red. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 99,69 should be red. | PASS |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 99,70 should be light purple. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel 99,99 should be light purple. | FAIL |
| Test scenario 12: sx = -20, sy = -20, sw = 50, sh = 50, dx = 20, dy = 20, dw = 125, dh = 125 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 13: draw an image element that does not have a source --- Pixel 0,0 should be red. | PASS |
| Test scenario 13: draw an image element that does not have a source --- Pixel 0,99 should be red. | PASS |
| Test scenario 13: draw an image element that does not have a source --- Pixel 99,0 should be red. | PASS |
| Test scenario 13: draw an image element that does not have a source --- Pixel 99,69 should be red. | PASS |
| Test scenario 13: draw an image element that does not have a source --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 0,0 should be light purple. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 0,33 should be gray. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 0,64 should be red. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 15,31 should be light purple. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 15,63 should be gray. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 16,0 should be gray. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 17,33 should be light purple. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 31,31 should be gray. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 31,63 should be light purple. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 32,0 should be red. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 32,64 should be red. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel 99,99 should be red. | PASS |
| Test scenario 14: sx = 64, sy = 64, sw = 384, sh = 384, dx = 0, dy = 0, dw = 32, dh = 64 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 0,0 should be light purple. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 0,99 should be light purple. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 99,0 should be light purple. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel 99,99 should be light purple. | PASS |
| Test scenario 1: dx = 0, dy = 0 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 0,0 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 0,25 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 0,99 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 24,24 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 25,0 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 25,25 should be light purple. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 25,99 should be light purple. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 99,0 should be red. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 99,25 should be light purple. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel 99,99 should be light purple. | PASS |
| Test scenario 2: dx = 25, dy = 25 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 0,0 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 0,50 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 0,99 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 49,49 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,0 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,50 should be light purple. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,99 should be gray. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,0 should be red. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,50 should be gray. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,99 should be light purple. | PASS |
| Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 0,0 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 49,49 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 49,66 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 50,50 should be light purple. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 50,65 should be gray. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 65,50 should be gray. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 65,65 should be light purple. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 66,49 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 66,66 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 99,99 should be red. | PASS |
| Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 0,0 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 49,49 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 49,82 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 50,50 should be light purple. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 50,81 should be gray. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,49 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,50 should be gray. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,81 should be light purple. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,82 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,99 should be red. | PASS |
| Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 0,0 should be light purple. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 0,31 should be light purple. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 0,32 should be red. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 31,0 should be light purple. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 31,31 should be light purple. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 32,0 should be red. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 32,32 should be red. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 99,99 should be red. | PASS |
| Test scenario 6: sx = 0, sy = 0, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 0,0 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 31,31 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 31,64 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 32,32 should be light purple. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 32,63 should be light purple. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 63,32 should be light purple. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 63,63 should be light purple. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 64,31 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 64,64 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel 99,99 should be red. | PASS |
| Test scenario 7: sx = 0, sy = 0, sw = 32, sh = 32, dx = 32, dy = 32, dw = 32, dh = 32 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 8: sx = 32, sy = 32, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 0,0 should be light purple. | PASS |
| Test scenario 8: sx = 32, sy = 32, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 0,31 should be light purple. | PASS |
| Test scenario 8: sx = 32, sy = 32, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 0,32 should be red. | PASS |
| Test scenario 8: sx = 32, sy = 32, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 31,0 should be light purple. | PASS |
| Test scenario 8: sx = 32, sy = 32, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 31,31 should be light purple. | PASS |
| Test scenario 8: sx = 32, sy = 32, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 32,0 should be red. | PASS |
| Test scenario 8: sx = 32, sy = 32, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 32,32 should be red. | PASS |
| Test scenario 8: sx = 32, sy = 32, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel 99,99 should be red. | PASS |
| Test scenario 8: sx = 32, sy = 32, sw = 32, sh = 32, dx = 0, dy = 0, dw = 32, dh = 32 --- Pixel outside canvas should be transparent black. | PASS |
| Test scenario 9: sx = 32, sy = 32, sw = 32, sh = 32, dx = 32, dy = 32, dw = -32, dh = -32 --- Pixel 0,0 should be light purple. | PASS |
| Test scenario 9: sx = 32, sy = 32, sw = 32, sh = 32, dx = 32, dy = 32, dw = -32, dh = -32 --- Pixel 0,31 should be light purple. | PASS |
| Test scenario 9: sx = 32, sy = 32, sw = 32, sh = 32, dx = 32, dy = 32, dw = -32, dh = -32 --- Pixel 0,32 should be red. | PASS |
| Test scenario 9: sx = 32, sy = 32, sw = 32, sh = 32, dx = 32, dy = 32, dw = -32, dh = -32 --- Pixel 31,0 should be light purple. | PASS |
| Test scenario 9: sx = 32, sy = 32, sw = 32, sh = 32, dx = 32, dy = 32, dw = -32, dh = -32 --- Pixel 31,31 should be light purple. | PASS |
| Test scenario 9: sx = 32, sy = 32, sw = 32, sh = 32, dx = 32, dy = 32, dw = -32, dh = -32 --- Pixel 32,0 should be red. | PASS |
| Test scenario 9: sx = 32, sy = 32, sw = 32, sh = 32, dx = 32, dy = 32, dw = -32, dh = -32 --- Pixel 32,32 should be red. | PASS |
| Test scenario 9: sx = 32, sy = 32, sw = 32, sh = 32, dx = 32, dy = 32, dw = -32, dh = -32 --- Pixel 99,99 should be red. | PASS |
| Test scenario 9: sx = 32, sy = 32, sw = 32, sh = 32, dx = 32, dy = 32, dw = -32, dh = -32 --- Pixel outside canvas should be transparent black. | PASS |
| /2dcontext/path-objects/2d.path.transformation.changing.html | OK |
| Transformations are applied while building paths, not when drawing | PASS |
| /2dcontext/shadows/2d.shadow.clip.1.html | OK |
| Shadows of clipped shapes are still drawn within the clipping region | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.html | OK |
| Canvas test: 2d.gradient.radial.touch1 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.readonly.html | OK |
| ImageData objects properties are read-only | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html | OK |
| Canvas test: 2d.drawImage.9arg.destpos | PASS |
| /2dcontext/compositing/2d.composite.image.destination-out.html | OK |
| Canvas test: 2d.composite.image.destination-out | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hex2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsl-7 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html | OK |
| currentColor is computed from the canvas element even when element is not rendered | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.outside.html | OK |
| isPointInPath() works on paths outside the canvas | PASS |
| /2dcontext/path-objects/2d.path.rect.zero.4.html | OK |
| Canvas test: 2d.path.rect.zero.4 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside2.html | OK |
| Canvas test: 2d.gradient.radial.inside2 | FAIL |
| /2dcontext/path-objects/2d.path.lineTo.ensuresubpath.2.html | OK |
| If there is no subpath, the point is added and used for subsequent drawing | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html | OK |
| Canvas test: 2d.fillStyle.parse.rgb-clamp-2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html | OK |
| Canvas test: 2d.fillStyle.parse.rgb-clamp-4 | PASS |
| /2dcontext/path-objects/2d.path.arc.nonempty.html | OK |
| arc() with a non-empty path does draw a straight line to the start point | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.canvas.html | OK |
| Canvas test: 2d.drawImage.canvas | PASS |
| /2dcontext/compositing/2d.composite.uncovered.fill.copy.html | OK |
| fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedest.html | OK |
| Negative destination width/height represents the correct rectangle | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.subpath.html | OK |
| isPointInPath() uses the current path, not just the subpath | PASS |
| /2dcontext/path-objects/2d.path.arc.twopie.3.html | OK |
| arc() draws a full circle when end = start + 2pi+e and anticlockwise | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.order.cols.html | OK |
| getImageData() returns leftmost columns first | PASS |
| /2dcontext/conformance-requirements/2d.type.delete.html | OK |
| window.CanvasRenderingContext2D is Configurable | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html | OK |
| Canvas test: 2d.fillStyle.parse.hsla-1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.name-2 | PASS |
| /2dcontext/line-styles/2d.line.miter.valid.html | OK |
| Setting miterLimit to valid values works | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html | OK |
| Canvas test: 2d.fillStyle.parse.hsla-2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.rgba-5 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-clamp-4 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-clamp-2 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.source.outside.html | OK |
| getImageData() returns transparent black outside the canvas | PASS |
| /2dcontext/path-objects/2d.path.arcTo.collinear.2.html | OK |
| arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hsla-2 | PASS |
| /2dcontext/shadows/2d.shadow.image.section.html | OK |
| Shadows are not drawn for areas outside image source rectangles | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html | OK |
| fillRect() with Infinity/NaN is ignored | PASS |
| /2dcontext/compositing/2d.composite.canvas.lighter.html | OK |
| Canvas test: 2d.composite.canvas.lighter | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-2 | PASS |
| /2dcontext/shadows/2d.shadow.stroke.join.2.html | OK |
| Shadows are drawn for stroke joins | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html | OK |
| strokeRect draws shadows | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.object.current.html | OK |
| Canvas test: 2d.gradient.object.current | PASS |
| /2dcontext/transformations/2d.transformation.scale.nonfinite.html | OK |
| scale() with Infinity/NaN is ignored | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html | OK |
| Canvas test: 2d.fillStyle.parse.hsla-clamp-2 | PASS |
| /2dcontext/path-objects/2d.path.lineTo.nonfinite.details.html | OK |
| lineTo() with Infinity/NaN for first arg still converts the second arg | PASS |
| /2dcontext/compositing/2d.composite.solid.destination-over.html | OK |
| Canvas test: 2d.composite.solid.destination-over | PASS |
| /2dcontext/path-objects/2d.path.clip.winding.2.html | OK |
| Canvas test: 2d.path.clip.winding.2 | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html | OK |
| strokeRect does not affect the current path | PASS |
| /2dcontext/compositing/2d.composite.transparent.lighter.html | OK |
| Canvas test: 2d.composite.transparent.lighter | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.rgba-1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html | OK |
| createRadialGradient() throws TypeError if arguments are not finite | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hsl-3 | PASS |
| /2dcontext/transformations/2d.transformation.translate.nonfinite.html | OK |
| translate() with Infinity/NaN is ignored | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.html | OK |
| Canvas test: 2d.gradient.interpolate.colour | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html | OK |
| fillText works on @font-face fonts | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgba-1 | FAIL |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html | OK |
| strokeRect is affected by clipping regions | PASS |
| /2dcontext/imagebitmap/createImageBitmap-origin.sub.html | OK |
| cross-origin HTMLImageElement | PASS |
| cross-origin HTMLVideoElement | PASS |
| cross-origin SVGImageElement | FAIL |
| redirected to cross-origin HTMLVideoElement | PASS |
| redirected to same-origin HTMLVideoElement | PASS |
| unclean HTMLCanvasElement | PASS |
| unclean ImageBitmap | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.clip.html | OK |
| putImageData() is not affected by clipping regions | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.get.transparent.html | OK |
| Canvas test: 2d.fillStyle.get.transparent | PASS |
| /2dcontext/shadows/2d.shadow.alpha.4.html | OK |
| Shadows with alpha components are correctly affected by globalAlpha | PASS |
| /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_003.html | OK |
| drawFocusIfNeeded does not draw a focus ring if the element is not a descendant of the context. | PASS |
| /2dcontext/shadows/2d.shadow.attributes.shadowColor.valid.html | OK |
| Canvas test: 2d.shadow.attributes.shadowColor.valid | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.bezier.html | OK |
| isPointInPath() works on Bezier curves | PASS |
| /2dcontext/compositing/2d.composite.solid.source-out.html | OK |
| Canvas test: 2d.composite.solid.source-out | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html | OK |
| fillText handles maxWidth correctly | PASS |
| /2dcontext/compositing/2d.composite.image.lighter.html | OK |
| Canvas test: 2d.composite.image.lighter | PASS |
| /2dcontext/wide-gamut-canvas/imageData-colorManagedBehavior.html | OK |
| imageData-colorManagedBehavior | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html | OK |
| Canvas test: 2d.gradient.radial.cone.bottom | FAIL |
| /2dcontext/compositing/2d.composite.globalAlpha.range.html | OK |
| Canvas test: 2d.composite.globalAlpha.range | PASS |
| /2dcontext/compositing/2d.composite.image.destination-atop.html | OK |
| Canvas test: 2d.composite.image.destination-atop | PASS |
| /2dcontext/shadows/2d.shadow.alpha.2.html | OK |
| Shadow colour alpha components are used | PASS |
| /2dcontext/shadows/2d.shadow.stroke.cap.1.html | OK |
| Shadows are not drawn for areas outside stroke caps | PASS |
| /2dcontext/compositing/2d.composite.uncovered.pattern.source-in.html | OK |
| Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/path-objects/2d.path.rect.closed.html | OK |
| Canvas test: 2d.path.rect.closed | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsla-3 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html | OK |
| Canvas test: 2d.fillStyle.parse.rgb-clamp-1 | PASS |
| /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_002.html | OK |
| drawFocusIfNeeded does not draw a focus ring if the element is not in focus. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-clamp-1 | PASS |
| /2dcontext/path-objects/2d.path.stroke.prune.rect.html | OK |
| Zero-length line segments from rect and strokeRect are removed before stroking | PASS |
| /2dcontext/text-styles/2d.text.measure.width.space.html | OK |
| Space characters are converted to U+0020 and collapsed (per CSS) | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.rgba-3 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgba-5 | FAIL |
| /2dcontext/shadows/2d.shadow.clip.2.html | OK |
| Shadows are not drawn outside the clipping region | PASS |
| /2dcontext/text-styles/2d.text.font.parse.size.percentage.html | OK |
| Canvas test: 2d.text.font.parse.size.percentage | PASS |
| /2dcontext/transformations/2d.transformation.translate.basic.html | OK |
| translate() works | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html | OK |
| Canvas test: 2d.pattern.paint.repeat.coord1 | PASS |
| /2dcontext/compositing/2d.composite.uncovered.pattern.copy.html | OK |
| Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/compositing/2d.composite.image.xor.html | OK |
| Canvas test: 2d.composite.image.xor | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html | OK |
| createImageData() throws TypeError if arguments are not finite | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect1.html | OK |
| putImageData() only modifies areas inside the dirty rectangle, using width and height | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html | OK |
| Canvas test: 2d.gradient.interpolate.zerosize.stroke | PASS |
| /2dcontext/path-objects/2d.path.closePath.empty.html | OK |
| Canvas test: 2d.path.closePath.empty | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-2 | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html | OK |
| Testing actualBoundingBox | FAIL |
| /2dcontext/transformations/2d.transformation.setTransform.skewed.html | OK |
| Canvas test: 2d.transformation.setTransform.skewed | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.basic.image.html | OK |
| Canvas test: 2d.pattern.basic.image | PASS |
| /2dcontext/shadows/2d.shadow.outside.html | OK |
| Shadows of shapes outside the visible area can be offset onto the visible area | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hex1 | PASS |
| /2dcontext/compositing/2d.composite.solid.xor.html | OK |
| Canvas test: 2d.composite.solid.xor | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.nan.html | OK |
| ImageData.data converts NaN to 0 | PASS |
| /2dcontext/line-styles/setLineDash.html | OK |
| Invalid arguments to setLineDash() | PASS |
| setLineDash | PASS |
| /2dcontext/compositing/2d.composite.operation.nullsuffix.html | OK |
| Canvas test: 2d.composite.operation.nullsuffix | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.bigarc.html | OK |
| isPointInPath() works on unclosed arcs larger than 2pi | PASS |
| /2dcontext/compositing/2d.composite.uncovered.image.source-out.html | OK |
| drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/shadows/2d.shadow.composite.1.html | OK |
| Shadows are drawn using globalCompositeOperation | PASS |
| /2dcontext/path-objects/2d.path.closePath.newline.html | OK |
| Canvas test: 2d.path.closePath.newline | PASS |
| /2dcontext/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html | ERROR |
| createImageBitmap in e-sRGB from a sRGB HTMLVideoElement with resize. | TIMEOUT |
| createImageBitmap in e-sRGB from a sRGB SVG image with resize. | FAIL |
| createImageBitmap in e-sRGB from a transparent e-sRGB HTMLCanvasElement with resize. | NOTRUN |
| createImageBitmap in e-sRGB from a transparent sRGB Blob with resize. | NOTRUN |
| createImageBitmap in e-sRGB from a transparent sRGB HTMLCanvasElement with resize. | NOTRUN |
| createImageBitmap in e-sRGB from a transparent sRGB HTMLImageElement (BMP, ICO, PNG, WEBP) with resize. | FAIL |
| createImageBitmap in e-sRGB from an opaque e-sRGB HTMLCanvasElement with resize. | NOTRUN |
| createImageBitmap in e-sRGB from an opaque sRGB Blob with resize. | NOTRUN |
| createImageBitmap in e-sRGB from an opaque sRGB HTMLCanvasElement with resize. | NOTRUN |
| createImageBitmap in e-sRGB from an opaque sRGB HTMLImageElement (BMP, GIF, ICO, JPG, PNG, WEBP) with resize. | FAIL |
| createImageBitmap in e-sRGB from color managed Blob with resize. blobPixelFormat: uint8, transparency: false | NOTRUN |
| /2dcontext/pixel-manipulation/2d.imageData.put.cross.html | OK |
| putImageData() accepts image data got from a different canvas | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsl-8 | PASS |
| /2dcontext/compositing/2d.composite.globalAlpha.canvaspattern.html | OK |
| Canvas test: 2d.composite.globalAlpha.canvaspattern | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsl-9 | PASS |
| /2dcontext/compositing/2d.composite.image.source-over.html | OK |
| Canvas test: 2d.composite.image.source-over | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html | OK |
| Canvas test: 2d.drawImage.incomplete.reload | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hsl-2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.2.html | OK |
| Linear gradient coordinates are relative to the coordinate space at the time of filling | PASS |
| /2dcontext/shadows/2d.shadow.composite.2.html | OK |
| Shadows are drawn using globalCompositeOperation | PASS |
| /2dcontext/line-styles/2d.line.cap.invalid.html | OK |
| Setting lineCap to invalid values is ignored | PASS |
| /2dcontext/shadows/2d.shadow.offset.positiveY.html | OK |
| Shadows can be offset with positive y | PASS |
| /2dcontext/compositing/2d.composite.canvas.destination-out.html | OK |
| Canvas test: 2d.composite.canvas.destination-out | PASS |
| /2dcontext/wide-gamut-canvas/transferFromImageBitmap.html | OK |
| Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: float16, alpha: 0.5, intermediate color space: default | FAIL |
| Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: float16, alpha: 0.5, intermediate color space: none | FAIL |
| Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: float16, alpha: 1, intermediate color space: default | FAIL |
| Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: float16, alpha: 1, intermediate color space: none | FAIL |
| Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: uint8, alpha: 0.5, intermediate color space: default | FAIL |
| Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: uint8, alpha: 0.5, intermediate color space: none | FAIL |
| Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: uint8, alpha: 1, intermediate color space: default | FAIL |
| Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: uint8, alpha: 1, intermediate color space: none | FAIL |
| /2dcontext/the-canvas-state/2d.state.saverestore.globalAlpha.html | OK |
| save()/restore() works for globalAlpha | PASS |
| /2dcontext/path-objects/2d.path.arc.angle.1.html | OK |
| arc() draws pi/2 .. -pi anticlockwise correctly | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html | OK |
| strokeRect of 0x0 pixels draws nothing | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.3arg.html | OK |
| Canvas test: 2d.drawImage.3arg | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html | OK |
| Canvas test: 2d.pattern.image.incomplete.emptysrc | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html | OK |
| fillRect of zero pixels has no effect | PASS |
| /2dcontext/compositing/2d.composite.uncovered.fill.destination-in.html | OK |
| fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsl-5 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.undefined.html | OK |
| Canvas test: 2d.pattern.repeat.undefined | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html | OK |
| Canvas test: 2d.gradient.interpolate.overlap | PASS |
| /2dcontext/path-objects/2d.path.arc.selfintersect.2.html | OK |
| arc() with lineWidth > 2*radius is drawn sensibly | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-clamp-1 | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html | OK |
| Canvas test: 2d.drawImage.incomplete.removedsrc | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside2.html | OK |
| Canvas test: 2d.gradient.radial.outside2 | FAIL |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html | OK |
| Canvas test: 2d.drawImage.incomplete.emptysrc | PASS |
| /2dcontext/path-objects/2d.path.arc.shape.5.html | OK |
| arc() from 0 to 5pi does not draw crazy things | PASS |
| /2dcontext/compositing/2d.composite.transparent.destination-over.html | OK |
| Canvas test: 2d.composite.transparent.destination-over | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.rgba-2 | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html | OK |
| clearRect is affected by transforms | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.rgb-2 | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html | OK |
| fillRect is affected by clipping regions | PASS |
| /2dcontext/transformations/2d.transformation.setTransform.nonfinite.html | OK |
| setTransform() with Infinity/NaN is ignored | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect2.html | OK |
| putImageData() only modifies areas inside the dirty rectangle, using x and y | PASS |
| /2dcontext/compositing/2d.composite.transparent.source-atop.html | OK |
| Canvas test: 2d.composite.transparent.source-atop | PASS |
| /2dcontext/compositing/2d.composite.transparent.copy.html | OK |
| Canvas test: 2d.composite.transparent.copy | PASS |
| /2dcontext/path-objects/2d.path.rect.end.1.html | OK |
| Canvas test: 2d.path.rect.end.1 | PASS |
| /2dcontext/shadows/2d.shadow.offset.negativeY.html | OK |
| Shadows can be offset with negative y | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create2.this.html | OK |
| createImageData(sw, sh) should throw when called with the wrong |this| | PASS |
| /2dcontext/wide-gamut-canvas/ImageData-fidelity.html | OK |
| Verify that drawImage->getImageData round trip preserves color values when image metadata has no color space and canvas uses the default color space. | PASS |
| Verify that drawImage->getImageData round trip preserves color values when image metadata has no color space and canvas uses the srgb color space. | PASS |
| Verify that drawImage->getImageData round trip preserves color values when image metadata has srgb color space and canvas uses the default color space. | PASS |
| Verify that drawImage->getImageData round trip preserves color values when image metadata has srgb color space and canvas uses the srgb color space. | PASS |
| /2dcontext/compositing/2d.composite.globalAlpha.default.html | OK |
| Canvas test: 2d.composite.globalAlpha.default | PASS |
| /2dcontext/path-objects/2d.path.quadraticCurveTo.basic.html | OK |
| Canvas test: 2d.path.quadraticCurveTo.basic | PASS |
| /2dcontext/imagebitmap/canvas-createImageBitmap-video-resize.html | TIMEOUT |
| createImageBitmap(HTMLVideoElement) with resize option | NOTRUN |
| /2dcontext/fill-and-stroke-styles/2d.pattern.crosscanvas.html | OK |
| Canvas test: 2d.pattern.crosscanvas | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsla-7 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-1 | PASS |
| /2dcontext/line-styles/2d.line.join.bevel.html | OK |
| lineJoin 'bevel' is rendered correctly | PASS |
| /2dcontext/compositing/2d.composite.transparent.xor.html | OK |
| Canvas test: 2d.composite.transparent.xor | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.html | OK |
| ImageData has a usable constructor | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html | OK |
| strokeRect of Nx0 pixels draws a closed line with no caps | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html | OK |
| Canvas test: 2d.fillStyle.parse.rgb-clamp-5 | PASS |
| /2dcontext/path-objects/2d.path.arcTo.zero.2.html | OK |
| arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html | OK |
| Canvas test: 2d.gradient.interpolate.zerosize.fillText | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.transform.3.html | OK |
| isPointInPath() handles transformations correctly | PASS |
| /2dcontext/compositing/2d.composite.transparent.destination-out.html | OK |
| Canvas test: 2d.composite.transparent.destination-out | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html | OK |
| clearRect() with Infinity/NaN is ignored | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html | OK |
| drawImage() with Infinity/NaN is ignored | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html | OK |
| Canvas test: 2d.fillStyle.parse.hsla-clamp-5 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.1.html | OK |
| Linear gradient coordinates are relative to the coordinate space at the time of filling | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html | OK |
| Canvas test: 2d.fillStyle.parse.hex6 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.order.rows.html | OK |
| getImageData() returns topmost rows first | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.name-1 | PASS |
| /2dcontext/shadows/2d.shadow.canvas.transparent.1.html | OK |
| Shadows are not drawn for transparent canvases | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.fillStyle.html | OK |
| save()/restore() works for fillStyle | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.html | OK |
| Canvas test: 2d.gradient.radial.outside3 | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-percent | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsl-6 | PASS |
| /2dcontext/compositing/2d.composite.clip.lighter.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsl-4 | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html | OK |
| clearRect is affected by clipping regions | PASS |
| /2dcontext/path-objects/2d.path.arc.twopie.1.html | OK |
| arc() draws nothing when end = start + 2pi-e and anticlockwise | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-hsla-4 | PASS |
| /2dcontext/compositing/2d.composite.solid.source-over.html | OK |
| Canvas test: 2d.composite.solid.source-over | PASS |
| /2dcontext/path-objects/2d.path.arcTo.collinear.1.html | OK |
| arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1 | PASS |
| /2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_004.html | OK |
| drawFocusIfNeeded does draw a focus ring if the element is in focus. | PASS |
| /2dcontext/conformance-requirements/2d.voidreturn.html | OK |
| void methods return undefined | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-3 | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html | OK |
| Canvas test: 2d.drawImage.9arg.basic | PASS |
| /2dcontext/path-objects/2d.path.arc.empty.html | OK |
| arc() with an empty path does not draw a straight line to the start point | PASS |
| /2dcontext/path-objects/2d.path.rect.zero.6.html | OK |
| Canvas test: 2d.path.rect.zero.6 | PASS |
| /2dcontext/shadows/2d.shadow.stroke.join.3.html | OK |
| Shadows are drawn for stroke joins respecting miter limit | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html | OK |
| textAlign right is the right of the last em square (not the bounding box) | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-3 | PASS |
| /2dcontext/compositing/2d.composite.uncovered.fill.source-in.html | OK |
| fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html | OK |
| Canvas test: 2d.pattern.paint.repeat.coord3 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create1.initial.html | OK |
| createImageData(imgdata) returns transparent black data of the right size | PASS |
| /2dcontext/path-objects/2d.path.clip.empty.html | OK |
| Canvas test: 2d.path.clip.empty | PASS |
| /2dcontext/path-objects/2d.path.rect.nonfinite.html | OK |
| rect() with Infinity/NaN is ignored | PASS |
| /2dcontext/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html | OK |
| Test color managed cretateImageData: {srgb, float16} -> {srgb, float32} | FAIL |
| Test color managed cretateImageData: {srgb, uint8} -> {srgb, uint8} | FAIL |
| Test color managed getImageData: {srgb, float16} -> {srgb, float32} | FAIL |
| Test color managed getImageData: {srgb, uint8} -> {srgb, uint8} | FAIL |
| Test color managed putImageData: {srgb, float32} -> {srgb, float16} | FAIL |
| Test color managed putImageData: {srgb, float32} -> {srgb, uint8} | FAIL |
| Test color managed putImageData: {srgb, uint16} -> {srgb, float16} | FAIL |
| Test color managed putImageData: {srgb, uint16} -> {srgb, uint8} | FAIL |
| Test color managed putImageData: {srgb, uint8} -> {srgb, float16} | FAIL |
| Test color managed putImageData: {srgb, uint8} -> {srgb, uint8} | FAIL |
| /2dcontext/path-objects/2d.path.rect.zero.3.html | OK |
| Canvas test: 2d.path.rect.zero.3 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.html | OK |
| Canvas test: 2d.fillStyle.parse.html4 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.object.return.html | OK |
| createLinearGradient() and createRadialGradient() returns objects implementing CanvasGradient | PASS |
| /2dcontext/shadows/2d.shadow.pattern.transparent.1.html | OK |
| Shadows are not drawn for transparent fill patterns | PASS |
| /2dcontext/shadows/2d.shadow.enable.blur.html | OK |
| Shadows are drawn if shadowBlur is set | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.html | OK |
| Canvas test: 2d.gradient.interpolate.outside | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hex4 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html | OK |
| Canvas test: 2d.pattern.basic.zerocanvas | PASS |
| /2dcontext/shadows/2d.shadow.enable.off.2.html | OK |
| Shadows are not drawn when only shadowColor is set | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html | OK |
| Canvas patterns do not get flipped when painted | PASS |
| /2dcontext/compositing/2d.composite.operation.darker.html | OK |
| Canvas test: 2d.composite.operation.darker | FAIL |
| /2dcontext/compositing/2d.composite.clip.copy.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html | OK |
| createLinearGradient() throws TypeError if arguments are not finite | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html | OK |
| Canvas test: 2d.pattern.paint.repeaty.coord1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-1 | PASS |
| /2dcontext/compositing/2d.composite.image.source-out.html | OK |
| Canvas test: 2d.composite.image.source-out | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.basic.1.html | OK |
| isPointInPath() detects whether the point is inside the path | PASS |
| /2dcontext/path-objects/2d.path.arcTo.coincide.2.html | OK |
| arcTo() draws a straight line to P1 if P1 = P2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html | OK |
| Canvas test: 2d.gradient.interpolate.colouralpha | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.5arg.html | OK |
| Canvas test: 2d.drawImage.5arg | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.composite.html | OK |
| Canvas test: 2d.drawImage.composite | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.dirty.outside.html | OK |
| putImageData() handles dirty rectangles outside the canvas correctly | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgba-4 | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.name-5 | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html | OK |
| clearRect is not affected by globalAlpha | PASS |
| /2dcontext/path-objects/2d.path.arc.end.html | OK |
| arc() adds the end point of the arc to the subpath | PASS |
| /2dcontext/path-objects/2d.path.arc.zero.1.html | OK |
| arc() draws nothing when startAngle = endAngle and anticlockwise | PASS |
| /2dcontext/path-objects/2d.path.arc.zero.2.html | OK |
| arc() draws nothing when startAngle = endAngle and clockwise | PASS |
| /2dcontext/shadows/2d.shadow.clip.3.html | OK |
| Shadows of clipped shapes are still drawn within the clipping region | PASS |
| /2dcontext/text-styles/2d.text.align.invalid.html | OK |
| Canvas test: 2d.text.align.invalid | PASS |
| /2dcontext/compositing/2d.composite.solid.destination-out.html | OK |
| Canvas test: 2d.composite.solid.destination-out | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.rgb-3 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.source.size.html | OK |
| getImageData() returns bigger ImageData for bigger source rectangle | PASS |
| /2dcontext/path-objects/2d.path.arcTo.shape.end.html | OK |
| arcTo() does not draw anything from P1 to P2 | PASS |
| /2dcontext/fill-and-stroke-styles/canvas_colorsandstyles_createlineargradient_001.htm | OK |
| linear gradient from point to self draws nothing | PASS |
| /2dcontext/path-objects/2d.path.arc.scale.1.html | OK |
| Non-uniformly scaled arcs are the right shape | PASS |
| /2dcontext/path-objects/2d.path.rect.zero.1.html | OK |
| Canvas test: 2d.path.rect.zero.1 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html | OK |
| Canvas test: 2d.pattern.paint.norepeat.outside | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html | OK |
| strokeRect of Nx0 pixels draws a straight line | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.name-4 | PASS |
| /2dcontext/path-objects/2d.path.arcTo.coincide.1.html | OK |
| arcTo() has no effect if P0 = P1 | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.alpha.html | OK |
| Canvas test: 2d.drawImage.alpha | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html | OK |
| fillText handles maxWidth correctly | PASS |
| /2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.html | OK |
| drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/path-objects/2d.path.bezierCurveTo.shape.html | OK |
| Canvas test: 2d.path.bezierCurveTo.shape | PASS |
| /2dcontext/shadows/2d.shadow.gradient.transparent.1.html | OK |
| Shadows are not drawn for transparent gradient fills | PASS |
| /2dcontext/path-objects/2d.path.arcTo.ensuresubpath.2.html | OK |
| If there is no subpath, the first control point is added | PASS |
| /2dcontext/path-objects/2d.path.stroke.overlap.html | OK |
| Stroked subpaths are combined before being drawn | PASS |
| /2dcontext/transformations/2d.transformation.transform.identity.html | OK |
| transform() with the identity matrix does nothing | PASS |
| /2dcontext/path-objects/2d.path.fill.winding.subtract.3.html | OK |
| Canvas test: 2d.path.fill.winding.subtract.3 | PASS |
| /2dcontext/shadows/2d.shadow.attributes.shadowBlur.valid.html | OK |
| Canvas test: 2d.shadow.attributes.shadowBlur.valid | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html | OK |
| textAlign start with ltr is the left edge | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.object.compare.html | OK |
| Canvas test: 2d.gradient.object.compare | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html | OK |
| Canvas test: 2d.pattern.paint.repeatx.coord1 | PASS |
| /2dcontext/path-objects/2d.path.bezierCurveTo.basic.html | OK |
| Canvas test: 2d.path.bezierCurveTo.basic | PASS |
| /2dcontext/path-objects/2d.path.transformation.basic.html | OK |
| Canvas test: 2d.path.transformation.basic | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.clip.html | OK |
| Canvas test: 2d.drawImage.clip | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgb-2 | FAIL |
| /2dcontext/line-styles/2d.line.width.transformed.html | OK |
| Line stroke widths are affected by scale transformations | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.shadowBlur.html | OK |
| save()/restore() works for shadowBlur | PASS |
| /2dcontext/path-objects/2d.path.arcTo.negative.html | OK |
| arcTo() with negative radius throws an exception | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.transform.html | OK |
| Canvas test: 2d.drawImage.transform | PASS |
| /2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.html | OK |
| Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/shadows/2d.shadow.pattern.basic.html | OK |
| Shadows are drawn for fill patterns | PASS |
| /2dcontext/shadows/2d.shadow.transform.2.html | OK |
| Shadow offsets are not affected by transformations | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html | OK |
| clearRect of negative sizes works | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hex5 | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html | OK |
| Testing fontBoundingBox | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html | OK |
| Canvas test: 2d.drawImage.incomplete.nosrc | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html | OK |
| fillRect is affected by transforms | PASS |
| /2dcontext/shadows/2d.shadow.image.alpha.html | OK |
| Shadows are drawn correctly for partially-transparent images | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.round.html | OK |
| ImageData.data rounds numbers with round-to-zero | PASS |
| /2dcontext/line-styles/2d.line.cap.round.html | OK |
| lineCap 'round' is rendered correctly | PASS |
| /2dcontext/path-objects/2d.path.stroke.scale1.html | OK |
| Stroke line widths are scaled by the current transformation matrix | PASS |
| /2dcontext/compositing/2d.composite.transparent.source-over.html | OK |
| Canvas test: 2d.composite.transparent.source-over | PASS |
| /2dcontext/text-styles/2d.text.draw.space.collapse.other.html | OK |
| Space characters are converted to U+0020, and collapsed (per CSS) | FAIL |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html | OK |
| fillRect draws shadows | PASS |
| /2dcontext/compositing/2d.composite.clip.source-atop.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create2.negative.html | OK |
| createImageData(sw, sh) takes the absolute magnitude of the size arguments | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.basic.type.html | OK |
| Canvas test: 2d.pattern.basic.type | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-4 | PASS |
| /2dcontext/path-objects/2d.path.arc.angle.4.html | OK |
| arc() draws a full circle when clockwise and end > start+2pi | PASS |
| /2dcontext/path-objects/2d.path.fill.winding.add.html | OK |
| Canvas test: 2d.path.fill.winding.add | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html | OK |
| Canvas test: 2d.fillStyle.parse.rgb-clamp-3 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-3 | PASS |
| /2dcontext/compositing/2d.composite.image.source-in.html | OK |
| Canvas test: 2d.composite.image.source-in | PASS |
| /2dcontext/line-styles/2d.line.join.closed.html | OK |
| Line joins are drawn at the corner of a closed rectangle | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html | OK |
| Non-space characters are not converted to U+0020 and collapsed | PASS |
| /2dcontext/scroll/2d.scrollPathIntoView.basic.html | OK |
| scrollPathIntoView() works | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html | OK |
| Canvas test: 2d.pattern.paint.repeatx.outside | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html | OK |
| Canvas test: 2d.pattern.image.incomplete.removedsrc | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html | OK |
| drawImage() of an animated GIF draws the first frame | FAIL |
| /2dcontext/conformance-requirements/2d.missingargs.html | OK |
| Missing arguments cause TypeError | PASS |
| /2dcontext/path-objects/2d.path.arc.default.html | OK |
| arc() with missing last argument defaults to clockwise | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hex3 | PASS |
| /2dcontext/text-styles/2d.text.font.parse.basic.html | OK |
| Canvas test: 2d.text.font.parse.basic | PASS |
| /2dcontext/path-objects/2d.path.moveTo.basic.html | OK |
| Canvas test: 2d.path.moveTo.basic | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside1.html | OK |
| Canvas test: 2d.gradient.radial.outside1 | FAIL |
| /2dcontext/pixel-manipulation/2d.imageData.create2.type.html | OK |
| createImageData(sw, sh) returns an ImageData object containing a Uint8ClampedArray object | PASS |
| /2dcontext/path-objects/2d.path.stroke.unaffected.html | OK |
| Stroking does not start a new path or subpath | PASS |
| /2dcontext/shadows/2d.shadow.image.transparent.1.html | OK |
| Shadows are not drawn for transparent images | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside3.html | OK |
| Canvas test: 2d.gradient.radial.inside3 | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html | OK |
| Canvas test: 2d.pattern.image.incomplete.reload | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html | OK |
| Canvas test: 2d.pattern.paint.repeat.outside | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hsl-5 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html | OK |
| Canvas test: 2d.pattern.paint.repeat.basic | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html | OK |
| Canvas test: 2d.text.measure.width.basic | PASS |
| /2dcontext/transformations/2d.transformation.order.html | OK |
| Transformations are applied in the right order | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgb-4 | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.pattern.modify.image1.html | OK |
| Canvas test: 2d.pattern.modify.image1 | PASS |
| /2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html | OK |
| Canvas test: 2d.shadow.attributes.shadowColor.invalid | PASS |
| /2dcontext/imagebitmap/createImageBitmap-transfer.html | OK |
| Transfer ImageBitmap created from a Blob | PASS |
| Transfer ImageBitmap created from a bitmap HTMLImageElement | PASS |
| Transfer ImageBitmap created from a bitmap SVGImageElement | FAIL |
| Transfer ImageBitmap created from a vector HTMLImageElement | PASS |
| Transfer ImageBitmap created from a vector SVGImageElement | FAIL |
| Transfer ImageBitmap created from an HTMLCanvasElement | PASS |
| Transfer ImageBitmap created from an HTMLVideoElement | PASS |
| Transfer ImageBitmap created from an HTMLVideoElement from a data URL | PASS |
| Transfer ImageBitmap created from an ImageBitmap | PASS |
| Transfer ImageBitmap created from an ImageData | FAIL |
| Transfer ImageBitmap created from an OffscreenCanvas | FAIL |
| /2dcontext/path-objects/2d.path.isPointInPath.transform.4.html | OK |
| isPointInPath() handles transformations correctly | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.measure.baselines.html | OK |
| Testing baselines | FAIL |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.null.html | OK |
| Canvas test: 2d.drawImage.null | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.broken.html | OK |
| Canvas test: 2d.drawImage.broken | FAIL |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html | OK |
| Canvas test: 2d.drawImage.9arg.sourcepos | PASS |
| /2dcontext/compositing/2d.composite.globalAlpha.imagepattern.html | OK |
| Canvas test: 2d.composite.globalAlpha.imagepattern | PASS |
| /2dcontext/wide-gamut-canvas/imagedata-no-color-settings-crash.html | OK |
| Putting a float-32 ImageData with no color settings on a context 2D should not crash. | FAIL |
| Putting a uint-16 ImageData with no color settings on a context 2D should not crash. | FAIL |
| /2dcontext/the-canvas-state/2d.state.saverestore.font.html | OK |
| save()/restore() works for font | PASS |
| /2dcontext/wide-gamut-canvas/canvas-colorManaged-toBlob-toDataURL.html | OK |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: float16, alpha: 0.5 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: float16, alpha: 1 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: uint8, alpha: 0.5 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: uint8, alpha: 1 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: float16, alpha: 0.5 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: float16, alpha: 1 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: uint8, alpha: 0.5 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: uint8, alpha: 1 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: float16, alpha: 0.5 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: float16, alpha: 1 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: uint8, alpha: 0.5 | PASS |
| Test if toBlob() respects legacy behavior in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: uint8, alpha: 1 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: float16, alpha: 0.5 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: float16, alpha: 1 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: uint8, alpha: 0.5 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: uint8, alpha: 1 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: float16, alpha: 0.5 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: float16, alpha: 1 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: uint8, alpha: 0.5 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: uint8, alpha: 1 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: float16, alpha: 0.5 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: float16, alpha: 1 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: uint8, alpha: 0.5 | PASS |
| Test if toDataURL() respects legacy behavior in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: uint8, alpha: 1 | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.lineJoin.html | OK |
| save()/restore() works for lineJoin | PASS |
| /2dcontext/compositing/2d.composite.globalAlpha.canvascopy.html | OK |
| Canvas test: 2d.composite.globalAlpha.canvascopy | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.textBaseline.html | OK |
| save()/restore() works for textBaseline | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html | OK |
| Canvas test: 2d.gradient.interpolate.overlap2 | PASS |
| /2dcontext/line-styles/2d.line.miter.obtuse.html | OK |
| Miter joins are drawn correctly with obtuse angles | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html | OK |
| currentColor is solid black when the canvas element is not in a document | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.bounds.html | OK |
| ImageData has a usable constructor | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.zero.html | OK |
| getImageData() throws INDEX_SIZE_ERR if size is zero | FAIL |
| /2dcontext/compositing/2d.composite.uncovered.image.copy.html | OK |
| drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgba-2 | PASS |
| /2dcontext/text-styles/2d.text.baseline.invalid.html | OK |
| Canvas test: 2d.text.baseline.invalid | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html | OK |
| Canvas test: 2d.pattern.repeat.null | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.image.broken.html | OK |
| Canvas test: 2d.pattern.image.broken | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html | OK |
| Canvas test: 2d.fillStyle.parse.hsla-clamp-1 | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html | OK |
| textAlign start with rtl is the right edge | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.create1.basic.html | OK |
| createImageData(imgdata) exists and returns something | PASS |
| /2dcontext/transformations/2d.transformation.rotate.direction.html | OK |
| rotate() is clockwise | PASS |
| /2dcontext/path-objects/2d.path.arc.angle.2.html | OK |
| arc() draws -3pi/2 .. -pi anticlockwise correctly | PASS |
| /2dcontext/scroll/2d.scrollPathIntoView.verticalLR.html | OK |
| scrollPathIntoView() works in vertical-lr writing mode | FAIL |
| /2dcontext/text-styles/2d.text.draw.baseline.bottom.html | OK |
| textBaseline bottom is the bottom of the em square (not the bounding box) | FAIL |
| /2dcontext/compositing/2d.composite.image.source-atop.html | OK |
| Canvas test: 2d.composite.image.source-atop | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html | OK |
| textAlign end with rtl is the left edge | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.arc.html | OK |
| isPointInPath() works on arcs | PASS |
| /2dcontext/path-objects/2d.path.rect.end.2.html | OK |
| Canvas test: 2d.path.rect.end.2 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html | OK |
| Canvas test: 2d.fillStyle.parse.transparent-1 | PASS |
| /2dcontext/line-styles/2d.line.defaults.html | OK |
| Canvas test: 2d.line.defaults | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.put.created.html | OK |
| putImageData() puts image data from createImageData() onto the canvas | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html | OK |
| Canvas test: 2d.gradient.radial.cone.behind | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.transformation.html | OK |
| save()/restore() affects the current transformation matrix | PASS |
| /2dcontext/compositing/2d.composite.uncovered.fill.source-out.html | OK |
| fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.source.negative.html | OK |
| getImageData() works with negative width and height, and returns top-to-bottom left-to-right | PASS |
| /2dcontext/shadows/2d.shadow.image.scale.html | OK |
| Shadows are drawn correctly for scaled images | PASS |
| /2dcontext/compositing/2d.composite.globalAlpha.fill.html | OK |
| Canvas test: 2d.composite.globalAlpha.fill | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html | OK |
| Canvas test: 2d.pattern.repeat.unrecognisednull | PASS |
| /2dcontext/compositing/2d.composite.uncovered.image.source-in.html | OK |
| drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged. | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-3 | PASS |
| /2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html | OK |
| fillText handles maxWidth correctly | PASS |
| /2dcontext/the-canvas-state/2d.state.saverestore.stackdepth.html | OK |
| save()/restore() stack depth is not unreasonably limited | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html | OK |
| clearRect clears to transparent black | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html | OK |
| createPattern() of an animated GIF draws the first frame | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.default.html | OK |
| Canvas test: 2d.fillStyle.default | PASS |
| /2dcontext/path-objects/2d.path.fill.winding.subtract.2.html | OK |
| Canvas test: 2d.path.fill.winding.subtract.2 | PASS |
| /2dcontext/shadows/2d.shadow.composite.3.html | OK |
| Areas outside shadows are drawn correctly with destination-out | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html | OK |
| currentColor is computed when the attribute is set, not when it is painted | PASS |
| /2dcontext/path-objects/2d.path.arc.twopie.2.html | OK |
| arc() draws a full circle when end = start + 2pi-e and clockwise | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hsl-6 | PASS |
| /2dcontext/path-objects/2d.path.arc.angle.3.html | OK |
| arc() wraps angles mod 2pi when anticlockwise and end > start+2pi | PASS |
| /2dcontext/path-objects/2d.path.fill.closed.basic.html | OK |
| Canvas test: 2d.path.fill.closed.basic | PASS |
| /2dcontext/shadows/2d.shadow.enable.off.1.html | OK |
| Shadows are not drawn when only shadowColor is set | PASS |
| /2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas2.html | OK |
| Canvas test: 2d.pattern.modify.canvas2 | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html | OK |
| strokeRect is not affected by globalCompositeOperation | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-1 | PASS |
| /2dcontext/path-objects/2d.path.initial.html | OK |
| Canvas test: 2d.path.initial | PASS |
| /2dcontext/path-objects/2d.path.isPointInPath.nonfinite.html | OK |
| isPointInPath() returns false for non-finite arguments | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.nowrap.html | OK |
| Stretched images do not get pixels wrapping around the edges | PASS |
| /2dcontext/hit-regions/addHitRegions-NotSupportedError-01.html | OK |
| fillRect should not affect current default path and NotSupportedError should be thrown. | FAIL |
| fillText should not affect current default path and NotSupportedError should be thrown. | FAIL |
| strokeRect should not affect current default path and NotSupportedError should be thrown. | FAIL |
| strokeText should not affect current default path and NotSupportedError shuld be thrown. | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html | OK |
| Canvas test: 2d.pattern.paint.repeaty.outside | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html | OK |
| Canvas test: 2d.gradient.radial.cone.shape2 | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html | OK |
| Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError | PASS |
| /2dcontext/transformations/2d.transformation.transform.nonfinite.html | OK |
| transform() with Infinity/NaN is ignored | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html | OK |
| Canvas test: 2d.gradient.interpolate.zerosize.strokeText | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html | OK |
| Canvas test: 2d.fillStyle.parse.hex8 | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.object.type.html | OK |
| window.CanvasGradient exists and has the right properties | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.html | OK |
| Canvas test: 2d.gradient.interpolate.solid | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.object.undefined.html | OK |
| ImageData.data converts undefined to 0 | PASS |
| /2dcontext/path-objects/2d.path.rect.basic.html | OK |
| Canvas test: 2d.path.rect.basic | PASS |
| /2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativesource.html | OK |
| Negative source width/height represents the correct rectangle | PASS |
| /2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html | OK |
| If there is no subpath, the first control point is added (and nothing is drawn up to it) | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.3.html | OK |
| Linear gradient transforms do not experience broken caching effects | PASS |
| /2dcontext/shadows/2d.shadow.pattern.alpha.html | OK |
| Shadows are drawn correctly for partially-transparent fill patterns | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgb-6 | FAIL |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html | OK |
| Canvas test: 2d.fillStyle.parse.css-color-4-rgba-6 | FAIL |
| /2dcontext/compositing/2d.composite.globalAlpha.invalid.html | OK |
| Canvas test: 2d.composite.globalAlpha.invalid | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html | OK |
| strokeRect() with Infinity/NaN is ignored | PASS |
| /2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html | OK |
| createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html | OK |
| fillRect of negative sizes works | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html | OK |
| Canvas test: 2d.fillStyle.parse.hsl-5 | PASS |
| /2dcontext/line-styles/2d.line.join.parallel.html | OK |
| Line joins are drawn at 180-degree joins | PASS |
| /2dcontext/compositing/2d.composite.solid.destination-atop.html | OK |
| Canvas test: 2d.composite.solid.destination-atop | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html | OK |
| Canvas test: 2d.fillStyle.parse.rgb-eof | PASS |
| /2dcontext/compositing/2d.composite.operation.casesensitive.html | OK |
| Canvas test: 2d.composite.operation.casesensitive | PASS |
| /2dcontext/transformations/2d.transformation.rotate.radians.html | OK |
| rotate() uses radians | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html | OK |
| Canvas test: 2d.fillStyle.parse.rgba-solid-4 | PASS |
| /2dcontext/path-objects/2d.path.moveTo.newsubpath.html | OK |
| Canvas test: 2d.path.moveTo.newsubpath | PASS |
| /2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html | OK |
| Canvas test: 2d.fillStyle.parse.invalid.hex6 | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.type.html | OK |
| getImageData() returns an ImageData object containing a Uint8ClampedArray object | PASS |
| /2dcontext/pixel-manipulation/2d.imageData.get.basic.html | OK |
| getImageData() exists and returns something | PASS |
| /2dcontext/compositing/2d.composite.clip.destination-out.html | OK |
| fill() does not affect pixels outside the clip region. | PASS |
| /2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html | OK |
| clearRect is not affected by globalCompositeOperation | PASS |
| /2dcontext/path-objects/2d.path.rect.winding.html | OK |
| Canvas test: 2d.path.rect.winding | FAIL |