def test_selenium_mimebundle( name: str, data: Dict[str, Any], mode: str, fmt: str, offline: bool, internet_ok: bool, ) -> None: if not (offline or internet_ok): pytest.xfail("Internet not available") saver = SeleniumSaver(data[mode], mode=mode, offline=offline) if mode == "vega" and fmt == "vega-lite": with pytest.raises(ValueError): saver.mimebundle(fmt) return mimetype, out = saver.mimebundle(fmt).popitem() assert mimetype == fmt_to_mimetype(fmt) if fmt == "png": assert isinstance(out, bytes) im = Image.open(io.BytesIO(out)) assert im.format == "PNG" im_expected = Image.open(io.BytesIO(data[fmt])) assert abs(im.size[0] - im_expected.size[0]) < 5 assert abs(im.size[1] - im_expected.size[1]) < 5 elif fmt == "svg": assert out == data[fmt] else: assert out == data[fmt]
def test_extract_error() -> None: saver = SeleniumSaver({}) with pytest.raises(JavascriptError) as err: saver._extract("png") assert "Invalid specification" in str(err.value) saver = SeleniumSaver({}, mode="vega") with pytest.raises(JavascriptError) as err: saver._extract("xxx") assert "Unrecognized format" in str(err.value)
def test_scale_factor(spec: JSONDict, fmt: str, kwds: Dict[str, Any]) -> None: saver1 = SeleniumSaver(spec) out1 = saver1.save(fmt=fmt) saver2 = SeleniumSaver(spec, **kwds) out2 = saver2.save(fmt=fmt) if fmt == "png": assert isinstance(out1, bytes) im1 = Image.open(io.BytesIO(out1)) assert im1.format == "PNG" assert isinstance(out2, bytes) im2 = Image.open(io.BytesIO(out2)) assert im2.format == "PNG" assert im2.size[0] == 2 * im1.size[0] assert im2.size[1] == 2 * im1.size[1] else: assert isinstance(out1, str) im1 = _SVGImage(out1) assert isinstance(out2, str) im2 = _SVGImage(out2) assert im2.width == 2 * im1.width assert im2.height == 2 * im1.height
def test_stop_and_start(name: str, data: Dict[str, Any]) -> None: saver = SeleniumSaver(data["vega-lite"]) bundle1 = saver.mimebundle("png") saver._stop_serving() assert saver._provider is None bundle2 = saver.mimebundle("png") assert bundle1 == bundle2
def test_enabled() -> None: assert SeleniumSaver.enabled()