docs: issues técnicas para nuevas funcionalidades
Agrega 19 issues técnicas documentando funcionalidades implementadas y pendientes. Issues completadas (movidas a dev/issues/completed/): - 001-conversor-web-markdown.md - 002-accessibility-tree.md - 003-gestion-cookies-perfil.md - 004-gestion-extensiones-chrome.md - 005-eliminar-timeouts-innecesarios.md Issues implementadas: - 006-manejo-tabs-ventanas.md - 016-manejo-iframes.md - 017-actions-api.md - 018-file-uploads.md - 019-expected-conditions-mejoradas.md Issues pendientes (media prioridad): - 007-alert-prompt-confirm-handling.md - 008-screenshot-elementos-especificos.md - 009-pdf-generation.md - 010-device-emulation-completo.md - 011-downloads-handling.md Issues pendientes (baja prioridad / avanzado): - 012-browser-contexts-multi-sesion.md - 013-video-recording.md - 014-network-mocking-avanzado.md - 015-geolocation-permissions.md Incluye también dev/NUEVAS_FUNCIONALIDADES.md con resumen completo. Directorio: dev/
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user