1
- // Copyright (c) .NET Foundation. All rights reserved.
1
+ // Copyright (c) .NET Foundation. All rights reserved.
2
2
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3
3
4
4
using System ;
9
9
10
10
namespace Microsoft . AspNetCore . BrowserTesting
11
11
{
12
- public class PageInformation
12
+ public class PageInformation : IDisposable
13
13
{
14
14
private readonly Page _page ;
15
15
private readonly ILogger < PageInformation > _logger ;
@@ -20,17 +20,25 @@ public class PageInformation
20
20
21
21
public List < string > PageErrors { get ; } = new ( ) ;
22
22
23
+ public List < IWebSocket > WebSockets { get ; set ; } = new ( ) ;
24
+
23
25
public PageInformation ( Page page , ILogger < PageInformation > logger )
24
26
{
25
27
page . Console += RecordConsoleMessage ;
26
28
page . PageError += RecordPageError ;
27
29
page . RequestFailed += RecordFailedRequest ;
30
+ page . WebSocket += CaptureWebSocket ;
28
31
_page = page ;
29
32
_logger = logger ;
30
33
31
34
_ = LogPageVideoPath ( ) ;
32
35
}
33
36
37
+ private void CaptureWebSocket ( object sender , WebSocketEventArgs e )
38
+ {
39
+ WebSockets . Add ( e . WebSocket ) ;
40
+ }
41
+
34
42
private async Task LogPageVideoPath ( )
35
43
{
36
44
try
@@ -48,27 +56,58 @@ private async Task LogPageVideoPath()
48
56
}
49
57
}
50
58
59
+ public void Dispose ( )
60
+ {
61
+ _page . Console -= RecordConsoleMessage ;
62
+ _page . PageError -= RecordPageError ;
63
+ _page . RequestFailed -= RecordFailedRequest ;
64
+ }
65
+
51
66
private void RecordFailedRequest ( object sender , RequestFailedEventArgs e )
52
67
{
53
- _logger . LogError ( e . FailureText ) ;
68
+ try
69
+ {
70
+ _logger . LogError ( e . FailureText ) ;
71
+ }
72
+ catch
73
+ {
74
+ }
54
75
FailedRequests . Add ( e . FailureText ) ;
55
76
}
56
77
57
78
private void RecordPageError ( object sender , PageErrorEventArgs e )
58
79
{
59
80
// There needs to be a bit of experimentation with this, but message should be a good start.
60
- _logger . LogError ( e . Message ) ;
81
+ try
82
+ {
83
+ _logger . LogError ( e . Message ) ;
84
+ }
85
+ catch
86
+ {
87
+ }
88
+
61
89
PageErrors . Add ( e . Message ) ;
62
90
}
63
91
64
92
private void RecordConsoleMessage ( object sender , ConsoleEventArgs e )
65
93
{
66
94
var message = e . Message ;
95
+ var messageText = message . Text . Replace ( Environment . NewLine , $ "{ Environment . NewLine } ") ;
67
96
var location = message . Location ;
68
97
69
- var logMessage = $ "[{ _page . Url } ]{ Environment . NewLine } { message . Text } { Environment . NewLine } ({ location . URL } :{ location . LineNumber } :{ location . ColumnNumber } )";
70
- _logger . Log ( MapLogLevel ( message . Type ) , logMessage ) ;
71
- BrowserConsoleLogs . Add ( new LogEntry ( message . Text . Replace ( Environment . NewLine , $ "{ Environment . NewLine } ") , message . Type ) ) ;
98
+ var logMessage = $ "[{ _page . Url } ]{ Environment . NewLine } { messageText } { Environment . NewLine } ({ location . URL } :{ location . LineNumber } :{ location . ColumnNumber } )";
99
+
100
+ try
101
+ {
102
+ _logger . Log ( MapLogLevel ( message . Type ) , logMessage ) ;
103
+ }
104
+ catch
105
+ {
106
+
107
+ throw ;
108
+ }
109
+
110
+ BrowserConsoleLogs . Add ( new LogEntry ( messageText , message . Type ) ) ;
72
111
73
112
LogLevel MapLogLevel ( string messageType ) => messageType switch
74
113
{
0 commit comments