1package runtimeprofile
2
3import (
4 "path/filepath"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8)
9
10func testCEFProfile(t *testing.T) Profile {
11 t.Helper()
12 root := t.TempDir()
13 return Profile{
14 Mode: ModeProd,
15 Engine: engineCEF,
16 EnginePaths: EnginePaths{
17 RootDir: filepath.Join(root, "state", "engines", "cef"),
18 },
19 Shared: SharedPaths{DataDir: filepath.Join(root, "data")},
20 }
21}
22
23func TestWithBrowserProfileSeparatesCEFStorageAndIPC(t *testing.T) {
24 base := testCEFProfile(t)
25 runtimeBase := "/tmp/dumber-profile-test"
26 profile, err := base.WithBrowserProfile("work", runtimeBase)
27 require.NoError(t, err)
28 require.Equal(t, filepath.Join(base.EnginePaths.RootDir, "profiles", "work", "cef"), profile.CEFUserDataDir())
29 require.Equal(t, filepath.Join(runtimeBase, "dumber", "profiles", "work", browserLaunchSocketName), profile.IPC.BrowserLaunchSocket)
30 require.Equal(t, base.Shared, profile.Shared)
31}
32
33func TestWithEphemeralBrowserProfileCreatesUniqueRoots(t *testing.T) {
34 base := testCEFProfile(t)
35 runtimeBase := "/tmp/dumber-ephemeral-test"
36 first, err := base.WithEphemeralBrowserProfile(runtimeBase)
37 require.NoError(t, err)
38 second, err := base.WithEphemeralBrowserProfile(runtimeBase)
39 require.NoError(t, err)
40 require.NotEqual(t, first.InstanceRoot, second.InstanceRoot)
41 require.Equal(t, filepath.Join(first.InstanceRoot, "cef"), first.CEFUserDataDir())
42}