{
  "ua": [
    "Sf12"
  ],
  "results": {
    "/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.case.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.repeat.case": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.semitransparent.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.get.semitransparent": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textAlign end with ltr is the right edge": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.transform.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() handles transformations correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.join.miter.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "lineJoin 'miter' is rendered correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/canvas_shadows_001.htm": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "linear gradient fillRect draws shadow (black rectange)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.image.transparent.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for transparent parts of images": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeText does not start a new path or subpath": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.touch3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.path.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect does not affect the current path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.self.1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.prune.arc.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Zero-length line segments from arcTo and arc are removed before stroking": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.stroke.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn for strokes": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.svg.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() of an SVG image": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.destination-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.destination-in": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.modified.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() puts modified image data correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hex3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.clamp.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData.data clamps numbers to [0, 255]": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.alpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() puts non-solid image data correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.destination-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.destination-in": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.attributes.shadowColor.initial.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.shadow.attributes.shadowColor.initial": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.nocontext.source-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.miter.acute.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Miter joins are drawn correctly with acute angles": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Load a 100x100 image to a SVG image and draw it to a 100x100 canvas.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "Type error"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.prune.line.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Zero-length line segments from lineTo are removed before stroking": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.multiple.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.multiple": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create1.zero.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(null) throws TypeError": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-solid-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/hit-regions/hitregions-members-exist.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "context.addHitRegion Exists": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected \"function\" but got \"undefined\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "context.removeHitRegion Exists": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected \"function\" but got \"undefined\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "context.clearHitRegions Exists": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected \"function\" but got \"undefined\""
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.left.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textAlign left is the left of the first em square (not the bounding box)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.transformation.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo joins up to the last subpath point correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.null.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() with null imagedata throws TypeError": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/canvas-colorManaged-convertToBlob-roundtrip.html": {
      "byUA": {
        "Sf12": "ERROR"
      },
      "UAmessage": {
        "Sf12": "TypeError: srcCanvas.convertToBlob is not a function. (In 'srcCanvas.convertToBlob(testScenario.encodeOptions)', 'srcCanvas.convertToBlob' is undefined)"
      },
      "totals": {
        "ERROR": 1
      },
      "subtests": {
        "Test canvas convertToBlob(): mimeType: image/png, blobPixelFormat: uint8, source color space: srgb, pixel format: uint8, alpha: 0.5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "NOTRUN"
          },
          "UAmessage": {},
          "totals": {
            "NOTRUN": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.gradient.alpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn correctly for partially-transparent gradient fills": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.space.collapse.space.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Space characters are converted to U+0020, and collapsed (per CSS)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (25, 25) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgb-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html": {
      "byUA": {
        "Sf12": "ERROR"
      },
      "UAmessage": {
        "Sf12": "TypeError: undefined is not an object (evaluating 'actual.length')"
      },
      "totals": {
        "ERROR": 1
      },
      "subtests": {
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png": {
          "stNum": 0,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png": {
          "stNum": 1,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png": {
          "stNum": 2,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png": {
          "stNum": 3,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png": {
          "stNum": 4,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png": {
          "stNum": 5,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png": {
          "stNum": 6,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png": {
          "stNum": 7,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png": {
          "stNum": 8,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png": {
          "stNum": 9,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png": {
          "stNum": 10,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png": {
          "stNum": 11,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png": {
          "stNum": 12,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png": {
          "stNum": 13,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png": {
          "stNum": 14,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png": {
          "stNum": 15,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png": {
          "stNum": 16,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png": {
          "stNum": 17,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png": {
          "stNum": 18,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, uint8. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png": {
          "stNum": 19,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_sRGB_opaque.png": {
          "stNum": 20,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_opaque.png vs 2x2_16bit_interlaced_sRGB_opaque.png": {
          "stNum": 21,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_sRGB_transparent.png": {
          "stNum": 22,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_sRGB_transparent.png vs 2x2_16bit_interlaced_sRGB_transparent.png": {
          "stNum": 23,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_AdobeRGB_opaque.png": {
          "stNum": 24,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_opaque.png vs 2x2_16bit_interlaced_AdobeRGB_opaque.png": {
          "stNum": 25,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_AdobeRGB_transparent.png": {
          "stNum": 26,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_AdobeRGB_transparent.png vs 2x2_16bit_interlaced_AdobeRGB_transparent.png": {
          "stNum": 27,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_DisplayP3_opaque.png": {
          "stNum": 28,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_opaque.png vs 2x2_16bit_interlaced_DisplayP3_opaque.png": {
          "stNum": 29,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_DisplayP3_transparent.png": {
          "stNum": 30,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_DisplayP3_transparent.png vs 2x2_16bit_interlaced_DisplayP3_transparent.png": {
          "stNum": 31,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_ProPhoto_opaque.png": {
          "stNum": 32,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_opaque.png vs 2x2_16bit_interlaced_ProPhoto_opaque.png": {
          "stNum": 33,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_ProPhoto_transparent.png": {
          "stNum": 34,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_ProPhoto_transparent.png vs 2x2_16bit_interlaced_ProPhoto_transparent.png": {
          "stNum": 35,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_Rec2020_opaque.png": {
          "stNum": 36,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_opaque.png vs 2x2_16bit_interlaced_Rec2020_opaque.png": {
          "stNum": 37,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_Rec2020_transparent.png": {
          "stNum": 38,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "Canvas color params: srgb, float16. Testing 2x2_8bit_Rec2020_transparent.png vs 2x2_16bit_interlaced_Rec2020_transparent.png": {
          "stNum": 39,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.textAlign.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for textAlign": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.shape.4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() from 0 to -pi/2 draws stuff in the right quadrant": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create2.zero.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"function () { ctx.createImageData(0.99, 10); }\" did not throw"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.cap.open.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Line caps are drawn at the corners of an unclosed rectangle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeaty.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.nullsuffix.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.repeat.nullsuffix": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/imagebitmap/createImageBitmap-drawImage.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageBitmap from an HTMLCanvasElement, and drawImage on the created ImageBitmap": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLCanvasElement scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLCanvasElement scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 2,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLCanvasElement resized, and drawImage on the created ImageBitmap": {
          "stNum": 3,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLCanvasElement with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 4,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement, and drawImage on the created ImageBitmap": {
          "stNum": 5,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 6,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 7,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement resized, and drawImage on the created ImageBitmap": {
          "stNum": 8,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 9,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement from a data URL, and drawImage on the created ImageBitmap": {
          "stNum": 10,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement from a data URL scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 11,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement from a data URL scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 12,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement from a data URL resized, and drawImage on the created ImageBitmap": {
          "stNum": 13,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an HTMLVideoElement from a data URL with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 14,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a bitmap HTMLImageElement, and drawImage on the created ImageBitmap": {
          "stNum": 15,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a bitmap HTMLImageElement scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 16,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a bitmap HTMLImageElement scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 17,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a bitmap HTMLImageElement resized, and drawImage on the created ImageBitmap": {
          "stNum": 18,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a bitmap HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 19,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a vector HTMLImageElement, and drawImage on the created ImageBitmap": {
          "stNum": 20,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a vector HTMLImageElement scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 21,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a vector HTMLImageElement scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 22,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a vector HTMLImageElement resized, and drawImage on the created ImageBitmap": {
          "stNum": 23,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a vector HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 24,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a bitmap SVGImageElement, and drawImage on the created ImageBitmap": {
          "stNum": 25,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a bitmap SVGImageElement scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 26,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a bitmap SVGImageElement scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 27,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a bitmap SVGImageElement resized, and drawImage on the created ImageBitmap": {
          "stNum": 28,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a bitmap SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 29,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a vector SVGImageElement, and drawImage on the created ImageBitmap": {
          "stNum": 30,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a vector SVGImageElement scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 31,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a vector SVGImageElement scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 32,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a vector SVGImageElement resized, and drawImage on the created ImageBitmap": {
          "stNum": 33,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a vector SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 34,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an OffscreenCanvas, and drawImage on the created ImageBitmap": {
          "stNum": 35,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: null is not an object (evaluating 'testCtx.fillStyle = \"rgb(255, 0, 0)\"')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an OffscreenCanvas scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 36,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: null is not an object (evaluating 'testCtx.fillStyle = \"rgb(255, 0, 0)\"')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an OffscreenCanvas scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 37,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: null is not an object (evaluating 'testCtx.fillStyle = \"rgb(255, 0, 0)\"')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an OffscreenCanvas resized, and drawImage on the created ImageBitmap": {
          "stNum": 38,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: null is not an object (evaluating 'testCtx.fillStyle = \"rgb(255, 0, 0)\"')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an OffscreenCanvas with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 39,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: null is not an object (evaluating 'testCtx.fillStyle = \"rgb(255, 0, 0)\"')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an ImageData, and drawImage on the created ImageBitmap": {
          "stNum": 40,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an ImageData scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 41,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an ImageData scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 42,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an ImageData resized, and drawImage on the created ImageBitmap": {
          "stNum": 43,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an ImageData with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 44,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an ImageBitmap, and drawImage on the created ImageBitmap": {
          "stNum": 45,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an ImageBitmap scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 46,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an ImageBitmap scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 47,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an ImageBitmap resized, and drawImage on the created ImageBitmap": {
          "stNum": 48,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from an ImageBitmap with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 49,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a Blob, and drawImage on the created ImageBitmap": {
          "stNum": 50,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a Blob scaled down, and drawImage on the created ImageBitmap": {
          "stNum": 51,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a Blob scaled up, and drawImage on the created ImageBitmap": {
          "stNum": 52,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a Blob resized, and drawImage on the created ImageBitmap": {
          "stNum": 53,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap from a Blob with negative sw/sh, and drawImage on the created ImageBitmap": {
          "stNum": 54,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.enable.x.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn if shadowOffsetX is set": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.miter.exceeded.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Miter joins are not drawn when the miter limit is exceeded": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.unchanged.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData(getImageData(...), ...) has no effect": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Radial gradient transforms do not experience broken caching effects": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-percent.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgb-percent": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.path.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect does not affect the current path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.nocontext.copy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.self.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.self.2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fill.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.zerosize.fill": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() with negative radius throws INDEX_SIZE_ERR": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillText handles maxWidth correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.bounds.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData has a usable constructor": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.properties.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData objects have the right properties": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsla-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.globalAlpha.canvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.globalAlpha.canvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "If there is no subpath, the point is added and nothing is drawn": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.immediate.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.incomplete.immediate": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.norepeat.coord2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Test drawing color managed OffscreenCanvas: Canvas color params: srgb, uint8;  OffscreenCanvas color params: srgb, uint8": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "canvas.transferControlToOffscreen is not a function. (In 'canvas.transferControlToOffscreen()', 'canvas.transferControlToOffscreen' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test drawing color managed OffscreenCanvas: Canvas color params: srgb, uint8;  OffscreenCanvas color params: srgb, float16": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "canvas.transferControlToOffscreen is not a function. (In 'canvas.transferControlToOffscreen()', 'canvas.transferControlToOffscreen' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test drawing color managed OffscreenCanvas: Canvas color params: srgb, float16;  OffscreenCanvas color params: srgb, uint8": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "canvas.transferControlToOffscreen is not a function. (In 'canvas.transferControlToOffscreen()', 'canvas.transferControlToOffscreen' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test drawing color managed OffscreenCanvas: Canvas color params: srgb, float16;  OffscreenCanvas color params: srgb, float16": {
          "stNum": 3,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "canvas.transferControlToOffscreen is not a function. (In 'canvas.transferControlToOffscreen()', 'canvas.transferControlToOffscreen' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.font.parse.tiny.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.font.parse.tiny": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.join.open.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Line joins are not drawn at the corner of an unclosed rectangle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.baseline.default.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.baseline.default": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.selfintersect.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() with lineWidth > 2*radius is drawn sensibly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() throws TypeError if arguments are not finite": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.vertical.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.vertical": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create1.type.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(imgdata) returns an ImageData object containing a Uint8ClampedArray object": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.alpha.5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows of shapes with alpha components are drawn correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.front.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.cone.front": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsl-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.path.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.join.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Setting lineJoin to invalid values is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.lighter.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.lighter": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.fill.closed.unaffected.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.fill.closed.unaffected": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.twopie.4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws nothing when end = start + 2pi+e and clockwise": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawFocusIfNeeded draws a focus ring.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.offset.positiveX.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows can be offset with positive x": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.quadraticCurveTo.shape.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.quadraticCurveTo.shape": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hsla-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.destination-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hsla-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.setTransform.multiple.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.transformation.setTransform.multiple": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.lineTo.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.lineTo.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.miter.within.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Miter joins are drawn when the miter limit is not quite exceeded": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.baseline.alphabetic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.draw.baseline.alphabetic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.quadraticCurveTo.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "quadraticCurveTo() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage with zero-sized source rectangle draws nothing without exception": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The index is not in the allowed range."
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.object.update.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.object.update": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidoffset.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.object.invalidoffset": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsla-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.cone.shape1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillText handles maxWidth based on line size, not bounding box size": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.baseline.ideographic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.draw.baseline.ideographic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (5, 5) expected 0 +/- 2 but got 128"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/imagebitmap/createImageBitmap-sizeOverflow.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageBitmap does not crash or reject the promise when passing very large sx": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap does not crash or reject the promise when passing very large sy": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap does not crash or reject the promise when passing very large sw": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap does not crash or reject the promise when passing very large sh": {
          "stNum": 3,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap does not crash or reject the promise when passing very large sx, sy, sw and sh": {
          "stNum": 4,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.dirty.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() handles negative-sized dirty rectangles correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hex4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.image.null.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.image.null": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.space.collapse.end.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Space characters at the end of a line are collapsed (per CSS)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (75, 25) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.empty.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() works when there is no path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.scale2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Stroke line widths are scaled by the current transformation matrix": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (0, 0) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.pattern.destination-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.union.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Strokes in opposite directions are unioned, not subtracted": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.zero.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect of zero pixels has no effect": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.clip.intersect.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.clip.intersect": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.shape.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() from 0 to pi does not draw anything in the wrong half": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.string.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData.data converts strings to numbers with ToNumber": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.zero.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() with zero radius draws a straight line from P0 to P1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.closePath.nextpoint.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.closePath.nextpoint": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.source-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.source-over": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.cap.butt.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "lineCap 'butt' is rendered correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.quadraticCurveTo.scaled.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.quadraticCurveTo.scaled": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.bezierCurveTo.scaled.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.bezierCurveTo.scaled": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.transformation.multiple.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Transformations are applied while building paths, not when drawing": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.newsubpath.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.newsubpath": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.scale.large.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "scale() with large scale factors works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.align.default.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.align.default": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.source-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.source-in": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.clip.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() affects the clipping path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.nosrc.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.image.incomplete.nosrc": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgb-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.name-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.moveTo.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "moveTo() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.lineWidth.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for lineWidth": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Test that restore() undoes any modifications to imageSmoothingEnabled.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test that save() doesn't modify the values of imageSmoothingEnabled.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test that restoring actually changes smoothing and not just the attribute value.": {
          "stNum": 2,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.join.valid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Setting lineJoin to valid values works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.operation.default.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.operation.default": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.enable.y.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn if shadowOffsetY is set": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.length.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns a correctly-sized Uint8ClampedArray": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.copy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.copy": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.norepeat.coord3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillText does not start a new path or subpath": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.copy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.copy": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillRect.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.zerosize.fillRect": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.bitmap.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() does not affect the current bitmap": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.xor.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.xor": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.lineTo.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "lineTo() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.nocontext.destination-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.equal.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.equal": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidtype.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.invalidtype": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.set.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData.data can be modified": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/scroll/2d.scrollPathIntoView.verticalRL.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "scrollPathIntoView() works in vertical-rl writing mode": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.scrollPathIntoView is not a function. (In 'ctx.scrollPathIntoView()', 'ctx.scrollPathIntoView' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.union.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.line.union": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "currentColor is computed from the canvas element": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.fill.winding.subtract.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.fill.winding.subtract.1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.svg-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.image.undefined.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.image.undefined": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.attributes.shadowBlur.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.shadow.attributes.shadowBlur.invalid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.source-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.source-in": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect of Nx0 pixels draws a closed line with joins": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.clip.winding.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.clip.winding.1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsl-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.basic.canvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.basic.canvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.prune.corner.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Zero-length line segments are removed before stroking with miters": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.destination-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.pattern.source-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.basic.nocontext.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.basic.nocontext": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.edge.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() counts points on the path as being inside": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.shape.start.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() draws a straight line from P0 to P1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.object.invalidcolour.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.object.invalidcolour": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.9arg.sourcesize": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destsize.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.9arg.destsize": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.width.valid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Setting lineWidth to valid values works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.unclosed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() works on unclosed subpaths": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.clip.unaffected.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.clip.unaffected": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.modify.image2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.selfintersect.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.selfintersect": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create2.initial.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(sw, sh) returns transparent black data of the right size": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.baseline.hanging.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.draw.baseline.hanging": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (5, 5) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.baseline.middle.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textBaseline middle is the middle of the em square (not the bounding box)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (5, 5) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.empty.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.empty": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.width.scaledefault.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Default lineWidth strokes are affected by scale transformations": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.transform.skewed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "transform() with skewy matrix transforms correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex8.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hex8": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.canvas.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn for canvases": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsla-6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.image.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Image patterns do not get flipped when painted": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.stroke.cap.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn for stroke caps": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.fill.destination-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "@font-face fonts should work even if they are not used in the page": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.image.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn for images": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.scale.multiple.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Multiple scale()s combine": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.attributes.shadowOffset.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.shadow.attributes.shadowOffset.invalid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for globalCompositeOperation": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.miter.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Setting miterLimit to invalid values is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/imagebitmap/createImageBitmap-blob-invalidtype.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageBitmap: blob with wrong mime type": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/imagebitmap/createImageBitmap-invalid-args.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageBitmap with an HTMLCanvasElement source and sw set to 0": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an HTMLCanvasElement source and sh set to 0": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an HTMLCanvasElement source and oversized (unallocatable) crop region": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected 100000000 but got 20"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an HTMLVideoElement source and sw set to 0": {
          "stNum": 3,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an HTMLVideoElement source and sh set to 0": {
          "stNum": 4,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an HTMLVideoElement source and oversized (unallocatable) crop region": {
          "stNum": 5,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected 100000000 but got 20"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an HTMLVideoElement from a data URL source and sw set to 0": {
          "stNum": 6,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an HTMLVideoElement from a data URL source and sh set to 0": {
          "stNum": 7,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an HTMLVideoElement from a data URL source and oversized (unallocatable) crop region": {
          "stNum": 8,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected 100000000 but got 20"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a bitmap HTMLImageElement source and sw set to 0": {
          "stNum": 9,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with a bitmap HTMLImageElement source and sh set to 0": {
          "stNum": 10,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with a bitmap HTMLImageElement source and oversized (unallocatable) crop region": {
          "stNum": 11,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected 100000000 but got 20"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a vector HTMLImageElement source and sw set to 0": {
          "stNum": 12,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with a vector HTMLImageElement source and sh set to 0": {
          "stNum": 13,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with a vector HTMLImageElement source and oversized (unallocatable) crop region": {
          "stNum": 14,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected 100000000 but got 20"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a bitmap SVGImageElement source and sw set to 0": {
          "stNum": 15,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"function () { throw e }\" threw object \"TypeError: Type error\" (\"TypeError\") expected object \"RangeError\" (\"RangeError\")"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a bitmap SVGImageElement source and sh set to 0": {
          "stNum": 16,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"function () { throw e }\" threw object \"TypeError: Type error\" (\"TypeError\") expected object \"RangeError\" (\"RangeError\")"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a bitmap SVGImageElement source and oversized (unallocatable) crop region": {
          "stNum": 17,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"() => { throw e }\" threw object \"TypeError: Type error\" that is not a DOMException InvalidStateError: property \"code\" is equal to undefined, expected 11"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a vector SVGImageElement source and sw set to 0": {
          "stNum": 18,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"function () { throw e }\" threw object \"TypeError: Type error\" (\"TypeError\") expected object \"RangeError\" (\"RangeError\")"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a vector SVGImageElement source and sh set to 0": {
          "stNum": 19,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"function () { throw e }\" threw object \"TypeError: Type error\" (\"TypeError\") expected object \"RangeError\" (\"RangeError\")"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a vector SVGImageElement source and oversized (unallocatable) crop region": {
          "stNum": 20,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"() => { throw e }\" threw object \"TypeError: Type error\" that is not a DOMException InvalidStateError: property \"code\" is equal to undefined, expected 11"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an OffscreenCanvas source and sw set to 0": {
          "stNum": 21,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: null is not an object (evaluating 'testCtx.fillStyle = \"rgb(255, 0, 0)\"')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an OffscreenCanvas source and sh set to 0": {
          "stNum": 22,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: null is not an object (evaluating 'testCtx.fillStyle = \"rgb(255, 0, 0)\"')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an OffscreenCanvas source and oversized (unallocatable) crop region": {
          "stNum": 23,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: null is not an object (evaluating 'testCtx.fillStyle = \"rgb(255, 0, 0)\"')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an ImageData source and sw set to 0": {
          "stNum": 24,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an ImageData source and sh set to 0": {
          "stNum": 25,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an ImageData source and oversized (unallocatable) crop region": {
          "stNum": 26,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"() => { throw e }\" threw object \"TypeError: createImageBitmap with ImageData is not implemented\" that is not a DOMException InvalidStateError: property \"code\" is equal to undefined, expected 11"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an ImageBitmap source and sw set to 0": {
          "stNum": 27,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an ImageBitmap source and sh set to 0": {
          "stNum": 28,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an ImageBitmap source and oversized (unallocatable) crop region": {
          "stNum": 29,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected 100000000 but got 20"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a Blob source and sw set to 0": {
          "stNum": 30,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with a Blob source and sh set to 0": {
          "stNum": 31,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with a Blob source and oversized (unallocatable) crop region": {
          "stNum": 32,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected 100000000 but got 20"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with undefined image source.": {
          "stNum": 33,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with null image source.": {
          "stNum": 34,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with CanvasRenderingContext2D image source.": {
          "stNum": 35,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with WebGLRenderingContext image source.": {
          "stNum": 36,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with Uint8Array image source.": {
          "stNum": 37,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with ArrayBuffer image source.": {
          "stNum": 38,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with empty image source.": {
          "stNum": 39,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with empty video source.": {
          "stNum": 40,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an oversized canvas source.": {
          "stNum": 41,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an invalid OffscreenCanvas source.": {
          "stNum": 42,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"function () { throw e }\" threw object \"TypeError: Type error\" that is not a DOMException InvalidStateError: property \"code\" is equal to undefined, expected 11"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an undecodable blob source.": {
          "stNum": 43,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with a broken image source.": {
          "stNum": 44,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "createImageBitmap with an available but undecodable image source.": {
          "stNum": 45,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_unreached: Should have rejected: undefined Reached unreachable code"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an available but zero height image source.": {
          "stNum": 46,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_unreached: Should have rejected: undefined Reached unreachable code"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with an available but zero width image source.": {
          "stNum": 47,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_unreached: Should have rejected: undefined Reached unreachable code"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap with a closed ImageBitmap.": {
          "stNum": 48,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.solid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.get.solid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() puts image data from getImageData() onto the canvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.lineTo.nextpoint.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.lineTo.nextpoint": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-9.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsla-9": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.negative": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.cap.closed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Line caps are not drawn at the corners of an unclosed rectangle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.bezierCurveTo.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "bezierCurveTo() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.transform.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect is affected by transforms": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.clamp.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() clamps colours to the range [0, 255]": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.operation.get.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.operation.get": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.source-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.source-out": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.alpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.alpha": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.operation.over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.operation.over": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.attributes.shadowOffset.initial.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.shadow.attributes.shadowOffset.initial": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.operation.unrecognised.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.operation.unrecognised": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-paths-to-the-canvas/canvas_complexshapes_ispointInpath_001.htm": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath unaffected by transformation matrix": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.center.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textAlign center is the center of the em squares (not the bounding box)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "If there is no subpath, the first control point is added (and nothing is drawn up to it)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.order.rgb.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns R then G then B": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.path.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() does not affect the current path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.image.string.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.image.string": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.stack.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() can be nested as a stack": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.rotate.wrapnegative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "rotate() wraps large negative values correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsla-clamp-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeRect.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.zerosize.strokeRect": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.object.crosscanvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.object.crosscanvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-num-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.winding.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() uses the non-zero winding number rule": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.miter.lineedge.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Radial gradient coordinates are relative to the coordinate space at the time of filling": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.floatsource.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.floatsource": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsla-clamp-6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.source-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.beginPath.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.beginPath": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.fill.overlap.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.fill.overlap": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_005.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawFocusIfNeeded does draw a focus ring if the element is in focus and the user activated a particular focus ring.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.font.default.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.font.default": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.copy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.copy": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.destination-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.destination-atop": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.source-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.source-in": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.nonpremul.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns non-premultiplied colours": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/canvas-colorspace-arguments.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Test default context creation parameters: srgb/uint8": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.getContextAttributes is not a function. (In 'ctx.getContextAttributes()', 'ctx.getContextAttributes' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test CanvasColorSpace value srgb": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.getContextAttributes is not a function. (In 'ctx.getContextAttributes()', 'ctx.getContextAttributes' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test CanvasPixelFormat value uint8": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.getContextAttributes is not a function. (In 'ctx.getContextAttributes()', 'ctx.getContextAttributes' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test CanvasPixelFormat value float16": {
          "stNum": 3,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.getContextAttributes is not a function. (In 'ctx.getContextAttributes()', 'ctx.getContextAttributes' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test supported color settings srgb/uint8": {
          "stNum": 4,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.getContextAttributes is not a function. (In 'ctx.getContextAttributes()', 'ctx.getContextAttributes' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test supported color settings srgb/float16": {
          "stNum": 5,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.getContextAttributes is not a function. (In 'ctx.getContextAttributes()', 'ctx.getContextAttributes' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.rotate.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "rotate() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-eof.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-eof": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.apng.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() of an APNG with no poster frame draws the first frame": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.norepeat.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.clip.basic.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.clip.basic.1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.join.round.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "lineJoin 'round' is rendered correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetY.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for shadowOffsetY": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.attributes.shadowBlur.initial.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.shadow.attributes.shadowBlur.initial": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeatx.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.angle.5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() wraps angles mod 2pi when clockwise and start > end+2pi": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.source-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.space.collapse.start.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Space characters at the start of a line are collapsed (per CSS)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (25, 25) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.dirty.zero.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() with zero-sized dirty rectangle puts nothing": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.strokeStyle.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for strokeStyle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.strokeStyle.default.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.strokeStyle.default": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.font.parse.complex.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.font.parse.complex": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "If there is no subpath, the first control point is added (and nothing is drawn up to it)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/scroll/2d.scrollPathIntoView.path.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "scrollPathIntoView() with path argument works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.scrollPathIntoView is not a function. (In 'ctx.scrollPathIntoView(path)', 'ctx.scrollPathIntoView' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() of an APNG draws the poster frame": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (50, 25) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/canvas-drawImage-e_srgb.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Draw SRGB image on an e-sRGB canvas and read back the e-sRGB pixels.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'actual.length')\""
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.clip.basic.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.clip.basic.2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgba-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.transform.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Radial gradient coordinates are relative to the coordinate space at the time of filling": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.prune.closed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Zero-length line segments from closed paths are removed before stroking": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.immediate.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.image.incomplete.immediate": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.baseline.top.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textBaseline top is the top of the em square (not the bounding box)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (5, 5) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.angle.6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws a full circle when anticlockwise and start > end+2pi": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.bezierCurveTo.ensuresubpath.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "If there is no subpath, the first control point is added": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.underflow.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "restore() with an empty stack has no effect": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/imagebitmap/canvas-createImageBitmap-resize.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageBitmap from a Blob with resize option.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_false: expected false got true"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a HTMLCanvasElement with resize option.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_false: expected false got true"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from a HTMLImageElement with resize option.": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_false: expected false got true"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an ImageBitmap with resize option.": {
          "stNum": 3,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_false: expected false got true"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap from an ImageData with resize option.": {
          "stNum": 4,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerocanvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage with zero-sized canvas as the source shoud throw exception": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create2.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(sw, sh) exists and returns something": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect of negative sizes works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.source-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.source-atop": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/imageData-colorSpace.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Test default color settings: {undefined, undefined} -> {srgb, uint8}": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: value is undefined, expected array"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test default color space: {undefined, float32} -> {srgb, float32}": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected \"[object Float32Array]\" but got \"[object Undefined]\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test default storage format: {srgb, undefined} -> {srgb, uint8}": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: value is undefined, expected array"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color settings: {srgb, uint8}": {
          "stNum": 3,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected \"[object Uint8ClampedArray]\" but got \"[object Undefined]\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color settings: {srgb, uint16}": {
          "stNum": 4,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected \"[object Uint16Array]\" but got \"[object Undefined]\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color settings: {srgb, float32}": {
          "stNum": 5,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: expected \"[object Float32Array]\" but got \"[object Undefined]\""
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/drawimage_canvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 0,0 should be blue.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 0,49 should be blue.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 49,0 should be blue.": {
          "stNum": 2,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 49,49 should be blue.": {
          "stNum": 3,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 5,5 should be black.": {
          "stNum": 4,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 5,44 should be black.": {
          "stNum": 5,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 44,5 should be black.": {
          "stNum": 6,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 44,44 should be black.": {
          "stNum": 7,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 50,0 should be red.": {
          "stNum": 8,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 0,50 should be red.": {
          "stNum": 9,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 50,50 should be red.": {
          "stNum": 10,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 99,99 should be red.": {
          "stNum": 11,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 12,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 25,25 should be blue.": {
          "stNum": 13,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 25,74 should be blue.": {
          "stNum": 14,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 74,25 should be blue.": {
          "stNum": 15,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 74,74 should be blue.": {
          "stNum": 16,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 30,30 should be black.": {
          "stNum": 17,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 30,69 should be black.": {
          "stNum": 18,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 69,30 should be black.": {
          "stNum": 19,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 69,69 should be black.": {
          "stNum": 20,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 24,24 should be red.": {
          "stNum": 21,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 24,75 should be red.": {
          "stNum": 22,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 75,24 should be red.": {
          "stNum": 23,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 75,75 should be red.": {
          "stNum": 24,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 25,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,50 should be blue.": {
          "stNum": 26,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,99 should be blue.": {
          "stNum": 27,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,50 should be blue.": {
          "stNum": 28,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,99 should be blue.": {
          "stNum": 29,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 55,55 should be black.": {
          "stNum": 30,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 55,94 should be black.": {
          "stNum": 31,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 94,55 should be black.": {
          "stNum": 32,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 94,94 should be black.": {
          "stNum": 33,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 0,0 should be red.": {
          "stNum": 34,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 49,49 should be red.": {
          "stNum": 35,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 49,99 should be red.": {
          "stNum": 36,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,49 should be red.": {
          "stNum": 37,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 38,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 50,50 should be blue.": {
          "stNum": 39,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 50,69 should be blue.": {
          "stNum": 40,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 69,50 should be blue.": {
          "stNum": 41,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 69,69 should be blue.": {
          "stNum": 42,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 52,52 should be black.": {
          "stNum": 43,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 52,67 should be black.": {
          "stNum": 44,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 67,52 should be black.": {
          "stNum": 45,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 67,67 should be black.": {
          "stNum": 46,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 49,49 should be red.": {
          "stNum": 47,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 49,70 should be red.": {
          "stNum": 48,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 70,49 should be red.": {
          "stNum": 49,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel 70,70 should be red.": {
          "stNum": 50,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 20, dh = 20 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 51,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 50,50 should be blue.": {
          "stNum": 52,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 50,69 should be blue.": {
          "stNum": 53,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 99,50 should be blue.": {
          "stNum": 54,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 99,69 should be blue.": {
          "stNum": 55,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 55,52 should be black.": {
          "stNum": 56,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 55,67 should be black.": {
          "stNum": 57,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 94,52 should be black.": {
          "stNum": 58,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 94,67 should be black.": {
          "stNum": 59,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 49,49 should be red.": {
          "stNum": 60,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 49,69 should be red.": {
          "stNum": 61,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 99,49 should be red.": {
          "stNum": 62,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel 99,70 should be red.": {
          "stNum": 63,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 50, dh = 20 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 64,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 65,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 66,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 67,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 68,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 69,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 70,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 71,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 72,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 73,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 74,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 75,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 76,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 77,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 78,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 79,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 80,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 81,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 82,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 83,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 84,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 85,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 86,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 87,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 88,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 89,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 90,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 91,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 92,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 93,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 94,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 95,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 96,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 97,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 98,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 99,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 100,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 101,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 102,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 103,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 104,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 105,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 106,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 107,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 108,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 109,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 110,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 111,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 112,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 113,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 114,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 115,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 116,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 117,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 118,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 119,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 120,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 121,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 122,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 123,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 124,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 125,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 126,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 127,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 128,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 129,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 130,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 131,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 132,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 133,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 134,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 135,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 136,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 137,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 138,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 139,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 140,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 141,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 142,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 143,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 144,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 145,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 146,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 147,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 148,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 149,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 150,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgb-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-clamp-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.top.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.cone.top": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.attributes.shadowOffset.valid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.shadow.attributes.shadowOffset.valid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.measure.advances.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Testing width advances": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "undefined is not an object (evaluating 'ctx.measureText('Hello').advances[0]')"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fontface.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.draw.fontface": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.measure.emHeights.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Testing emHeights": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: ctx.measureText('A').emHeightAscent === 37.5 (got 85[number], expected 37.5[number]) expected 37.5 but got 85"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create1.this.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(imgdata) should throw when called with the wrong |this|": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hsl-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.canvas.alpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn correctly for partially-transparent canvases": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/canvas-getImageData-e_srgb.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "tests drawing SRGB color on e-sRGB canvas and getting e-sRGB image data.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "undefined is not an object (evaluating 'actual.length')"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "tests putting and getting in-range e-sRGB image data on e-sRGB canvas.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "tests putting and getting out-of-range e-sRGB image data on e-sRGB canvas.": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "tests putting SRGB image data on e-sRGB canvas and getting e-sRGB image data.": {
          "stNum": 3,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.shadowColor.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for shadowColor": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.stroke.join.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for areas outside stroke joins": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.transform.multiply.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "transform() multiplies the CTM": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.invalidstring.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.invalidstring": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create2.large.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(sw, sh) works for sizes much larger than the canvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognised.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.repeat.unrecognised": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.rgba-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.touch2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.transform.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows take account of transformations": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.destination-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.destination-atop": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.wrongtype.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() does not accept non-ImageData objects": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.pattern.transparent.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for transparent parts of fill patterns": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.transform.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() handles transformations correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.xor.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.scale.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Highly scaled arcs are the right shape": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.scale.zero.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "scale() with a scale factor of zero works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "If there is no subpath, the first control point is added": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.empty.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Empty subpaths are not stroked": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.scale.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "scale() works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "U+0020 is rendered the correct size (1em wide)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() throws TypeError if arguments are not finite": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.modify.canvas1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.destination-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.destination-in": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsla-clamp-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.font.parse.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.font.parse.invalid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.gradient.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn for gradient fills": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect of 0x0 pixels draws nothing, including caps and joins": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.alpha.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are affected by globalAlpha": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.image.destination-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.globalAlpha.image.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.globalAlpha.image": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.destination-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.destination-over": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.beside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.cone.beside": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedir.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Negative dimensions do not affect the direction of the image": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.shadowOffsetX.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for shadowOffsetX": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.destination-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.destination-in": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.cap.valid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Setting lineCap to valid values works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.width.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "lineWidth determines the width of line strokes": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData has a usable constructor": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: imgdata.data === array (got 0,0,0,0,0,0,0,0[object], expected 0,0,0,0,0,0,0,0[object]) expected object \"0,0,0,0,0,0,0,0\" but got object \"0,0,0,0,0,0,0,0\""
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.coord1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.norepeat.coord1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.collinear.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.prune.curve.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.operation.highlight.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.operation.highlight": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.shape.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() from 0 to -pi/2 does not draw anything in the wrong quadrant": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-num-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-num-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.zero.5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.zero.5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/image-smoothing/imagesmoothing.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "When the canvas context is created, imageSmoothingEnabled must be set to true.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "On getting imageSmoothingEnabled, the user agent must return the last value it was set to.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test that image smoothing is actually on by default and just the attribute value.": {
          "stNum": 2,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test that image smoothing works when imageSmoothingEnabled is set to true": {
          "stNum": 3,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with drawImage().": {
          "stNum": 4,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fillRect and createPattern().": {
          "stNum": 5,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 178"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fill() and createPattern().": {
          "stNum": 6,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 178"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern().": {
          "stNum": 7,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 0 but got 178"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) still works after repaints.": {
          "stNum": 8,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.gradient.transparent.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for transparent parts of gradient fills": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.operation.clear.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.operation.clear": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsl-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-num.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgb-num": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.rgb-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-solid-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.double.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(w, h) double is converted to long": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: imgdata1.width === 10 (got 11[number], expected 10[number]) expected 10 but got 11"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.order.alpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns A in the fourth component": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex7.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hex7": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.font.parse.size.percentage.default.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.font.parse.size.percentage.default": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.scale.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo scales the curve, not just the control points": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.miterLimit.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for miterLimit": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-solid-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalalpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect is affected by globalAlpha": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.basic.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() detects whether the point is inside the path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.cylinder.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.cone.cylinder": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.empty.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "The empty string has zero width": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.zeroradius.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() with zero radius draws a line to the start point": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.rotate.wrap.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "rotate() wraps large positive values correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.shape.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() from 0 to pi draws stuff in the right half": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.transparent-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.path.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() does not affect the current path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hsl-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.miter.rightangle.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Miter joins are not drawn when the miter limit is exceeded, on exact right angles": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.shape.curve2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() curves in the right kind of shape": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for lineCap": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.width.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Setting lineWidth to invalid values is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.align.valid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.align.valid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.baseline.valid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.baseline.valid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.offset.negativeX.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows can be offset with negative x": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.alpha.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadow colour alpha components are used": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.unaffected.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() is not affected by context state": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/imagebitmap/createImageBitmap-bounds.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageBitmap: clipping to the bitmap": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-clamp-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.system.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.system": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.rotate.zero.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "rotate() by 0 does nothing": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.range.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns values in the range [0, 255]": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeat.coord2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.font.parse.system.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "System fonts must be computed to explicit values": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.skew.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Strokes lines are skewed by the current transformation matrix": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"function () { ctx.drawImage(document.getElementById('red-zerowidth.svg'), 0, 0, 100, 50); }\" did not throw"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.shadow.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect does not draw shadows": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create2.double.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(w, h) double is converted to long": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: imgdata1.width === 10 (got 11[number], expected 10[number]) expected 10 but got 11"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.canvas.transparent.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for transparent parts of canvases": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.inside1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-8.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsla-8": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsla-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.unaffected.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() is not affected by context state": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.moveTo.multiple.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.moveTo.multiple": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.source-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.destination-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.cross.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.line.cross": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.destination-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.destination-over": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.zero.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.zero.2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.scale.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "scale() with negative scale factors works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.source-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.source-atop": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.image.destination-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.empty.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.repeat.empty": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.source-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.source-out": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.svg-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.svg-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.cap.square.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "lineCap 'square' is rendered correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/drawimage_html_image.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Draw 100x100 image to 100x100 canvas at 0,0.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 0,0 should be light purple.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 0,99 should be light purple.": {
          "stNum": 2,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 99,0 should be light purple.": {
          "stNum": 3,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel 99,99 should be light purple.": {
          "stNum": 4,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 1: dx = 0, dy = 0 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 5,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 25,25 should be light purple.": {
          "stNum": 6,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 25,99 should be light purple.": {
          "stNum": 7,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 99,25 should be light purple.": {
          "stNum": 8,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 99,99 should be light purple.": {
          "stNum": 9,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 0,0 should be red.": {
          "stNum": 10,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 24,24 should be red.": {
          "stNum": 11,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 0,25 should be red.": {
          "stNum": 12,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 25,0 should be red.": {
          "stNum": 13,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 0,99 should be red.": {
          "stNum": 14,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel 99,0 should be red.": {
          "stNum": 15,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 2: dx = 25, dy = 25 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 16,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,50 should be light purple.": {
          "stNum": 17,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,99 should be light purple.": {
          "stNum": 18,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,99 should be gray.": {
          "stNum": 19,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,50 should be gray.": {
          "stNum": 20,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 0,0 should be red.": {
          "stNum": 21,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 49,49 should be red.": {
          "stNum": 22,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 0,50 should be red.": {
          "stNum": 23,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 50,0 should be red.": {
          "stNum": 24,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 0,99 should be red.": {
          "stNum": 25,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel 99,0 should be red.": {
          "stNum": 26,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 3: dx = 50, dy = 50, dw = 50, dh = 50 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 27,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 50,50 should be light purple.": {
          "stNum": 28,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 65,65 should be light purple.": {
          "stNum": 29,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 50,65 should be gray.": {
          "stNum": 30,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 65,50 should be gray.": {
          "stNum": 31,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 0,0 should be red.": {
          "stNum": 32,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 49,49 should be red.": {
          "stNum": 33,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 49,66 should be red.": {
          "stNum": 34,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 66,49 should be red.": {
          "stNum": 35,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 66,66 should be red.": {
          "stNum": 36,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel 99,99 should be red.": {
          "stNum": 37,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 4: dx = 50, dy = 50, dw = 16, dh = 16 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 38,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 50,50 should be light purple.": {
          "stNum": 39,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,81 should be light purple.": {
          "stNum": 40,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 50,81 should be gray.": {
          "stNum": 41,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,50 should be gray.": {
          "stNum": 42,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 0,0 should be red.": {
          "stNum": 43,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 49,49 should be red.": {
          "stNum": 44,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 49,82 should be red.": {
          "stNum": 45,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,49 should be red.": {
          "stNum": 46,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,82 should be red.": {
          "stNum": 47,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel 99,99 should be red.": {
          "stNum": 48,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 5: dx = 50, dy = 50, dw = 64, dh = 32 --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 49,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 50,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 51,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 52,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 53,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 54,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 55,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 56,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 57,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 58,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 59,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 60,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 61,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 62,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 63,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 64,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 65,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 66,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 67,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 68,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 69,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 70,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 71,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 72,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 73,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 74,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 75,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 76,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 77,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 78,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 79,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 80,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 81,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 82,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 83,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 84,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 85,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 86,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 87,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 88,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 89,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 90,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 91,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 92,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 93,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 94,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 95,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 96,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 97,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 98,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 99,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 253 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 100,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 253 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 101,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 253 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 102,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 103,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 104,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 105,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_array_equals: property 0, expected 255 but got 253"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "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.": {
          "stNum": 106,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 107,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 108,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 13: draw an image element that does not have a source --- Pixel 0,0 should be red.": {
          "stNum": 109,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 13: draw an image element that does not have a source --- Pixel 0,99 should be red.": {
          "stNum": 110,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 13: draw an image element that does not have a source --- Pixel 99,0 should be red.": {
          "stNum": 111,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 13: draw an image element that does not have a source --- Pixel 99,69 should be red.": {
          "stNum": 112,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test scenario 13: draw an image element that does not have a source --- Pixel outside canvas should be transparent black.\n": {
          "stNum": 113,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 114,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 115,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 116,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 117,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 118,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 119,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 120,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 121,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 122,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 123,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 124,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.": {
          "stNum": 125,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "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.\n": {
          "stNum": 126,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.transformation.changing.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Transformations are applied while building paths, not when drawing": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.clip.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows of clipped shapes are still drawn within the clipping region": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.touch1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.touch1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.readonly.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData objects properties are read-only": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.destpos.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.9arg.destpos": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.destination-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.destination-out": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hex2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-7.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsl-7": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.notrendered.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "currentColor is computed from the canvas element even when element is not rendered": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.outside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() works on paths outside the canvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.zero.4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.zero.4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.inside2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.lineTo.ensuresubpath.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "If there is no subpath, the point is added and used for subsequent drawing": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgb-clamp-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgb-clamp-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.nonempty.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() with a non-empty path does draw a straight line to the start point": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.canvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.canvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.fill.copy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativedest.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Negative destination width/height represents the correct rectangle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.subpath.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() uses the current path, not just the subpath": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.twopie.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws a full circle when end = start + 2pi+e and anticlockwise": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.order.cols.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns leftmost columns first": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/conformance-requirements/2d.type.delete.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "window.CanvasRenderingContext2D is Configurable": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsla-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.name-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.miter.valid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Setting miterLimit to valid values works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsla-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.rgba-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-clamp-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-clamp-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.source.outside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns transparent black outside the canvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.collinear.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsla-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hsla-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.image.section.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for areas outside image source rectangles": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.lighter.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.lighter": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.stroke.join.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn for stroke joins": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.shadow.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect draws shadows": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.object.current.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.object.current": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.scale.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "scale() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsla-clamp-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.lineTo.nonfinite.details.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "lineTo() with Infinity/NaN for first arg still converts the second arg": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.destination-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.destination-over": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.clip.winding.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.clip.winding.2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.path.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect does not affect the current path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.lighter.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.lighter": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.rgba-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createRadialGradient() throws TypeError if arguments are not finite": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hsl-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.translate.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "translate() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colour.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.colour": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillText works on @font-face fonts": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgba-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect is affected by clipping regions": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/imagebitmap/createImageBitmap-origin.sub.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "cross-origin HTMLImageElement": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "cross-origin SVGImageElement": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "cross-origin HTMLVideoElement": {
          "stNum": 2,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "redirected to cross-origin HTMLVideoElement": {
          "stNum": 3,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "redirected to same-origin HTMLVideoElement": {
          "stNum": 4,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "unclean HTMLCanvasElement": {
          "stNum": 5,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "unclean ImageBitmap": {
          "stNum": 6,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.clip.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() is not affected by clipping regions": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.get.transparent.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.get.transparent": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.alpha.4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows with alpha components are correctly affected by globalAlpha": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_003.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawFocusIfNeeded does not draw a focus ring if the element is not a descendant of the context.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.attributes.shadowColor.valid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.shadow.attributes.shadowColor.valid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.bezier.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() works on Bezier curves": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.source-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.source-out": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillText handles maxWidth correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.lighter.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.lighter": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/imageData-colorManagedBehavior.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "imageData-colorManagedBehavior": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "TypeError: undefined is not an object (evaluating 'srgbImageDataU8.dataUnion[i*4+j] = srgbPixels[i][j]')"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.bottom.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.cone.bottom": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.globalAlpha.range.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.globalAlpha.range": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.destination-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.destination-atop": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.alpha.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadow colour alpha components are used": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.stroke.cap.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for areas outside stroke caps": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.pattern.source-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.closed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.closed": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsla-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgb-clamp-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_002.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawFocusIfNeeded does not draw a focus ring if the element is not in focus.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-clamp-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-clamp-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.prune.rect.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Zero-length line segments from rect and strokeRect are removed before stroking": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.measure.width.space.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Space characters are converted to U+0020 and collapsed (per CSS)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: ctx.measureText('A  B').width === 150 (got 200[number], expected 150[number]) expected 150 but got 200"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.rgba-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgba-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.clip.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn outside the clipping region": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.font.parse.size.percentage.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.font.parse.size.percentage": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.translate.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "translate() works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeat.coord1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.pattern.copy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.xor.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.xor": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create2.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData() throws TypeError if arguments are not finite": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() only modifies areas inside the dirty rectangle, using width and height": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.stroke.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.zerosize.stroke": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.closePath.empty.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.closePath.empty": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Testing actualBoundingBox": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Math.abs(ctx.measureText('A').actualBoundingBoxDescent) === 0 (got 1[number], expected 0[number]) expected 0 but got 1"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.setTransform.skewed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.transformation.setTransform.skewed": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.basic.image.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.basic.image": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.outside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows of shapes outside the visible area can be offset onto the visible area": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hex1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.xor.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.xor": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.nan.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData.data converts NaN to 0": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/setLineDash.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Invalid arguments to setLineDash()": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "setLineDash": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.operation.nullsuffix.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.operation.nullsuffix": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.bigarc.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() works on unclosed arcs larger than 2pi": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.image.source-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.composite.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn using globalCompositeOperation": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.closePath.newline.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.closePath.newline": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html": {
      "byUA": {
        "Sf12": "ERROR"
      },
      "UAmessage": {
        "Sf12": "TypeError: testCanvas.convertToBlob is not a function. (In 'testCanvas.convertToBlob(encodeOptions)', 'testCanvas.convertToBlob' is undefined)"
      },
      "totals": {
        "ERROR": 1
      },
      "subtests": {
        "createImageBitmap in e-sRGB from an opaque sRGB HTMLImageElement (BMP, GIF, ICO, JPG, PNG, WEBP) with resize.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap in e-sRGB from a transparent sRGB HTMLImageElement (BMP, ICO, PNG, WEBP) with resize.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap in e-sRGB from a sRGB SVG image with resize.": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "createImageBitmap in e-sRGB from a sRGB HTMLVideoElement with resize.": {
          "stNum": 3,
          "byUA": {
            "Sf12": "TIMEOUT"
          },
          "UAmessage": {
            "Sf12": "Test timed out"
          },
          "totals": {
            "TIMEOUT": 1
          }
        },
        "createImageBitmap in e-sRGB from an opaque sRGB HTMLCanvasElement with resize.": {
          "stNum": 4,
          "byUA": {
            "Sf12": "NOTRUN"
          },
          "UAmessage": {},
          "totals": {
            "NOTRUN": 1
          }
        },
        "createImageBitmap in e-sRGB from an opaque e-sRGB HTMLCanvasElement with resize.": {
          "stNum": 5,
          "byUA": {
            "Sf12": "NOTRUN"
          },
          "UAmessage": {},
          "totals": {
            "NOTRUN": 1
          }
        },
        "createImageBitmap in e-sRGB from a transparent sRGB HTMLCanvasElement with resize.": {
          "stNum": 6,
          "byUA": {
            "Sf12": "NOTRUN"
          },
          "UAmessage": {},
          "totals": {
            "NOTRUN": 1
          }
        },
        "createImageBitmap in e-sRGB from a transparent e-sRGB HTMLCanvasElement with resize.": {
          "stNum": 7,
          "byUA": {
            "Sf12": "NOTRUN"
          },
          "UAmessage": {},
          "totals": {
            "NOTRUN": 1
          }
        },
        "createImageBitmap in e-sRGB from an opaque sRGB Blob with resize.": {
          "stNum": 8,
          "byUA": {
            "Sf12": "NOTRUN"
          },
          "UAmessage": {},
          "totals": {
            "NOTRUN": 1
          }
        },
        "createImageBitmap in e-sRGB from a transparent sRGB Blob with resize.": {
          "stNum": 9,
          "byUA": {
            "Sf12": "NOTRUN"
          },
          "UAmessage": {},
          "totals": {
            "NOTRUN": 1
          }
        },
        "createImageBitmap in e-sRGB from color managed Blob with resize. blobPixelFormat: uint8, transparency: false": {
          "stNum": 10,
          "byUA": {
            "Sf12": "NOTRUN"
          },
          "UAmessage": {},
          "totals": {
            "NOTRUN": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.cross.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() accepts image data got from a different canvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-8.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsl-8": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.globalAlpha.canvaspattern.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.globalAlpha.canvaspattern": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-9.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsl-9": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.source-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.source-over": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.reload.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.incomplete.reload": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hsl-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Linear gradient coordinates are relative to the coordinate space at the time of filling": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.composite.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn using globalCompositeOperation": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.cap.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Setting lineCap to invalid values is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.offset.positiveY.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows can be offset with positive y": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.canvas.destination-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.canvas.destination-out": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/transferFromImageBitmap.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: uint8, alpha: 0.5, intermediate color space: none": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'actual.length')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: uint8, alpha: 0.5, intermediate color space: default": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'actual.length')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: uint8, alpha: 1, intermediate color space: none": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'actual.length')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: uint8, alpha: 1, intermediate color space: default": {
          "stNum": 3,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'actual.length')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: float16, alpha: 0.5, intermediate color space: none": {
          "stNum": 4,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'actual.length')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: float16, alpha: 0.5, intermediate color space: default": {
          "stNum": 5,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'actual.length')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: float16, alpha: 1, intermediate color space: none": {
          "stNum": 6,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'actual.length')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Testing ImageBitmapRenderingContext: Source color space: srgb, pixel format: float16, alpha: 1, intermediate color space: default": {
          "stNum": 7,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: undefined is not an object (evaluating 'actual.length')\""
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.globalAlpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for globalAlpha": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.angle.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws pi/2 .. -pi anticlockwise correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect of 0x0 pixels draws nothing": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.3arg.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.3arg": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.emptysrc.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.image.incomplete.emptysrc": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.zero.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect of zero pixels has no effect": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.fill.destination-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsl-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.undefined.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.repeat.undefined": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.overlap": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.selfintersect.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() with lineWidth > 2*radius is drawn sensibly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-clamp-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-clamp-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.removedsrc.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.incomplete.removedsrc": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.outside2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.emptysrc.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.incomplete.emptysrc": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.shape.5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() from 0 to 5pi does not draw crazy things": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.destination-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.destination-over": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgba-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.rgba-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.transform.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect is affected by transforms": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.rgb-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.clip.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect is affected by clipping regions": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.setTransform.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "setTransform() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.dirty.rect2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() only modifies areas inside the dirty rectangle, using x and y": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.source-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.source-atop": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.copy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.copy": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.end.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.end.1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.offset.negativeY.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows can be offset with negative y": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create2.this.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(sw, sh) should throw when called with the wrong |this|": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/ImageData-fidelity.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Verify that drawImage->getImageData round trip preserves color values when image metadata has no color space and canvas uses the default color space.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Verify that drawImage->getImageData round trip preserves color values when image metadata has srgb color space and canvas uses the srgb color space.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Verify that drawImage->getImageData round trip preserves color values when image metadata has no color space and canvas uses the srgb color space.": {
          "stNum": 2,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Verify that drawImage->getImageData round trip preserves color values when image metadata has srgb color space and canvas uses the default color space.": {
          "stNum": 3,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.globalAlpha.default.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.globalAlpha.default": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.quadraticCurveTo.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.quadraticCurveTo.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/imagebitmap/canvas-createImageBitmap-video-resize.html": {
      "byUA": {
        "Sf12": "TIMEOUT"
      },
      "UAmessage": {},
      "totals": {
        "TIMEOUT": 1
      },
      "subtests": {
        "createImageBitmap(HTMLVideoElement) with resize option": {
          "stNum": 0,
          "byUA": {
            "Sf12": "NOTRUN"
          },
          "UAmessage": {},
          "totals": {
            "NOTRUN": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.crosscanvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.crosscanvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-7.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsla-7": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.join.bevel.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "lineJoin 'bevel' is rendered correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.xor.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.xor": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.ctor.size.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData has a usable constructor": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect of Nx0 pixels draws a closed line with no caps": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgb-clamp-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.zero.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.fillText.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.zerosize.fillText": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.transform.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() handles transformations correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.destination-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.destination-out": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsla-clamp-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Linear gradient coordinates are relative to the coordinate space at the time of filling": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hex6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.order.rows.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns topmost rows first": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.name-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.canvas.transparent.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for transparent canvases": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.fillStyle.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for fillStyle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.outside3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-percent.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-percent": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsl-6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.lighter.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsl-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsl-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.clip.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect is affected by clipping regions": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.twopie.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws nothing when end = start + 2pi-e and anticlockwise": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-hsla-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-hsla-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.source-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.source-over": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.collinear.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_004.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawFocusIfNeeded does draw a focus ring if the element is in focus.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/conformance-requirements/2d.voidreturn.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "void methods return undefined": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.9arg.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.empty.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() with an empty path does not draw a straight line to the start point": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.zero.6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.zero.6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.stroke.join.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn for stroke joins respecting miter limit": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.right.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textAlign right is the right of the last em square (not the bounding box)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.fill.source-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.coord3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeat.coord3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create1.initial.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(imgdata) returns transparent black data of the right size": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.clip.empty.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.clip.empty": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "rect() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Test color managed cretateImageData: {srgb, uint8} -> {srgb, uint8}": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "imageData.getColorSettings is not a function. (In 'imageData.getColorSettings()', 'imageData.getColorSettings' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color managed cretateImageData: {srgb, float16} -> {srgb, float32}": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "imageData.getColorSettings is not a function. (In 'imageData.getColorSettings()', 'imageData.getColorSettings' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color managed getImageData: {srgb, uint8} -> {srgb, uint8}": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "imageData.getColorSettings is not a function. (In 'imageData.getColorSettings()', 'imageData.getColorSettings' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color managed getImageData: {srgb, float16} -> {srgb, float32}": {
          "stNum": 3,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "imageData.getColorSettings is not a function. (In 'imageData.getColorSettings()', 'imageData.getColorSettings' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color managed putImageData: {srgb, uint8} -> {srgb, uint8}": {
          "stNum": 4,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color managed putImageData: {srgb, uint8} -> {srgb, float16}": {
          "stNum": 5,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color managed putImageData: {srgb, uint16} -> {srgb, uint8}": {
          "stNum": 6,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color managed putImageData: {srgb, uint16} -> {srgb, float16}": {
          "stNum": 7,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color managed putImageData: {srgb, float32} -> {srgb, uint8}": {
          "stNum": 8,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Test color managed putImageData: {srgb, float32} -> {srgb, float16}": {
          "stNum": 9,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.zero.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.zero.3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.html4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.html4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.object.return.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createLinearGradient() and createRadialGradient() returns objects implementing CanvasGradient": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.pattern.transparent.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for transparent fill patterns": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.enable.blur.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn if shadowBlur is set": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.outside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.outside": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hex4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.basic.zerocanvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.basic.zerocanvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.enable.off.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn when only shadowColor is set": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.orientation.canvas.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas patterns do not get flipped when painted": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.operation.darker.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.operation.darker": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: ctx.globalCompositeOperation === 'xor' (got darker[string], expected xor[string]) expected \"xor\" but got \"darker\""
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.copy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.linear.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createLinearGradient() throws TypeError if arguments are not finite": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsla-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsla-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.coord1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeaty.coord1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.source-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.source-out": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.basic.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() detects whether the point is inside the path": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.coincide.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() draws a straight line to P1 if P1 = P2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.colouralpha": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.5arg.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.5arg": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.composite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.composite": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.dirty.outside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() handles dirty rectangles outside the canvas correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgba-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.name-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalalpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect is not affected by globalAlpha": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.end.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() adds the end point of the arc to the subpath": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.zero.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws nothing when startAngle = endAngle and anticlockwise": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.zero.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws nothing when startAngle = endAngle and clockwise": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.clip.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows of clipped shapes are still drawn within the clipping region": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.align.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.align.invalid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.destination-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.destination-out": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.rgb-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.rgb-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.source.size.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns bigger ImageData for bigger source rectangle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.shape.end.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() does not draw anything from P1 to P2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/canvas_colorsandstyles_createlineargradient_001.htm": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "linear gradient from point to self draws nothing": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.scale.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Non-uniformly scaled arcs are the right shape": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.zero.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.zero.1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.norepeat.outside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.norepeat.outside": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.zero.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect of Nx0 pixels draws a straight line": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.name-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.name-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.coincide.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() has no effect if P0 = P1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.alpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.alpha": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillText handles maxWidth correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.nocontext.source-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.bezierCurveTo.shape.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.bezierCurveTo.shape": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.gradient.transparent.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for transparent gradient fills": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.ensuresubpath.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "If there is no subpath, the first control point is added": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.overlap.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Stroked subpaths are combined before being drawn": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.transform.identity.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "transform() with the identity matrix does nothing": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.fill.winding.subtract.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.fill.winding.subtract.3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.attributes.shadowBlur.valid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.shadow.attributes.shadowBlur.valid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textAlign start with ltr is the left edge": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.object.compare.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.object.compare": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.coord1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeatx.coord1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.bezierCurveTo.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.bezierCurveTo.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.transformation.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.transformation.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.clip.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.clip": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgb-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.width.transformed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Line stroke widths are affected by scale transformations": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.shadowBlur.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for shadowBlur": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arcTo.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arcTo() with negative radius throws an exception": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.transform.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.transform": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.pattern.destination-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.pattern.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn for fill patterns": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.transform.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadow offsets are not affected by transformations": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect of negative sizes works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hex5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Testing fontBoundingBox": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.incomplete.nosrc.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.incomplete.nosrc": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.transform.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect is affected by transforms": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.image.alpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn correctly for partially-transparent images": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.round.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData.data rounds numbers with round-to-zero": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.cap.round.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "lineCap 'round' is rendered correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.scale1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Stroke line widths are scaled by the current transformation matrix": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.transparent.source-over.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.transparent.source-over": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.space.collapse.other.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Space characters are converted to U+0020, and collapsed (per CSS)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (25, 25) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.shadow.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect draws shadows": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.source-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create2.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(sw, sh) takes the absolute magnitude of the size arguments": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.basic.type.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.basic.type": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.angle.4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws a full circle when clockwise and end > start+2pi": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.fill.winding.add.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.fill.winding.add": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-clamp-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgb-clamp-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgb-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgb-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.source-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.source-in": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.join.closed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Line joins are drawn at the corner of a closed rectangle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Non-space characters are not converted to U+0020 and collapsed": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/scroll/2d.scrollPathIntoView.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "scrollPathIntoView() works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.scrollPathIntoView is not a function. (In 'ctx.scrollPathIntoView()', 'ctx.scrollPathIntoView' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeatx.outside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeatx.outside": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.removedsrc.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.image.incomplete.removedsrc": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.animated.gif.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() of an animated GIF draws the first frame": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (50, 25) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/conformance-requirements/2d.missingargs.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Missing arguments cause TypeError": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.default.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() with missing last argument defaults to clockwise": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hex3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.font.parse.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.font.parse.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.moveTo.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.moveTo.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.outside1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.outside1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create2.type.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(sw, sh) returns an ImageData object containing a Uint8ClampedArray object": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.stroke.unaffected.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Stroking does not start a new path or subpath": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.image.transparent.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn for transparent images": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.inside3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.inside3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Green channel of the pixel at (98, 25) expected 255 but got 254"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.image.incomplete.reload.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.image.incomplete.reload": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeat.outside": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hsl-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeat.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.measure.width.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.measure.width.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.order.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Transformations are applied in the right order": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgb-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.modify.image1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.modify.image1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.attributes.shadowColor.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.shadow.attributes.shadowColor.invalid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/imagebitmap/createImageBitmap-transfer.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Transfer ImageBitmap created from an HTMLCanvasElement": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Transfer ImageBitmap created from an HTMLVideoElement": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Transfer ImageBitmap created from an HTMLVideoElement from a data URL": {
          "stNum": 2,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Transfer ImageBitmap created from a bitmap HTMLImageElement": {
          "stNum": 3,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Transfer ImageBitmap created from a vector HTMLImageElement": {
          "stNum": 4,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Transfer ImageBitmap created from a bitmap SVGImageElement": {
          "stNum": 5,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Transfer ImageBitmap created from a vector SVGImageElement": {
          "stNum": 6,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: Type error\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Transfer ImageBitmap created from an OffscreenCanvas": {
          "stNum": 7,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: null is not an object (evaluating 'testCtx.fillStyle = \"rgb(255, 0, 0)\"')\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Transfer ImageBitmap created from an ImageData": {
          "stNum": 8,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "promise_test: Unhandled rejection with value: object \"TypeError: createImageBitmap with ImageData is not implemented\""
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Transfer ImageBitmap created from an ImageBitmap": {
          "stNum": 9,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Transfer ImageBitmap created from a Blob": {
          "stNum": 10,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.transform.4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() handles transformations correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.measure.baselines.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Testing baselines": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.measureText('A').getBaselines is not a function. (In 'ctx.measureText('A').getBaselines()', 'ctx.measureText('A').getBaselines' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.null.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.null": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.broken.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.broken": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (50, 25) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.drawImage.9arg.sourcepos": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.globalAlpha.imagepattern.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.globalAlpha.imagepattern": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/imagedata-no-color-settings-crash.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Putting a float-32 ImageData with no color settings on a context 2D should not crash.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "Putting a uint-16 ImageData with no color settings on a context 2D should not crash.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "The provided value is non-finite"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.font.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for font": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/wide-gamut-canvas/canvas-colorManaged-toBlob-toDataURL.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: uint8, alpha: 0.5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: uint8, alpha: 1": {
          "stNum": 1,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: float16, alpha: 0.5": {
          "stNum": 2,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: float16, alpha: 1": {
          "stNum": 3,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: uint8, alpha: 0.5": {
          "stNum": 4,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: uint8, alpha: 1": {
          "stNum": 5,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: float16, alpha: 0.5": {
          "stNum": 6,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: float16, alpha: 1": {
          "stNum": 7,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: uint8, alpha: 0.5": {
          "stNum": 8,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: uint8, alpha: 1": {
          "stNum": 9,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: float16, alpha: 0.5": {
          "stNum": 10,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toBlob() respects legacy behavior in         color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: float16, alpha: 1": {
          "stNum": 11,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: uint8, alpha: 0.5": {
          "stNum": 12,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: uint8, alpha: 1": {
          "stNum": 13,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: float16, alpha: 0.5": {
          "stNum": 14,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/jpeg, source color space: srgb, pixel format: float16, alpha: 1": {
          "stNum": 15,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: uint8, alpha: 0.5": {
          "stNum": 16,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: uint8, alpha: 1": {
          "stNum": 17,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: float16, alpha: 0.5": {
          "stNum": 18,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/png, source color space: srgb, pixel format: float16, alpha: 1": {
          "stNum": 19,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: uint8, alpha: 0.5": {
          "stNum": 20,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: uint8, alpha: 1": {
          "stNum": 21,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: float16, alpha: 0.5": {
          "stNum": 22,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        },
        "Test if toDataURL() respects legacy behavior         in color managed canvas: ImageFormat: image/webp, source color space: srgb, pixel format: float16, alpha: 1": {
          "stNum": 23,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.lineJoin.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for lineJoin": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.globalAlpha.canvascopy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.globalAlpha.canvascopy": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.textBaseline.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() works for textBaseline": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.overlap2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.overlap2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.miter.obtuse.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Miter joins are drawn correctly with obtuse angles": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.removed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "currentColor is solid black when the canvas element is not in a document": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.ctor.array.bounds.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData has a usable constructor": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.zero.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() throws INDEX_SIZE_ERR if size is zero": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"function () { ctx.getImageData(1, 1, 0.1, 10); }\" did not throw"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.image.copy.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgba-2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.baseline.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.text.baseline.invalid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.null.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.repeat.null": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.image.broken.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.image.broken": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: function \"function () { ctx.createPattern(img, 'repeat'); }\" did not throw"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsla-clamp-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsla-clamp-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textAlign start with rtl is the right edge": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.create1.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createImageData(imgdata) exists and returns something": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.rotate.direction.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "rotate() is clockwise": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.angle.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws -3pi/2 .. -pi anticlockwise correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/scroll/2d.scrollPathIntoView.verticalLR.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "scrollPathIntoView() works in vertical-lr writing mode": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "ctx.scrollPathIntoView is not a function. (In 'ctx.scrollPathIntoView()', 'ctx.scrollPathIntoView' is undefined)"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/text-styles/2d.text.draw.baseline.bottom.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textBaseline bottom is the bottom of the em square (not the bounding box)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_approx_equals: Red channel of the pixel at (25, 25) expected 0 +/- 2 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.image.source-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.image.source-atop": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "textAlign end with rtl is the left edge": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.arc.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() works on arcs": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.end.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.end.2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.transparent-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.transparent-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.defaults.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.line.defaults": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.put.created.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "putImageData() puts image data from createImageData() onto the canvas": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.behind.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.cone.behind": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.transformation.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() affects the current transformation matrix": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.fill.source-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.source.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() works with negative width and height, and returns top-to-bottom left-to-right": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.image.scale.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn correctly for scaled images": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.globalAlpha.fill.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.globalAlpha.fill": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.repeat.unrecognisednull.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.repeat.unrecognisednull": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.uncovered.image.source-in.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-rgba-3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-rgba-3": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillText handles maxWidth correctly": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/the-canvas-state/2d.state.saverestore.stackdepth.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "save()/restore() stack depth is not unreasonably limited": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect clears to transparent black": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.animated.gif.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createPattern() of an animated GIF draws the first frame": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.default.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.default": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.fill.winding.subtract.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.fill.winding.subtract.2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.composite.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Areas outside shadows are drawn correctly with destination-out": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.current.changed.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "currentColor is computed when the attribute is set, not when it is painted": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.twopie.2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() draws a full circle when end = start + 2pi-e and clockwise": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hsl-6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hsl-6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.arc.angle.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "arc() wraps angles mod 2pi when anticlockwise and end > start+2pi": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.fill.closed.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.fill.closed.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.enable.off.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are not drawn when only shadowColor is set": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.modify.canvas2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.modify.canvas2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.globalcomposite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect is not affected by globalCompositeOperation": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.css-color-4-hsl-1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.css-color-4-hsl-1": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.initial.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.initial": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.isPointInPath.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "isPointInPath() returns false for non-finite arguments": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.nowrap.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Stretched images do not get pixels wrapping around the edges": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/hit-regions/addHitRegions-NotSupportedError-01.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect should not affect current default path and NotSupportedError should be thrown.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: fillRect should not affect current default path and NotSupportedError should be thrown. function \"function () {\n            var canvas = document.getElementById(\"canvas\");\n            // Reset context\n            canvas.width = canvas.width;\n            var button = document.getElementById(\"button\");\n            var context = canvas.getContext(\"2d\");\n\n            // Shapes are painted without affecting the current default path,\n            // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/#drawing-rectangles-to-the-canvas\n            context.fillRect(25, 25, 25, 25);\n\n            // If the specified path has no pixels, throw a NotSupportedError exception and abort these steps.\n            // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/#hit-regions\n            context.addHitRegion({ id: \"notsupportederror_fillRect\", control: button })\n        }\" threw object \"TypeError: context.addHitRegion is not a function. (In 'context.addHitRegion({ id: \"notsupportederror_fillRect\", control: button })', 'context.addHitRegion' is undefined)\" (\"TypeError\") expected object \"[object Object]\" (\"NotSupportedError\")"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "strokeRect should not affect current default path and NotSupportedError should be thrown.": {
          "stNum": 1,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: strokeRect should not affect current default path and NotSupportedError should be thrown. function \"function () {\n            var canvas = document.getElementById(\"canvas\");\n            // Reset context\n            canvas.width = canvas.width;\n            var button = document.getElementById(\"button\");\n            var context = canvas.getContext(\"2d\");\n\n            // \"Shapes are painted without affecting the current default path,\"\n            // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/#drawing-rectangles-to-the-canvas\n            context.strokeRect(75, 25, 25, 25);\n\n            // \"If the specified path has no pixels, throw a NotSupportedError exception and abort these steps.\"\n            // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/#hit-regions\n            context.addHitRegion({ id: \"notsupportederror_strokeRect\", control: button })\n        }\" threw object \"TypeError: context.addHitRegion is not a function. (In 'context.addHitRegion({ id: \"notsupportederror_strokeRect\", control: button })', 'context.addHitRegion' is undefined)\" (\"TypeError\") expected object \"[object Object]\" (\"NotSupportedError\")"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "fillText should not affect current default path and NotSupportedError should be thrown.": {
          "stNum": 2,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: fillText should not affect current default path and NotSupportedError should be thrown. function \"function () {\n            var canvas = document.getElementById(\"canvas\");\n            // Reset context\n            canvas.width = canvas.width;\n            var button = document.getElementById(\"button\");\n            var context = canvas.getContext(\"2d\");\n\n            // \"These shapes are painted without affecting the current path\"\n            // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/#drawing-rectangles-to-the-canvas\n            context.fillText(\"fillText\", 25, 100);\n\n            // \"If the specified path has no pixels, throw a NotSupportedError exception and abort these steps.\"\n            // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/#drawing-text-to-the-canvas\n            context.addHitRegion({ id: \"notsupportederror_fillText\", control: button });\n        }\" threw object \"TypeError: context.addHitRegion is not a function. (In 'context.addHitRegion({ id: \"notsupportederror_fillText\", control: button })', 'context.addHitRegion' is undefined)\" (\"TypeError\") expected object \"[object Object]\" (\"NotSupportedError\")"
          },
          "totals": {
            "FAIL": 1
          }
        },
        "strokeText should not affect current default path and NotSupportedError shuld be thrown.": {
          "stNum": 3,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_throws: strokeText should not affect current default path and NotSupportedError shuld be thrown. function \"function () {\n            var canvas = document.getElementById(\"canvas\");\n            canvas.width = canvas.width;\n            var button = document.getElementById(\"button\");\n            var context = canvas.getContext(\"2d\");\n            // \"These shapes are painted without affecting the current path\"\n            // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/#drawing-rectangles-to-the-canvas\n            context.strokeText(\"strokeText\", 75, 100);\n\n            // \"If the specified path has no pixels, throw a NotSupportedError exception and abort these steps.\"\n            // http://www.w3.org/html/wg/drafts/2dcontext/html5_canvas_CR/#drawing-text-to-the-canvas\n            context.addHitRegion({ id: \"notsupportederror_strokeText\", control: button });\n        }\" threw object \"TypeError: context.addHitRegion is not a function. (In 'context.addHitRegion({ id: \"notsupportederror_strokeText\", control: button })', 'context.addHitRegion' is undefined)\" (\"TypeError\") expected object \"[object Object]\" (\"NotSupportedError\")"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.pattern.paint.repeaty.outside.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.pattern.paint.repeaty.outside": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.cone.shape2.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.radial.cone.shape2": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.wrongtype.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Incorrect image types in drawImage do not match any defined overloads, so WebIDL throws a TypeError": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.transform.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "transform() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.zerosize.strokeText.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.zerosize.strokeText": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hex8": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.object.type.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "window.CanvasGradient exists and has the right properties": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.solid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.gradient.interpolate.solid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.object.undefined.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "ImageData.data converts undefined to 0": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.basic": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-images-to-the-canvas/2d.drawImage.negativesource.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Negative source width/height represents the correct rectangle": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.quadraticCurveTo.ensuresubpath.1.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "If there is no subpath, the first control point is added (and nothing is drawn up to it)": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.linear.transform.3.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Linear gradient transforms do not experience broken caching effects": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/shadows/2d.shadow.pattern.alpha.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Shadows are drawn correctly for partially-transparent fill patterns": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgb-6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgb-6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.css-color-4-rgba-6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.css-color-4-rgba-6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (50, 25) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.globalAlpha.invalid.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.globalAlpha.invalid": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.strokeRect.nonfinite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "strokeRect() with Infinity/NaN is ignored": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.gradient.radial.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.fillRect.negative.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fillRect of negative sizes works": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hsl-5.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.hsl-5": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/line-styles/2d.line.join.parallel.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Line joins are drawn at 180-degree joins": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.solid.destination-atop.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.solid.destination-atop": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgb-eof.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgb-eof": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.operation.casesensitive.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.composite.operation.casesensitive": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/transformations/2d.transformation.rotate.radians.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "rotate() uses radians": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.rgba-solid-4.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.rgba-solid-4": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.moveTo.newsubpath.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.moveTo.newsubpath": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.invalid.hex6.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.fillStyle.parse.invalid.hex6": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.type.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() returns an ImageData object containing a Uint8ClampedArray object": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/pixel-manipulation/2d.imageData.get.basic.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "getImageData() exists and returns something": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/compositing/2d.composite.clip.destination-out.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "fill() does not affect pixels outside the clip region.": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/drawing-rectangles-to-the-canvas/2d.clearRect.globalcomposite.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "clearRect is not affected by globalCompositeOperation": {
          "stNum": 0,
          "byUA": {
            "Sf12": "PASS"
          },
          "UAmessage": {},
          "totals": {
            "PASS": 1
          }
        }
      }
    },
    "/2dcontext/path-objects/2d.path.rect.winding.html": {
      "byUA": {
        "Sf12": "OK"
      },
      "UAmessage": {},
      "totals": {
        "OK": 1
      },
      "subtests": {
        "Canvas test: 2d.path.rect.winding": {
          "stNum": 0,
          "byUA": {
            "Sf12": "FAIL"
          },
          "UAmessage": {
            "Sf12": "assert_equals: Red channel of the pixel at (25, 12) expected 0 but got 255"
          },
          "totals": {
            "FAIL": 1
          }
        }
      }
    }
  }
}