Files
kjol/go/webbundler/hmr_client_test.go

33 lines
1.0 KiB
Go

//go:build dev
package webbundler
import (
"strings"
"testing"
esbuild "github.com/evanw/esbuild/pkg/api"
)
// hmrClientJS is a hand-written JS blob served to the browser; a syntax slip in it
// silently breaks every hot update, and the headless-browser smoke test is skipped
// off Linux/macOS. Parse it as an ES module here so a bad edit fails at test time,
// and assert the recompile-indicator hooks are wired.
func TestHMRClientJSValid(t *testing.T) {
res := esbuild.Transform(hmrClientJS, esbuild.TransformOptions{
Loader: esbuild.LoaderJS,
Format: esbuild.FormatESModule,
LogLevel: esbuild.LogLevelSilent,
})
if len(res.Errors) > 0 {
msgs := esbuild.FormatMessages(res.Errors, esbuild.FormatMessagesOptions{})
t.Fatalf("HMR client JS failed to parse:\n%s", strings.Join(msgs, "\n"))
}
for _, want := range []string{"createHotContext", "hmrBusyStart", "hmrBusyEnd", "recompiling",
"showErrorOverlay", "clearErrorOverlay", "errorEpoch"} {
if !strings.Contains(hmrClientJS, want) {
t.Errorf("HMR client missing %q", want)
}
}
}