1def assert_base_entry(entry, 2 level=None, 3 text=None, 4 time_start=None, 5 time_end=None, 6 stacktrace=None): 7 assert "level" in entry 8 assert isinstance(entry["level"], str) 9 if level is not None: 10 assert entry["level"] == level 11 12 assert "text" in entry 13 assert isinstance(entry["text"], str) 14 if text is not None: 15 assert entry["text"] == text 16 17 assert "timestamp" in entry 18 assert isinstance(entry["timestamp"], int) 19 if time_start is not None: 20 assert entry["timestamp"] >= time_start 21 if time_end is not None: 22 assert entry["timestamp"] <= time_end 23 24 if stacktrace is not None: 25 assert "stackTrace" in entry 26 assert isinstance(entry["stackTrace"], object) 27 assert "callFrames" in entry["stackTrace"] 28 29 call_frames = entry["stackTrace"]["callFrames"] 30 assert isinstance(call_frames, list) 31 assert len(call_frames) == len(stacktrace) 32 for index in range(0, len(call_frames)): 33 assert call_frames[index] == stacktrace[index] 34 35 36def assert_console_entry(entry, 37 method=None, 38 level=None, 39 text=None, 40 args=None, 41 time_start=None, 42 time_end=None, 43 realm=None, 44 stacktrace=None): 45 assert_base_entry(entry, level, text, time_start, time_end, stacktrace) 46 47 assert "type" in entry 48 assert isinstance(entry["type"], str) 49 assert entry["type"] == "console" 50 51 assert "method" in entry 52 assert isinstance(entry["method"], str) 53 if method is not None: 54 assert entry["method"] == method 55 56 assert "args" in entry 57 assert isinstance(entry["args"], list) 58 if args is not None: 59 assert entry["args"] == args 60 61 if realm is not None: 62 assert "realm" in entry 63 assert isinstance(entry["realm"], str) 64 65 66def assert_javascript_entry(entry, 67 level=None, 68 text=None, 69 time_start=None, 70 time_end=None, 71 stacktrace=None): 72 assert_base_entry(entry, level, text, time_start, time_end, stacktrace) 73 74 assert "type" in entry 75 assert isinstance(entry["type"], str) 76 assert entry["type"] == "javascript" 77 78 79def create_console_api_message(current_session, inline, text): 80 current_session.execute_script(f"console.log('{text}')") 81 return text 82 83 84def create_javascript_error(current_session, inline, error_message="foo"): 85 return current_session.execute_script(f""" 86 const script = document.createElement("script"); 87 script.append(document.createTextNode(`(() => {{throw new Error('{error_message}')}})()`)); 88 document.body.append(script); 89 const err = new Error('{error_message}'); return err.toString() 90 """) 91 92 93def create_log(current_session, inline, log_type, text="foo"): 94 if log_type == "console_api_log": 95 return create_console_api_message(current_session, inline, text) 96 if log_type == "javascript_error": 97 return create_javascript_error(current_session, inline, text) 98