@@ -118,6 +118,31 @@ func TestParseGeminiAppsPreservesOrdinaryResponseAndAnswerText(t *testing.T) {
118118 assert .Equal (t , "ordinary Response: and Answer: text" , results [0 ].Messages [0 ].Content )
119119}
120120
121+ func TestParseGeminiAppsBrStaysInsidePromptBlock (t * testing.T ) {
122+ fixture := strings .Replace (
123+ sanitizedGeminiAppsHTML ,
124+ `<div class="content-cell mdl-cell"><p>first prompt<br></p><p><strong>first</strong> answer & detail</p><script>secret script</script><style>secret style</style><template>secret template</template><noscript>secret noscript</noscript></div>` ,
125+ `<div class="content-cell mdl-cell"><p>line one<br>line two</p><p>answer</p></div>` ,
126+ 1 ,
127+ )
128+ path := filepath .Join (t .TempDir (), "br-inline.html" )
129+ require .NoError (t , os .WriteFile (path , []byte (fixture ), 0o644 ))
130+
131+ provider , ok := NewProvider (AgentGeminiApps , ProviderConfig {})
132+ require .True (t , ok )
133+ exporter := provider .(GeminiAppsExportParser )
134+ var results []ParseResult
135+ _ , err := exporter .ParseGeminiAppsExport (path , func (result ParseResult ) error {
136+ results = append (results , result )
137+ return nil
138+ })
139+ require .NoError (t , err )
140+ require .Len (t , results , 2 )
141+ require .Len (t , results [0 ].Messages , 2 )
142+ assert .Equal (t , "line one\n line two" , results [0 ].Messages [0 ].Content )
143+ assert .Equal (t , "answer" , results [0 ].Messages [1 ].Content )
144+ }
145+
121146func TestParseGeminiAppsTimestampMustBeInHeader (t * testing.T ) {
122147 fixture := strings .Replace (
123148 sanitizedGeminiAppsHTML ,
0 commit comments