| Test | Opera/9.21 (X11; Linux i686; U; en) (?) | Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.8439/20; U; en) (?) | 
| fallback.basic | Failed assertion canvas.childNodes.length == 1 (got 0[number], expected 1[number])
 | Failed assertion canvas.childNodes.length == 1 (got 0[number], expected 1[number])
 | 
| fallback.multiple | Failed assertion canvas.childNodes.length == 2 (got 0[number], expected 2[number])
 | Failed assertion canvas.childNodes.length == 2 (got 0[number], expected 2[number])
 | 
| fallback.nested | Failed assertion canvas.childNodes.length == 2 (got 0[number], expected 2[number])
 | Failed assertion canvas.childNodes.length == 2 (got 0[number], expected 2[number])
 | 
| type.name |  |  | 
| type.exists |  |  | 
| type.delete | Failed assertion: window.HTMLCanvasElement
 | Failed assertion: window.HTMLCanvasElement
 | 
| type.prototype |  |  | 
| type.replace |  |  | 
| type.extend |  |  | 
| size.attributes |  |  | 
| size.attributes.type.get |  |  | 
| size.attributes.type.set |  |  | 
| size.attributes.default |  |  | 
| size.attributes.reflect.1 | Failed assertion canvas.getAttribute('width') == '120' (got 100[string], expected 120[string])Failed assertion canvas.getAttribute('height') == '60' (got 50[string], expected 60[string])
 | Failed assertion canvas.getAttribute('width') == '120' (got 100[string], expected 120[string])Failed assertion canvas.getAttribute('height') == '60' (got 50[string], expected 60[string])
 | 
| size.attributes.reflect.2 | Failed assertion canvas.width == 120 (got 100[number], expected 120[number])Failed assertion canvas.height == 60 (got 50[number], expected 60[number])
 | Failed assertion canvas.width == 120 (got 100[number], expected 120[number])Failed assertion canvas.height == 60 (got 50[number], expected 60[number])
 | 
| size.attributes.removed | Failed assertion canvas.width == 300 (got 120[number], expected 300[number])
 | Failed assertion canvas.width == 300 (got 120[number], expected 300[number])
 | 
| size.attributes.parse.whitespace | Failed assertion canvas.width == 100 (got 50[number], expected 100[number])
 | Failed assertion canvas.width == 100 (got 50[number], expected 100[number])
 | 
| size.attributes.parse.nonnumber | Failed assertion canvas.width == 300 (got 50[number], expected 300[number])
 | Failed assertion canvas.width == 300 (got 50[number], expected 300[number])
 | 
| size.attributes.parse.zero | Failed assertion canvas.width == 0 (got 50[number], expected 0[number])
 | Failed assertion canvas.width == 0 (got 50[number], expected 0[number])
 | 
| size.attributes.parse.negative | Failed assertion canvas.width == 300 (got 50[number], expected 300[number])
 | Failed assertion canvas.width == 300 (got 50[number], expected 300[number])
 | 
| size.attributes.parse.floatsuffix.zero | Failed assertion canvas.width == 100 (got 50[number], expected 100[number])
 | Failed assertion canvas.width == 100 (got 50[number], expected 100[number])
 | 
| size.attributes.parse.floatsuffix.nonzero | Failed assertion canvas.width == 100 (got 50[number], expected 100[number])
 | Failed assertion canvas.width == 100 (got 50[number], expected 100[number])
 | 
| size.attributes.parse.badsuffix | Failed assertion canvas.width == 100 (got 50[number], expected 100[number])
 | Failed assertion canvas.width == 100 (got 50[number], expected 100[number])
 | 
| size.attributes.style |  |  | 
| initial.colour |  |  | 
| initial.reset.different |  |  | 
| initial.reset.same |  |  | 
| initial.reset.security |  |  | 
| initial.reset.path |  |  | 
| initial.reset.clip |  |  | 
| initial.reset.transform |  |  | 
| initial.reset.gradient |  |  | 
| initial.reset.pattern | Failed assertion: got pixel [0,0,0,255] at (50,25), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | 
| context.empty |  |  | 
| context.unrecognised.badname |  |  | 
| context.unrecognised.badsuffix |  |  | 
| context.unrecognised.nullsuffix | Failed assertion canvas.getContext("2d\0") === null (got [object CanvasRenderingContext2D][object], expected [object])
 | Failed assertion canvas.getContext("2d\0") === null (got [object CanvasRenderingContext2D][object], expected [object])
 | 
| context.unrecognised.unicode |  |  | 
| context.casesensitive |  |  | 
| toDataURL.default |  |  | 
| toDataURL.png |  |  | 
| toDataURL.unrecognised |  |  | 
| toDataURL.lowercase |  |  | 
| toDataURL.arguments.1 |  |  | 
| toDataURL.arguments.2 |  |  | 
| toDataURL.arguments.3 |  |  | 
| toDataURL.nocontext | Aborted with exception: Statement on line 69: Could not convert undefined or null to objectBacktrace:  Line 69 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    if (! a.match(b))      Line 6 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.toDataURL.nocontext.html    _assertMatch(data, /^data:image\/png[;,]/, "data", "/^data:image\\/png[;,]/");  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 | Aborted with exception: Statement on line 69: Cannot convert undefined or null to ObjectBacktrace:  Line 69 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js: In function _assertMatch    	if (! a.match(b))  Line 6 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.toDataURL.nocontext.html    _assertMatch(data, /^data:image\/png[;,]/, "data", "/^data:image\\/png[;,]/");  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    			test(canvas, ctx);  ...
 | 
| toDataURL.primarycolours | Cannot automatically verify result
 |  | 
| toDataURL.complexcolours | Cannot automatically verify result
 |  | 
| toDataURL.security.domain |  |  | 
| toDataURL.security.pattern |  |  | 
| toDataURL.security.propagate |  |  | 
| toDataURL.security.propagate2 |  |  | 
| toDataURL.security.subdomain | Cannot automatically verify result
 |  | 
| toDataURL.security.superdomain | Cannot automatically verify result
 |  | 
| 2d.getcontext.exists |  |  | 
| 2d.type.name |  |  | 
| 2d.type.exists |  |  | 
| 2d.type.delete | Failed assertion window.CanvasRenderingContext2D !== undefined (got [undefined], expected not [undefined])
 | Failed assertion window.CanvasRenderingContext2D !== undefined (got [undefined], expected not [undefined])
 | 
| 2d.type.prototype |  |  | 
| 2d.type.replace |  |  | 
| 2d.type.extend |  |  | 
| 2d.getcontext.unique | Failed assertion canvas.getContext('2d') === canvas.getContext('2d') (got [object CanvasRenderingContext2D][object], expected [object CanvasRenderingContext2D][object])
 | Failed assertion canvas.getContext('2d') === canvas.getContext('2d') (got [object CanvasRenderingContext2D][object], expected [object CanvasRenderingContext2D][object])
 | 
| 2d.getcontext.shared |  |  | 
| 2d.voidreturn |  |  | 
| 2d.coordinatespace | Cannot automatically verify result
 |  | 
| 2d.canvas.reference |  |  | 
| 2d.canvas.readonly |  |  | 
| 2d.state.saverestore.strokeStyle |  |  | 
| 2d.state.saverestore.fillStyle |  |  | 
| 2d.state.saverestore.globalAlpha |  |  | 
| 2d.state.saverestore.lineWidth |  |  | 
| 2d.state.saverestore.lineCap |  |  | 
| 2d.state.saverestore.lineJoin |  |  | 
| 2d.state.saverestore.miterLimit |  |  | 
| 2d.state.saverestore.shadowOffsetX |  |  | 
| 2d.state.saverestore.shadowOffsetY |  |  | 
| 2d.state.saverestore.shadowBlur |  |  | 
| 2d.state.saverestore.shadowColor |  | Failed assertion ctx.shadowColor === old (got rgba(0, 0, 0, 〠늿㱸[string], expected rgba(0, 0, 0, 〠뼀)[string])
 | 
| 2d.state.saverestore.globalCompositeOperation |  |  | 
| initial.reset.2dstate |  |  | 
| 2d.state.saverestore.transformation |  |  | 
| 2d.state.saverestore.clip |  |  | 
| 2d.state.saverestore.path |  |  | 
| 2d.state.saverestore.bitmap |  |  | 
| 2d.state.saverestore.stack |  |  | 
| 2d.state.saverestore.stackdepth |  |  | 
| 2d.state.saverestore.underflow |  |  | 
| 2d.transformation.order |  |  | 
| 2d.transformation.scale.basic |  |  | 
| 2d.transformation.scale.zero |  |  | 
| 2d.transformation.scale.negative |  |  | 
| 2d.transformation.scale.large |  |  | 
| 2d.transformation.scale.infinity |  |  | 
| 2d.transformation.scale.neginfinity |  |  | 
| 2d.transformation.scale.nan | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.scale(NaN, NaN)
 | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.scale(NaN, NaN)
 | 
| 2d.transformation.scale.multiple |  |  | 
| 2d.transformation.rotate.zero |  |  | 
| 2d.transformation.rotate.radians |  |  | 
| 2d.transformation.rotate.direction |  |  | 
| 2d.transformation.rotate.wrap |  |  | 
| 2d.transformation.rotate.wrapnegative |  |  | 
| 2d.transformation.rotate.infinity | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.rotate(Infinity)
 | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.rotate(Infinity)
 | 
| 2d.transformation.rotate.neginfinity | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.rotate(-Infinity)
 | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.rotate(-Infinity)
 | 
| 2d.transformation.rotate.nan | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.rotate(NaN)
 | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.rotate(NaN)
 | 
| 2d.transformation.translate.basic |  |  | 
| 2d.transformation.translate.infinity |  |  | 
| 2d.transformation.translate.nan | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.translate(NaN, 0)
 | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.translate(NaN, 0)
 | 
| 2d.transformation.transform.identity | Aborted with exception: Statement on line 7: Type mismatch (usually a non-object value used where an object is required)Backtrace:  Line 7 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.transformation.transform.identity.html    ctx.transform(1, 0, 0, 1, 0, 0);  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 |  | 
| 2d.transformation.transform.skewed | Aborted with exception: Statement on line 13: Type mismatch (usually a non-object value used where an object is required)Backtrace:  Line 13 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.transformation.transform.skewed.html    ctx.transform(1, 4, 2, 3, 5, 6);  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 |  | 
| 2d.transformation.transform.multiply | Aborted with exception: Statement on line 7: Type mismatch (usually a non-object value used where an object is required)Backtrace:  Line 7 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.transformation.transform.multiply.html    ctx.transform(1, 2, 3, 4, 5, 6);  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 |  | 
| 2d.transformation.transform.infinity | Aborted with exception: Statement on line 7: Type mismatch (usually a non-object value used where an object is required)Backtrace:  Line 7 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.transformation.transform.infinity.html    ctx.transform(Infinity, 0, 0, Infinity, 0, 0);  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 |  | 
| 2d.transformation.setTransform.skewed | Aborted with exception: Statement on line 13: Type mismatch (usually a non-object value used where an object is required)Backtrace:  Line 13 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.transformation.setTransform.skewed.html    ctx.setTransform(1, 4, 2, 3, 5, 6);  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 |  | 
| 2d.transformation.setTransform.multiple | Aborted with exception: Statement on line 7: Type mismatch (usually a non-object value used where an object is required)Backtrace:  Line 7 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.transformation.setTransform.multiple.html    ctx.setTransform(1 / 2, 0, 0, 1 / 2, 0, 0);  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 |  | 
| 2d.composite.globalAlpha.range |  |  | 
| 2d.composite.globalAlpha.invalid | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.globalAlpha = InfinityFailed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.globalAlpha = -InfinityFailed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.globalAlpha = NaN
 | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.globalAlpha = InfinityFailed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.globalAlpha = -InfinityFailed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.globalAlpha = NaN
 | 
| 2d.composite.globalAlpha.default |  |  | 
| 2d.composite.globalAlpha.fill |  |  | 
| 2d.composite.globalAlpha.image | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [2,253,0,255] +/- 2
 |  | 
| 2d.composite.globalAlpha.canvas | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [2,253,0,255] +/- 2
 |  | 
| 2d.composite.globalAlpha.imagepattern | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [2,253,0,255] +/- 2
 |  | 
| 2d.composite.globalAlpha.canvaspattern | Failed assertion: got pixel [0,0,0,255] at (50,25), expected [2,253,0,255] +/- 2
 |  | 
| 2d.composite.solid.source-over |  |  | 
| 2d.composite.solid.destination-over |  |  | 
| 2d.composite.solid.source-in |  |  | 
| 2d.composite.solid.destination-in |  |  | 
| 2d.composite.solid.source-out |  |  | 
| 2d.composite.solid.destination-out |  |  | 
| 2d.composite.solid.source-atop |  |  | 
| 2d.composite.solid.destination-atop |  |  | 
| 2d.composite.solid.xor |  |  | 
| 2d.composite.solid.copy |  |  | 
| 2d.composite.solid.lighter |  |  | 
| 2d.composite.transparent.source-over |  |  | 
| 2d.composite.transparent.destination-over |  |  | 
| 2d.composite.transparent.source-in |  |  | 
| 2d.composite.transparent.destination-in |  |  | 
| 2d.composite.transparent.source-out |  |  | 
| 2d.composite.transparent.destination-out |  |  | 
| 2d.composite.transparent.source-atop | Failed assertion: got pixel [0,126,128,127] at (50,25), expected [0,63,191,127] +/- 5
 | Failed assertion: got pixel [0,126,128,127] at (50,25), expected [0,63,191,127] +/- 5
 | 
| 2d.composite.transparent.destination-atop | Failed assertion: got pixel [0,64,190,191] at (50,25), expected [0,127,127,191] +/- 5
 | Failed assertion: got pixel [0,64,190,191] at (50,25), expected [0,127,127,191] +/- 5
 | 
| 2d.composite.transparent.xor | Failed assertion: got pixel [0,63,127,127] at (50,25), expected [0,63,191,127] +/- 5
 | Failed assertion: got pixel [0,63,127,127] at (50,25), expected [0,63,191,127] +/- 5
 | 
| 2d.composite.transparent.copy |  |  | 
| 2d.composite.transparent.lighter | Failed assertion: got pixel [0,255,255,224] at (50,25), expected [0,127,191,255] +/- 5
 | Failed assertion: got pixel [0,144,217,224] at (50,25), expected [0,127,191,255] +/- 5
 | 
| 2d.composite.image.source-over |  |  | 
| 2d.composite.image.destination-over |  |  | 
| 2d.composite.image.source-in |  |  | 
| 2d.composite.image.destination-in |  |  | 
| 2d.composite.image.source-out |  |  | 
| 2d.composite.image.destination-out |  |  | 
| 2d.composite.image.source-atop | Failed assertion: got pixel [128,255,126,127] at (50,25), expected [191,255,63,127] +/- 5
 | Failed assertion: got pixel [128,255,126,127] at (50,25), expected [191,255,63,127] +/- 5
 | 
| 2d.composite.image.destination-atop | Failed assertion: got pixel [190,255,64,191] at (50,25), expected [127,255,127,191] +/- 5
 | Failed assertion: got pixel [190,255,64,191] at (50,25), expected [127,255,127,191] +/- 5
 | 
| 2d.composite.image.xor | Failed assertion: got pixel [127,191,63,127] at (50,25), expected [191,255,63,127] +/- 5
 | Failed assertion: got pixel [127,191,63,127] at (50,25), expected [191,255,63,127] +/- 5
 | 
| 2d.composite.image.copy |  |  | 
| 2d.composite.image.lighter | Failed assertion: got pixel [255,255,255,224] at (50,25), expected [191,255,127,255] +/- 5
 | Failed assertion: got pixel [217,255,144,224] at (50,25), expected [191,255,127,255] +/- 5
 | 
| 2d.composite.uncovered.fill.source-in |  |  | 
| 2d.composite.uncovered.fill.destination-in |  |  | 
| 2d.composite.uncovered.fill.source-out |  |  | 
| 2d.composite.uncovered.fill.destination-atop |  |  | 
| 2d.composite.uncovered.fill.copy |  |  | 
| 2d.composite.uncovered.image.source-in |  |  | 
| 2d.composite.uncovered.image.destination-in |  |  | 
| 2d.composite.uncovered.image.source-out |  |  | 
| 2d.composite.uncovered.image.destination-atop |  |  | 
| 2d.composite.uncovered.image.copy |  |  | 
| 2d.composite.uncovered.pattern.source-in |  |  | 
| 2d.composite.uncovered.pattern.destination-in |  |  | 
| 2d.composite.uncovered.pattern.source-out |  |  | 
| 2d.composite.uncovered.pattern.destination-atop |  |  | 
| 2d.composite.uncovered.pattern.copy |  |  | 
| 2d.composite.operation.get |  |  | 
| 2d.composite.operation.unrecognised |  |  | 
| 2d.composite.operation.darker | Failed assertion ctx.globalCompositeOperation == 'xor' (got darker[string], expected xor[string])
 | Failed assertion ctx.globalCompositeOperation == 'xor' (got darker[string], expected xor[string])
 | 
| 2d.composite.operation.over |  |  | 
| 2d.composite.operation.clear |  |  | 
| 2d.composite.operation.highlight |  |  | 
| 2d.composite.operation.nullsuffix | Failed assertion ctx.globalCompositeOperation == 'xor' (got source-over[string], expected xor[string])
 | Failed assertion ctx.globalCompositeOperation == 'xor' (got source-over[string], expected xor[string])
 | 
| 2d.composite.operation.casesensitive |  |  | 
| 2d.composite.operation.default |  |  | 
| 2d.fillStyle.parse.html4 |  |  | 
| 2d.fillStyle.parse.hex-3 |  |  | 
| 2d.fillStyle.parse.hex-6 |  |  | 
| 2d.fillStyle.parse.rgb-num |  |  | 
| 2d.fillStyle.parse.rgb-clamp |  |  | 
| 2d.fillStyle.parse.rgb-percent |  |  | 
| 2d.fillStyle.parse.rgba-solid-1 |  | Failed assertion: got pixel [0,255,0,1] at (50,25), expected [0,255,0,255]
 | 
| 2d.fillStyle.parse.rgba-solid-2 |  |  | 
| 2d.fillStyle.parse.rgba-num-1 |  |  | 
| 2d.fillStyle.parse.rgba-num-2 |  |  | 
| 2d.fillStyle.parse.rgba-percent |  |  | 
| 2d.fillStyle.parse.transparent-1 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,0,0,0]
 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,0,0,0]
 | 
| 2d.fillStyle.parse.transparent-2 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,0,0,0]
 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,0,0,0]
 | 
| 2d.fillStyle.parse.hsl-1 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | 
| 2d.fillStyle.parse.hsl-2 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | 
| 2d.fillStyle.parse.hsl-3 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | 
| 2d.fillStyle.parse.hsl-4 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | 
| 2d.fillStyle.parse.hsla | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,127]
 | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,127]
 | 
| 2d.fillStyle.parse.svg-1 |  |  | 
| 2d.fillStyle.parse.svg-2 |  |  | 
| 2d.fillStyle.parse.current | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 |  | 
| 2d.fillStyle.parse.system | Failed assertion ctx.fillStyle matches /^#(?!(FF0000|ff0000|f00)$)/ (got #FF0000[string])
 | Failed assertion ctx.fillStyle matches /^#(?!(FF0000|ff0000|f00)$)/ (got #FF0000[string])
 | 
| 2d.fillStyle.parse.flavor | Failed assertion ctx.fillStyle matches /^#(?!(FF0000|ff0000|f00)$)/ (got #FF0000[string])
 | Failed assertion ctx.fillStyle matches /^#(?!(FF0000|ff0000|f00)$)/ (got #FF0000[string])
 | 
| 2d.fillStyle.invalidstring |  |  | 
| 2d.fillStyle.invalidtype |  |  | 
| 2d.fillStyle.get.solid | Failed assertion ctx.fillStyle === '#ffaa00' (got #FFAA00[string], expected #ffaa00[string])
 | Failed assertion ctx.fillStyle === '#ffaa00' (got #FFAA00[string], expected #ffaa00[string])
 | 
| 2d.fillStyle.get.semitransparent |  | Failed assertion ctx.fillStyle matches /^rgba\(255, 255, 255, 0\.4\d+\)$/ (got rgba(255, 255, 255, 〠㐮㜴㔰9뾇䁬뾇䍬)[string])
 | 
| 2d.fillStyle.get.transparent | Failed assertion ctx.fillStyle == 'rgba(0, 0, 0, 0.0)' (got rgba(0, 0, 0, 0)[string], expected rgba(0, 0, 0, 0.0)[string])
 | Failed assertion ctx.fillStyle == 'rgba(0, 0, 0, 0.0)' (got rgba(0, 0, 0, 〠뼀)[string], expected rgba(0, 0, 0, 0.0)[string])
 | 
| 2d.fillStyle.default |  |  | 
| 2d.strokeStyle.default |  |  | 
| 2d.gradient.object.return |  |  | 
| 2d.gradient.interpolate.solid |  |  | 
| 2d.gradient.interpolate.colour |  |  | 
| 2d.gradient.interpolate.alpha |  | Failed assertion: got pixel [255,255,0,255] at (25,25), expected [191,191,63,255] +/- 2Failed assertion: got pixel [255,255,0,255] at (50,25), expected [127,127,127,255] +/- 2Failed assertion: got pixel [255,255,0,255] at (75,25), expected [63,63,191,255] +/- 2
 | 
| 2d.gradient.interpolate.colouralpha |  | Failed assertion: got pixel [0,0,0,0] at (25,25), expected [191,191,63,63] +/- 2Failed assertion: got pixel [0,0,0,0] at (50,25), expected [127,127,127,127] +/- 2Failed assertion: got pixel [0,0,0,0] at (75,25), expected [63,63,191,191] +/- 2
 | 
| 2d.gradient.interpolate.outside | Failed assertion: got pixel [255,0,0,255] at (20,25), expected [0,255,0,255] +/- 2Failed assertion: got pixel [255,0,0,255] at (80,25), expected [0,255,0,255] +/- 2
 | Failed assertion: got pixel [255,0,0,255] at (20,25), expected [0,255,0,255] +/- 2Failed assertion: got pixel [255,0,0,255] at (80,25), expected [0,255,0,255] +/- 2
 | 
| 2d.gradient.interpolate.zerosize |  |  | 
| 2d.gradient.interpolate.vertical |  |  | 
| 2d.gradient.interpolate.multiple |  |  | 
| 2d.gradient.interpolate.overlap |  |  | 
| 2d.gradient.interpolate.overlap2 |  |  | 
| 2d.gradient.empty |  |  | 
| 2d.gradient.object.update |  |  | 
| 2d.gradient.object.compare |  |  | 
| 2d.gradient.object.invalidoffset | Failed assertion: expected exception of type NOT_SUPPORTED_ERR, got: INDEX_SIZE_ERRBacktrace:  Line 12 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.gradient.object.invalidoffset.html    g.addColorStop(Infinity, "#000");  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]Failed assertion: expected exception of type NOT_SUPPORTED_ERR, got: INDEX_SIZE_ERRBacktrace:  Line 15 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.gradient.object.invalidoffset.html    g.addColorStop(- Infinity, "#000");  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: g.addColorStop(NaN, '#000')
 | Failed assertion: expected exception of type NOT_SUPPORTED_ERR, got: INDEX_SIZE_ERRFailed assertion: expected exception of type NOT_SUPPORTED_ERR, got: INDEX_SIZE_ERRFailed assertion: expected exception of type NOT_SUPPORTED_ERR, got: INDEX_SIZE_ERR
 | 
| 2d.gradient.object.invalidcolour |  |  | 
| 2d.gradient.radial.negative | Failed assertion: should throw exception of type INDEX_SIZE_ERR: ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1)Failed assertion: should throw exception of type INDEX_SIZE_ERR: ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1)
 | Failed assertion: should throw exception of type INDEX_SIZE_ERR: ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1)Failed assertion: should throw exception of type INDEX_SIZE_ERR: ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1)
 | 
| 2d.gradient.radial.invalid | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(Infinity, 0, 1, 0, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, Infinity, 1, 0, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, Infinity, 0, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, 1, Infinity, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, 1, 0, Infinity, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, 1, 0, 0, Infinity)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, -Infinity, 0, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, NaN, 0, 0, 1)
 | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(Infinity, 0, 1, 0, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, Infinity, 1, 0, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, Infinity, 0, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, 1, Infinity, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, 1, 0, Infinity, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, 1, 0, 0, Infinity)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, -Infinity, 0, 0, 1)Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.createRadialGradient(0, 0, NaN, 0, 0, 1)
 | 
| 2d.gradient.radial.inside1 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 |  | 
| 2d.gradient.radial.inside2 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.inside3 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.outside1 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.outside2 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.outside3 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.touch1 |  |  | 
| 2d.gradient.radial.touch2 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.touch3 |  |  | 
| 2d.gradient.radial.equal |  | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 | 
| 2d.gradient.radial.cone.behind |  |  | 
| 2d.gradient.radial.cone.front | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.cone.bottom | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.cone.top | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.cone.beside |  |  | 
| 2d.gradient.radial.cone.cylinder | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.cone.shape1 | Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.gradient.radial.cone.shape2 |  |  | 
| 2d.pattern.basic.type |  |  | 
| 2d.pattern.basic.image |  |  | 
| 2d.pattern.basic.canvas | Failed assertion: got pixel [0,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,25), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (50,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.pattern.basic.zerocanvas | Failed assertion canvas2.width === 0 (got 300[number], expected 0[number])Failed assertion canvas2.height === 0 (got 150[number], expected 0[number])Failed assertion: got pixel [0,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion canvas2.width === 0 (got 300[number], expected 0[number])Failed assertion canvas2.height === 0 (got 150[number], expected 0[number])
 | 
| 2d.pattern.basic.nocontext | Failed assertion: got pixel [0,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,48), expected [0,255,0,255]
 |  | 
| 2d.pattern.image.undefined |  |  | 
| 2d.pattern.image.null |  |  | 
| 2d.pattern.image.string |  |  | 
| 2d.pattern.image.incomplete | Failed assertion img.complete === false (got true[boolean], expected false[boolean])Failed assertion: expected exception of type INVALID_STATE_ERR, got: TYPE_MISMATCH_ERRBacktrace:  Line 7 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.pattern.image.incomplete.html    ctx.createPattern(img, "repeat");  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 | Failed assertion img.complete === false (got true[boolean], expected false[boolean])Failed assertion: expected exception of type INVALID_STATE_ERR, got: TYPE_MISMATCH_ERR
 | 
| 2d.pattern.image.broken | Failed assertion img.complete === false (got true[boolean], expected false[boolean])Failed assertion: should throw exception of type INVALID_STATE_ERR: ctx.createPattern(img, 'repeat')
 | Failed assertion img.complete === false (got true[boolean], expected false[boolean])Failed assertion: should throw exception of type INVALID_STATE_ERR: ctx.createPattern(img, 'repeat')
 | 
| 2d.pattern.repeat.empty |  |  | 
| 2d.pattern.repeat.null | Aborted with exception: SYNTAX_ERRBacktrace:  Line 7 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.pattern.repeat.null.html    var pattern = ctx.createPattern(img, null);  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 | Aborted with exception: SYNTAX_ERR
 | 
| 2d.pattern.repeat.undefined | Aborted with exception: SYNTAX_ERRBacktrace:  Line 7 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.pattern.repeat.undefined.html    var pattern = ctx.createPattern(img, undefined);  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 | Aborted with exception: SYNTAX_ERR
 | 
| 2d.pattern.repeat.missing | Aborted with exception: WRONG_ARGUMENTS_ERRBacktrace:  Line 7 of inline#1 script in http://canvex.lazyilluminati.com/tests/20070701/tests/minimal.2d.pattern.repeat.missing.html    var pattern = ctx.createPattern(img);  Line 333 of linked script http://canvex.lazyilluminati.com/tests/20070701/tests.js    test(canvas, ctx);  At unknown location    [statement source code not available]
 | Aborted with exception: WRONG_ARGUMENTS_ERR
 | 
| 2d.pattern.repeat.unrecognised |  |  | 
| 2d.pattern.repeat.case |  |  | 
| 2d.pattern.repeat.nullsuffix | Failed assertion: should throw exception of type SYNTAX_ERR: ctx.createPattern(canvas, "repeat\0")
 | Failed assertion: should throw exception of type SYNTAX_ERR: ctx.createPattern(canvas, "repeat\0")
 | 
| 2d.pattern.modify.image1 |  |  | 
| 2d.pattern.modify.image2 |  |  | 
| 2d.pattern.modify.canvas1 | Failed assertion: got pixel [140,138,165,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [0,0,0,0] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,0] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,0] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,0] at (98,48), expected [0,255,0,255]
 | 
| 2d.pattern.modify.canvas2 | Failed assertion: got pixel [140,138,33,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [0,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.pattern.paint.norepeat.basic |  |  | 
| 2d.pattern.paint.norepeat.outside |  |  | 
| 2d.pattern.paint.norepeat.coord1 |  |  | 
| 2d.pattern.paint.norepeat.coord2 |  |  | 
| 2d.pattern.paint.coord3 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]
 | 
| 2d.pattern.paint.repeat.basic |  |  | 
| 2d.pattern.paint.repeat.outside |  |  | 
| 2d.pattern.paint.repeat.coord1 |  |  | 
| 2d.pattern.paint.repeat.coord2 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 |  | 
| 2d.pattern.paint.repeat.coord3 |  |  | 
| 2d.pattern.paint.repeatx.basic |  |  | 
| 2d.pattern.paint.repeatx.outside | Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.pattern.paint.repeatx.coord1 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.pattern.paint.repeaty.basic |  |  | 
| 2d.pattern.paint.repeaty.outside | Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.pattern.paint.repeaty.coord1 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (98,48), expected [0,255,0,255]
 | 
| 2d.line.defaults |  |  | 
| 2d.line.invalid.lineWidth | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.lineWidth = InfinityFailed assertion ctx.lineWidth === 1.5 (got Infinity[number], expected 1.5[number])Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.lineWidth = -InfinityFailed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.lineWidth = NaN
 | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.lineWidth = InfinityFailed assertion ctx.lineWidth === 1.5 (got Infinity[number], expected 1.5[number])Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.lineWidth = -InfinityFailed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.lineWidth = NaN
 | 
| 2d.line.invalid.lineCap | Failed assertion ctx.lineCap === 'butt' (got round[string], expected butt[string])
 | Failed assertion ctx.lineCap === 'butt' (got round[string], expected butt[string])
 | 
| 2d.line.invalid.lineJoin | Failed assertion ctx.lineJoin === 'bevel' (got round[string], expected bevel[string])
 | Failed assertion ctx.lineJoin === 'bevel' (got round[string], expected bevel[string])
 | 
| 2d.line.invalid.miterLimit | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.miterLimit = InfinityFailed assertion ctx.miterLimit === 1.5 (got Infinity[number], expected 1.5[number])Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.miterLimit = -InfinityFailed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.miterLimit = NaN
 | Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.miterLimit = InfinityFailed assertion ctx.miterLimit === 1.5 (got Infinity[number], expected 1.5[number])Failed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.miterLimit = -InfinityFailed assertion: should throw exception of type NOT_SUPPORTED_ERR: ctx.miterLimit = NaN
 | 
| 2d.line.lineWidth.basic |  |  | 
| 2d.line.lineWidth.transformed |  |  | 
| 2d.line.lineCap.butt |  |  | 
| 2d.line.lineCap.round |  |  | 
| 2d.line.lineCap.square |  |  | 
| 2d.line.lineJoin.bevel |  |  | 
| 2d.line.lineJoin.round |  |  | 
| 2d.line.lineJoin.miter |  |  | 
| 2d.line.join.open |  |  | 
| 2d.line.join.closed |  |  | 
| 2d.line.join.zeroline.corner |  |  | 
| 2d.line.join.zeroline.join |  |  | 
| 2d.line.join.parallel | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (48,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (48,48), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]
 |  | 
| 2d.line.cap.open |  |  | 
| 2d.line.cap.closed |  |  | 
| 2d.line.cap.zeroline.round |  |  | 
| 2d.line.cap.zeroline.square |  |  | 
| 2d.line.cap.zerobezier.round |  |  | 
| 2d.line.miter.exceeded |  |  | 
| 2d.line.miter.rightangle |  |  | 
| 2d.line.miter.within |  |  | 
| 2d.line.cross | Failed assertion: got pixel [255,0,0,255] at (48,48), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (48,48), expected [0,255,0,255]
 | 
| 2d.line.union | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [73,181,0,255] at (25,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [73,181,0,255] at (25,1), expected [0,255,0,255]
 | Failed assertion: got pixel [255,0,0,255] at (1,1), expected [0,255,0,255]Failed assertion: got pixel [78,176,0,255] at (25,1), expected [0,255,0,255]Failed assertion: got pixel [255,0,0,255] at (1,48), expected [0,255,0,255]Failed assertion: got pixel [78,176,0,255] at (25,1), expected [0,255,0,255]
 | 
| 2d.clearRect.negative |  |  | 
| 2d.clearRect.basic |  |  | 
| 2d.clearRect.path |  |  | 
| 2d.clearRect.zero |  |  | 
| 2d.clearRect.transform |  |  | 
| 2d.clearRect.globalalpha |  |  | 
| 2d.clearRect.globalcomposite | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,0,0,0]
 |  | 
| 2d.clearRect.clip | Failed assertion: got pixel [0,255,0,254] at (50,25), expected [0,255,0,255]
 | Failed assertion: got pixel [0,0,0,0] at (50,25), expected [0,255,0,255]
 | 
| 2d.clearRect.shadow |  |  | 
| 2d.fillRect.negative |  |  | 
| 2d.fillRect.basic |  |  | 
| 2d.fillRect.path |  |  | 
| 2d.fillRect.zero |  |  | 
| 2d.fillRect.transform |  |  | 
| 2d.fillRect.clip |  |  | 
| 2d.fillRect.shadow |  |  | 
| 2d.strokeRect.negative |  |  | 
| 2d.strokeRect.basic |  |  | 
| 2d.strokeRect.path |  |  | 
| 2d.strokeRect.zero.1 |  |  | 
| 2d.strokeRect.zero.2 |  |  | 
| 2d.strokeRect.zero.3 |  |  | 
| 2d.strokeRect.zero.4 |  |  | 
| 2d.strokeRect.zero.5 | Failed assertion: got pixel [0,0,0,0] at (50,25), expected [0,255,0,255]
 | Failed assertion: got pixel [0,0,0,0] at (50,25), expected [0,255,0,255]
 | 
| 2d.strokeRect.transform |  |  | 
| 2d.strokeRect.globalalpha |  |  | 
| 2d.strokeRect.globalcomposite |  |  | 
| 2d.strokeRect.clip |  |  | 
| 2d.strokeRect.shadow |  |  | 
| 2d.path.initial |  |  | 
| 2d.path.beginPath |  |  | 
| 2d.path.moveTo.1 |  |  | 
| 2d.path.moveTo.2 |  |  | 
| 2d.path.closePath.1 |  |  | 
| 2d.path.closePath.2 |  |  | 
| 2d.path.closePath.3 |  |  | 
| misc.mozilla.353981 |  |  | 
| misc.opera.moveTo | Failed assertion: got pixel [255,0,0,255] at (50,25), expected [0,255,0,255]
 |  |