@@ -69,15 +69,7 @@ function formatArgs(consoleData: ConsoleMessageData): string {
6969
7070 return result . join ( '\n' ) ;
7171}
72- interface IssueDetailsWithResources {
73- violatingNodeId ?: number ;
74- nodeId ?: number ;
75- documentNodeId ?: number ;
76- request ?: {
77- requestId ?: string ;
78- url : string ;
79- } ;
80- }
72+
8173export function formatIssue (
8274 issue : AggregatedIssue ,
8375 description ?: string ,
@@ -100,64 +92,52 @@ export function formatIssue(
10092 }
10193 }
10294
103- const issues : Array < {
104- details ?: ( ) => IssueDetailsWithResources ;
105- getDetails ?: ( ) => IssueDetailsWithResources ;
106- } > = [
107- ...issue . getCorsIssues ( ) ,
108- ...issue . getMixedContentIssues ( ) ,
109- ...issue . getGenericIssues ( ) ,
110- ...issue . getLowContrastIssues ( ) ,
111- ...issue . getElementAccessibilityIssues ( ) ,
112- ...issue . getQuirksModeIssues ( ) ,
113- ] ;
95+ const issues = issue . getAllIssues ( ) ;
11496 const affectedResources : Array < {
11597 uid ?: string ;
11698 data ?: object ;
11799 request ?: string | number ;
118100 } > = [ ] ;
119101 for ( const singleIssue of issues ) {
120- if ( ! singleIssue . details && ! singleIssue . getDetails ) continue ;
121-
122- let details =
123- singleIssue . details ?.( ) as unknown as IssueDetailsWithResources ;
124- if ( ! details )
125- details =
126- singleIssue . getDetails ?.( ) as unknown as IssueDetailsWithResources ;
102+ const details = singleIssue . details ( ) ;
127103 if ( ! details ) continue ;
128104
105+ // We send the remaining details as untyped JSON because the DevTools
106+ // frontend code is currently not re-usable.
107+ // eslint-disable-next-line
108+ const data = structuredClone ( details ) as any ;
109+
129110 let uid ;
130111 let request : number | string | undefined ;
131- if ( details . violatingNodeId && context ) {
112+ if ( 'violatingNodeId' in details && details . violatingNodeId && context ) {
132113 uid = context . resolveCdpElementId ( details . violatingNodeId ) ;
114+ delete data . violatingNodeId ;
133115 }
134- if ( details . nodeId && context ) {
116+ if ( 'nodeId' in details && details . nodeId && context ) {
135117 uid = context . resolveCdpElementId ( details . nodeId ) ;
118+ delete data . nodeId ;
136119 }
137- if ( details . documentNodeId && context ) {
120+ if ( 'documentNodeId' in details && details . documentNodeId && context ) {
138121 uid = context . resolveCdpElementId ( details . documentNodeId ) ;
122+ delete data . documentNodeId ;
139123 }
140124
141- if ( details . request ) {
125+ if ( 'request' in details && details . request ) {
142126 request = details . request . url ;
143127 if ( details . request . requestId && context ) {
144128 const resolvedId = context . resolveCdpRequestId (
145129 details . request . requestId ,
146130 ) ;
147131 if ( resolvedId ) {
148132 request = resolvedId ;
133+ delete data . request . requestId ;
149134 }
150135 }
151136 }
152137
153- // eslint-disable-next-line
154- const data = structuredClone ( details ) as any ;
155- delete data . violatingNodeId ;
156- delete data . nodeId ;
157- delete data . documentNodeId ;
138+ // These fields has no use for the MCP client (redundant or irrelevant).
158139 delete data . errorType ;
159140 delete data . frameId ;
160- delete data . request ;
161141 affectedResources . push ( {
162142 uid,
163143 data : data ,
@@ -180,7 +160,6 @@ export function formatIssue(
180160 return details . join ( ' ' ) ;
181161 } ) ,
182162 ) ;
183- if ( result . length === 0 )
184- return 'No details provided for the issue ' + issue . code ( ) ;
163+ if ( result . length === 0 ) return 'No affected resources found' ;
185164 return result . join ( '\n' ) ;
186165}
0 commit comments