fix: improve Chinese character display in HTML reports

- Fix JSON serialization to preserve Chinese characters instead of Unicode escaping
- Use SetEscapeHTML(false) in toJSON template function
- Apply safeHTML to prevent HTML entity encoding of Chinese text
- Now displays {"text":"连了又连"} instead of {"text":"连了又连"}
This commit is contained in:
lilong.129
2025-06-08 09:29:41 +08:00
parent 4053cc9985
commit 5f7698c6b4
2 changed files with 15 additions and 8 deletions
+1 -1
View File
@@ -1 +1 @@
v5.0.0-beta-2506080923 v5.0.0-beta-2506080929
+14 -7
View File
@@ -237,11 +237,18 @@ func (g *HTMLReportGenerator) GenerateReport(outputFile string) error {
"encodeImageBase64": g.encodeImageToBase64, "encodeImageBase64": g.encodeImageToBase64,
"getStepLogs": g.getStepLogsForTemplate, "getStepLogs": g.getStepLogsForTemplate,
"safeHTML": func(s string) template.HTML { return template.HTML(s) }, "safeHTML": func(s string) template.HTML { return template.HTML(s) },
"toJSON": func(v interface{}) string { b, _ := json.Marshal(v); return string(b) }, "toJSON": func(v interface{}) string {
"mul": func(a, b float64) float64 { return a * b }, var buf strings.Builder
"add": func(a, b int) int { return a + b }, encoder := json.NewEncoder(&buf)
"base": filepath.Base, encoder.SetEscapeHTML(false)
"index": func(m map[string]any, key string) interface{} { return m[key] }, _ = encoder.Encode(v)
result := buf.String()
return strings.TrimSpace(result)
},
"mul": func(a, b float64) float64 { return a * b },
"add": func(a, b int) int { return a + b },
"base": filepath.Base,
"index": func(m map[string]any, key string) interface{} { return m[key] },
} }
// Parse template // Parse template
@@ -1033,7 +1040,7 @@ const htmlTemplate = `<!DOCTYPE html>
{{end}} {{end}}
{{if $subAction.Arguments}} {{if $subAction.Arguments}}
<div class="arguments">Arguments: {{toJSON $subAction.Arguments}}</div> <div class="arguments">Arguments: {{safeHTML (toJSON $subAction.Arguments)}}</div>
{{end}} {{end}}
{{if $subAction.Requests}} {{if $subAction.Requests}}
@@ -1143,7 +1150,7 @@ const htmlTemplate = `<!DOCTYPE html>
</div> </div>
<div class="log-message">{{$logEntry.Message}}</div> <div class="log-message">{{$logEntry.Message}}</div>
{{if $logEntry.Data}} {{if $logEntry.Data}}
<div class="log-data">{{toJSON $logEntry.Data}}</div> <div class="log-data">{{safeHTML (toJSON $logEntry.Data)}}</div>
{{end}} {{end}}
</div> </div>
{{end}} {{end}}