fix(support-chat): support legacy mobile browsers
This commit is contained in:
@@ -116,6 +116,7 @@ func TestSupportChatUsesRealtimeUIWithoutMessagePolling(t *testing.T) {
|
||||
"你可以继续留言",
|
||||
"等待期间可以继续留言",
|
||||
`String(event.type || "").startsWith("conversation.")`,
|
||||
`image.addEventListener("error"`,
|
||||
} {
|
||||
if !strings.Contains(source, marker) {
|
||||
t.Fatalf("support chat queue flow does not contain %q", marker)
|
||||
@@ -129,6 +130,54 @@ func TestSupportChatUsesRealtimeUIWithoutMessagePolling(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSupportChatKeepsOlderMobileWebViewsCompatible(t *testing.T) {
|
||||
script, err := assets.ReadFile("assets/chat.js")
|
||||
if err != nil {
|
||||
t.Fatalf("read support chat script: %v", err)
|
||||
}
|
||||
source := string(script)
|
||||
for _, forbidden := range []string{
|
||||
"?.",
|
||||
"??",
|
||||
"||=",
|
||||
".at(",
|
||||
".flat(",
|
||||
".replaceAll(",
|
||||
".replaceChildren(",
|
||||
} {
|
||||
if strings.Contains(source, forbidden) {
|
||||
t.Fatalf("support chat must not require newer mobile JavaScript API or syntax %q", forbidden)
|
||||
}
|
||||
}
|
||||
for _, marker := range []string{
|
||||
"function lastItem",
|
||||
"function replaceChildrenCompat",
|
||||
`window.crypto && window.crypto.randomUUID`,
|
||||
`Array.from(map.values())`,
|
||||
} {
|
||||
if !strings.Contains(source, marker) {
|
||||
t.Fatalf("support chat compatibility flow does not contain %q", marker)
|
||||
}
|
||||
}
|
||||
|
||||
stylesheet, err := assets.ReadFile("assets/chat.css")
|
||||
if err != nil {
|
||||
t.Fatalf("read support chat stylesheet: %v", err)
|
||||
}
|
||||
css := string(stylesheet)
|
||||
for _, fallback := range []string{
|
||||
`background: linear-gradient(145deg, #3c80fb, #4c66ea);`,
|
||||
`background: linear-gradient(135deg, #397ffb, #5368ed);`,
|
||||
`background: #eaf2ff;`,
|
||||
`top: 0; right: 0; bottom: 0; left: 0; inset: 0;`,
|
||||
`width: 100%; max-width: 360px; width: min(100%, 360px);`,
|
||||
} {
|
||||
if !strings.Contains(css, fallback) {
|
||||
t.Fatalf("support chat stylesheet does not contain older mobile fallback %q", fallback)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSupportChatStagesUploadsUntilExplicitSend(t *testing.T) {
|
||||
script, err := assets.ReadFile("assets/chat.js")
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user