def test_create_dom_snapshot_loop_timeout(): script = mock.MagicMock() script.run.return_value = ProcessPageResult(ProcessPageStatus.WIP) script.poll_result.return_value = ProcessPageResult(ProcessPageStatus.WIP) with pytest.raises(DomSnapshotTimeout): create_dom_snapshot_loop(script, 5, 2, 3)
def test_create_dom_snapshot_loop_raises_if_poll_result_returns_error(): script = mock.MagicMock() script.run.return_value = ProcessPageResult(ProcessPageStatus.WIP) script.poll_result.return_value = ProcessPageResult( ProcessPageStatus.ERROR, error="OOPS") with pytest.raises(DomSnapshotScriptError, match="OOPS"): create_dom_snapshot_loop(script, time() + 10, 2, 3)
def test_create_dom_snapshot_loop_success(): script = mock.MagicMock() script.run.return_value = ProcessPageResult(ProcessPageStatus.WIP) script.poll_result.return_value = ProcessPageResult( ProcessPageStatus.SUCCESS, value={"a": "b"}) res = create_dom_snapshot_loop(script, time() + 1, 2, 3) assert res == {"a": "b"}
def test_create_dom_snapshot_loop_calls_poll_result_with_chunk_byte_length(): script = mock.MagicMock() script.run.return_value = ProcessPageResult(ProcessPageStatus.WIP) script.poll_result.return_value = ProcessPageResult( ProcessPageStatus.SUCCESS, value={}) create_dom_snapshot_loop(script, time() + 1, 2, 3) calls = script.poll_result.call_args_list assert calls == [mock.call(3)]
def test_create_dom_snapshot_loop_chunks(): script = mock.MagicMock() script.run.return_value = ProcessPageResult(ProcessPageStatus.WIP) script.poll_result.side_effect = [ ProcessPageResult(ProcessPageStatus.SUCCESS_CHUNKED, done=False, value='{"a"'), ProcessPageResult(ProcessPageStatus.SUCCESS_CHUNKED, done=True, value=':"b"}'), ] res = create_dom_snapshot_loop(script, time() + 1, 1, 3) assert res == {"a": "b"}
def test_create_dom_snapshot_loop_calls_run_with_args(): script = mock.MagicMock() script.run.return_value = ProcessPageResult(ProcessPageStatus.WIP) script.poll_result.return_value = ProcessPageResult( ProcessPageStatus.SUCCESS, value={} ) create_dom_snapshot_loop( script, time() + 1, 2, 3, dont_fetch_resources=True, skip_resources=[] ) calls = script.run.call_args_list assert calls == [mock.call(dont_fetch_resources=True, skip_resources=[])]
def test_dom_snapshot_dont_fetch_resources(driver): driver.get("https://applitools.github.io/demo/TestPages/SimpleTestPage") script = DomSnapshotScriptGeneric(driver) run_res = script.run(dont_fetch_resources=True) for _ in range(10): poll_res = script.poll_result() if poll_res.status is ProcessPageStatus.WIP: sleep(1) else: break assert run_res == ProcessPageResult(ProcessPageStatus.WIP) assert poll_res.status == ProcessPageStatus.SUCCESS assert poll_res.value["blobs"] == [] assert poll_res.value["resourceUrls"] == [picture_url]
def test_dom_snapshot_default(driver): driver.get("https://applitools.github.io/demo/TestPages/SimpleTestPage") script = DomSnapshotScriptGeneric(driver) run_res = script.run() for _ in range(10): poll_res = script.poll_result() if poll_res.status is ProcessPageStatus.WIP: sleep(1) else: break assert run_res == ProcessPageResult(ProcessPageStatus.WIP) assert poll_res.status == ProcessPageStatus.SUCCESS assert poll_res.value["resourceUrls"] == [] assert len(poll_res.value["blobs"][0]["value"]) == 0 assert "compressed" not in poll_res.value["blobs"][0]
def test_dom_snapshot_serialize_chunks(driver): driver.get("https://applitools.github.io/demo/TestPages/SimpleTestPage") script = DomSnapshotScriptGeneric(driver) run_res = script.run(serialize_resources=True) for _ in range(10): poll_res = script.poll_result(chunk_byte_length=100) if poll_res.status is ProcessPageStatus.WIP: sleep(1) else: break assert run_res == ProcessPageResult(ProcessPageStatus.WIP) assert poll_res.status == ProcessPageStatus.SUCCESS_CHUNKED assert poll_res.done is False assert type(poll_res.value) is Text assert len(poll_res.value) == 100
def test_dom_snapshot_compressed_serialized(driver): driver.get("https://applitools.github.io/demo/TestPages/SimpleTestPage") script = DomSnapshotScriptGeneric(driver) run_res = script.run(compress_resources=True, serialize_resources=True) for _ in range(10): poll_res = script.poll_result() if poll_res.status is ProcessPageStatus.WIP: sleep(1) else: break assert run_res == ProcessPageResult(ProcessPageStatus.WIP) assert poll_res.status == ProcessPageStatus.SUCCESS assert poll_res.value["resourceUrls"] == [] assert poll_res.value["blobs"][0]["compressed"] is True assert len(poll_res.value["blobs"][0]["value"]) == 28900 serialized = poll_res.value["blobs"][0]["value"] compressed = base64.b64decode(serialized) pic = zlib.decompress(compressed) assert len(pic) == 22721