feat: refresh and edit browser instances

This commit is contained in:
QiuSW
2026-07-25 16:36:26 +08:00
parent 1a453cf8f0
commit be9292c376
7 changed files with 946 additions and 51 deletions
+35
View File
@@ -92,6 +92,41 @@ func TestMergeInstanceConfigPreservesExistingLaunchOptions(t *testing.T) {
}
}
func TestInstanceStatusRefresherChecksOnlyConfiguredRows(t *testing.T) {
remote := &fakeRemoteDebugInspector{endpoint: browser.RemoteDebugEndpoint{Port: 9777}}
refresher := instanceStatusRefresher{
managedProfiles: fakeManagedProfileInspector{use: browser.ProfileUse{Occupied: true, PID: 5432, Source: "chub_registry"}},
externalProfiles: fakeExternalProfileInspector{},
remoteDebug: remote,
}
rows := []ui.InstanceRow{{ID: "managed", Browser: "Chrome", UserDataDir: `C:\profiles\managed`, RemoteDebugPort: 9777}}
results, err := refresher.Refresh(context.Background(), rows)
if err != nil || len(results) != 1 {
t.Fatalf("Refresh() = %#v, %v", results, err)
}
got := results[0]
if got.ID != "managed" || got.Status != "运行中" || got.PID != 5432 || got.RemoteDebugPort != 9777 || got.OccupancySource != "chub_registry" {
t.Fatalf("refresh result = %#v", got)
}
}
func TestInstanceStatusRefresherAssociatesExternalWithoutLifecycleControl(t *testing.T) {
remote := &fakeRemoteDebugInspector{endpoint: browser.RemoteDebugEndpoint{Port: 9668}}
refresher := instanceStatusRefresher{
managedProfiles: fakeManagedProfileInspector{},
externalProfiles: fakeExternalProfileInspector{use: browser.ProfileUse{Occupied: true, PID: 16108, Source: browser.ProfileSourceMessageWindow}},
remoteDebug: remote,
}
results, err := refresher.Refresh(context.Background(), []ui.InstanceRow{{ID: "external", Browser: "Edge", UserDataDir: `C:\profiles\external`}})
if err != nil || len(results) != 1 {
t.Fatalf("Refresh() = %#v, %v", results, err)
}
got := results[0]
if got.Status != "外部已关联" || got.PID != 16108 || got.RemoteDebugPort != 9668 || got.OccupancySource != browser.ProfileSourceMessageWindow {
t.Fatalf("external refresh result = %#v", got)
}
}
type fakeExecutableResolver struct {
path string
kind domain.BrowserKind