# Issue #012: Browser Contexts (Multi-sesión) **Tipo**: Enhancement **Prioridad**: Baja (Avanzado) **Estado**: Pendiente ## Descripción Implementar Browser Contexts para múltiples sesiones aisladas en una misma instancia de navegador. ## Funcionalidad deseada - Crear múltiples contextos aislados - Cada contexto tiene su propio: - Storage (cookies, localStorage, sessionStorage) - Cache - Permissions - Geolocation - Compartir proceso de navegador (más eficiente que múltiples perfiles) - Cerrar contextos individualmente ## API propuesta ```go type BrowserContext struct { id string browser *Browser pages []*Page } type ContextOptions struct { Cookies []*Cookie Permissions []string Geolocation *Geolocation Timezone string Locale string UserAgent string } func (b *Browser) NewContext(ctx context.Context, opts *ContextOptions) (*BrowserContext, error) func (bc *BrowserContext) NewPage(ctx context.Context) (*Page, error) func (bc *BrowserContext) Close(ctx context.Context) error func (bc *BrowserContext) ClearCookies(ctx context.Context) error ``` ## Uso ```go // Contexto 1 - Usuario A ctx1, _ := b.NewContext(ctx, &browser.ContextOptions{ Cookies: cookiesUserA, }) page1, _ := ctx1.NewPage(ctx) page1.Navigate(ctx, "https://example.com") // Contexto 2 - Usuario B ctx2, _ := b.NewContext(ctx, &browser.ContextOptions{ Cookies: cookiesUserB, }) page2, _ := ctx2.NewPage(ctx) page2.Navigate(ctx, "https://example.com") // Ambos contextos están completamente aislados ``` ## CDP Methods - `Target.createBrowserContext` - `Target.disposeBrowserContext` - `Target.createTarget` con browserContextId ## Ventajas - Más eficiente que múltiples instancias de navegador - Rápido para tests paralelos - Ideal para testing multi-usuario - Menor uso de memoria vs múltiples navegadores ## Referencias - CDP Target.createBrowserContext: https://chromedevtools.github.io/devtools-protocol/tot/Target/#method-createBrowserContext - Playwright contexts: https://playwright.dev/docs/browser-contexts