import json import webview from .util import run_test test_values = [ ('int', 1), ('string', 'test'), ('null_value', None), ('object', {'key1': 'value', 'key2': 420}), ('array', [1, 2, 3]), ('mixed', {'key1': 'value', 'key2': [1, 2, {'id': 2}], 'nullValue': None}), ('boolean', True), ] test_value_string = '\n'.join([f'var {name} = {json.dumps(value)}' for name, value in test_values]) HTML = f"""
1

THIS IS ONLY A TEST

3
""" def test_basic_serialization(): window = webview.create_window('Basic serialization test', html=HTML) run_test(webview, window, serialization) def test_circular_serialization(): window = webview.create_window('Circular reference test', html=HTML) run_test(webview, window, circular_reference) def test_dom_serialization(): window = webview.create_window('DOM serialization test', html=HTML) run_test(webview, window, dom_serialization) def serialization(window): for name, expected_value in test_values: result = window.evaluate_js(name) assert result == expected_value def circular_reference(window): result = window.evaluate_js('circular') assert result == {'key': 'test', 'circular': '[Circular Reference]'} result = window.evaluate_js('nonCircular') assert result == [{'id': 1}, {'id': 1}] def dom_serialization(window): result = window.evaluate_js('nodes') assert len(result) == 3 assert result[0]['innerText'] == '1' assert result[1]['innerText'].strip() == 'THIS IS ONLY A TEST' assert result[2]['innerText'] == '3'