| ... | @@ -189,6 +189,55 @@ describe("PreviewManager", () => { | ... | @@ -189,6 +189,55 @@ describe("PreviewManager", () => { |
| 189 | ), | 189 | ), |
| 190 | ); | 190 | ); |
| 191 | | 191 | |
| | 192 | effectIt.effect("keeps element picking active during subframe navigation", () => |
| | 193 | withManager((manager) => |
| | 194 | Effect.gen(function* () { |
| | 195 | const listeners = new Map<string, (...args: unknown[]) => void>(); |
| | 196 | fromId.mockReturnValue({ |
| | 197 | id: 42, |
| | 198 | isDestroyed: () => false, |
| | 199 | getType: () => "webview", |
| | 200 | getURL: () => "https://example.com", |
| | 201 | getTitle: () => "Example", |
| | 202 | isLoading: () => false, |
| | 203 | isFocused: () => true, |
| | 204 | getZoomFactor: () => 1, |
| | 205 | setZoomFactor: vi.fn(), |
| | 206 | on: vi.fn((event: string, listener: (...args: unknown[]) => void) => { |
| | 207 | listeners.set(event, listener); |
| | 208 | }), |
| | 209 | once: vi.fn((event: string, listener: (...args: unknown[]) => void) => { |
| | 210 | listeners.set(event, listener); |
| | 211 | }), |
| | 212 | off: vi.fn(), |
| | 213 | ipc: { on: vi.fn(), off: vi.fn(), removeListener: vi.fn() }, |
| | 214 | send: webviewSend, |
| | 215 | navigationHistory: { canGoBack: () => false, canGoForward: () => false }, |
| | 216 | setWindowOpenHandler: vi.fn(), |
| | 217 | debugger: { |
| | 218 | isAttached: () => false, |
| | 219 | attach: vi.fn(), |
| | 220 | sendCommand: vi.fn(async () => undefined), |
| | 221 | on: vi.fn(), |
| | 222 | off: vi.fn(), |
| | 223 | }, |
| | 224 | } as never); |
| | 225 | |
| | 226 | yield* manager.createTab("tab_1"); |
| | 227 | yield* manager.registerWebview("tab_1", 42); |
| | 228 | const pick = yield* manager.pickElement("tab_1").pipe(Effect.forkChild); |
| | 229 | yield* Effect.yieldNow; |
| | 230 | |
| | 231 | listeners.get("did-start-navigation")?.({}, "about:blank", false, false); |
| | 232 | yield* Effect.yieldNow; |
| | 233 | expect(pick.pollUnsafe()).toBeUndefined(); |
| | 234 | |
| | 235 | listeners.get("did-start-navigation")?.({}, "https://example.com/next", false, true); |
| | 236 | expect(yield* Fiber.join(pick)).toBeNull(); |
| | 237 | }), |
| | 238 | ), |
| | 239 | ); |
| | 240 | |
| 192 | effectIt.effect("reveals only files inside the configured browser artifact directory", () => | 241 | effectIt.effect("reveals only files inside the configured browser artifact directory", () => |
| 193 | withManager((manager) => | 242 | withManager((manager) => |
| 194 | Effect.gen(function* () { | 243 | Effect.gen(function* () { |