HTML artifacts: render agent-sent HTML/CSS/JS code blocks in an in-app WebView (Android platform WebView, desktop JCEF/KCEF) via a full-screen preview; artifact card with Preview button + code toggle, shown only once the message stops streaming; webview-multiplatform 1.9.40 + KCEF deps, detection + unit tests
This commit is contained in:
1 parent
a1814d016c
commit
7ba5632a03
11 files changed
+479
-3
No files matched your search
@@ -0,0 +1,65 @@
|
||||
package iris.ui
|
||||
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class HtmlArtifactTest {
|
||||
|
||||
@Test
|
||||
fun htmlLanguageTagIsArtifact() {
|
||||
assertTrue(isHtmlArtifact("html", "<p>hi</p>"))
|
||||
assertTrue(isHtmlArtifact("htm", "<p>hi</p>"))
|
||||
assertTrue(isHtmlArtifact("HTML", "<p>hi</p>"))
|
||||
assertTrue(isHtmlArtifact(" html ", "<p>hi</p>"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun otherLanguageTagsAreNotArtifacts() {
|
||||
assertFalse(isHtmlArtifact("css", "<style>x</style>"))
|
||||
assertFalse(isHtmlArtifact("js", "console.log(1)"))
|
||||
assertFalse(isHtmlArtifact("kotlin", "fun main() {}"))
|
||||
// Even a full document inside a non-html fence is not an artifact.
|
||||
assertFalse(isHtmlArtifact("text", "<!DOCTYPE html><html></html>"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun untaggedCompleteDocumentIsArtifact() {
|
||||
assertTrue(isHtmlArtifact(null, "<!DOCTYPE html>\n<html><body>hi</body></html>"))
|
||||
assertTrue(isHtmlArtifact(null, " <html><body>hi</body></html>"))
|
||||
assertTrue(isHtmlArtifact(null, "<HTML><BODY>hi</BODY></HTML>"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun untaggedFragmentIsNotArtifact() {
|
||||
assertFalse(isHtmlArtifact(null, "<div>just a fragment</div>"))
|
||||
assertFalse(isHtmlArtifact(null, "Some prose with <b>bold</b> inside."))
|
||||
assertFalse(isHtmlArtifact(null, ""))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun extractsTitle() {
|
||||
assertEquals(
|
||||
"My Page",
|
||||
htmlTitle("<html><head><title>My Page</title></head><body></body></html>"),
|
||||
)
|
||||
assertEquals(
|
||||
"Spaced",
|
||||
htmlTitle("<title> Spaced </title>"),
|
||||
)
|
||||
// Case-insensitive, attributes allowed.
|
||||
assertEquals(
|
||||
"X",
|
||||
htmlTitle("<TITLE lang=\"en\">X</TITLE>"),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun missingOrEmptyTitleIsNull() {
|
||||
assertNull(htmlTitle("<html><body>no title</body></html>"))
|
||||
assertNull(htmlTitle("<title></title>"))
|
||||
assertNull(htmlTitle("<title> </title>"))
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user