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,84 @@
|
||||
# Issue #011: Downloads Handling
|
||||
|
||||
**Tipo**: Enhancement
|
||||
**Prioridad**: Media
|
||||
**Estado**: Pendiente
|
||||
|
||||
## Descripción
|
||||
|
||||
Implementar sistema para detectar, gestionar y esperar downloads de archivos.
|
||||
|
||||
## Funcionalidad deseada
|
||||
|
||||
- Detectar cuando inicia un download
|
||||
- Esperar a que download complete
|
||||
- Obtener path del archivo descargado
|
||||
- Configurar directorio de descargas
|
||||
- Cancelar downloads en progreso
|
||||
- Obtener progreso de download
|
||||
- Manejar múltiples downloads simultáneos
|
||||
|
||||
## API propuesta
|
||||
|
||||
```go
|
||||
type Download struct {
|
||||
ID string
|
||||
URL string
|
||||
Filename string
|
||||
Path string
|
||||
MimeType string
|
||||
Size int64
|
||||
State DownloadState // "inProgress" | "completed" | "cancelled"
|
||||
}
|
||||
|
||||
type DownloadState string
|
||||
const (
|
||||
DownloadStateInProgress DownloadState = "inProgress"
|
||||
DownloadStateCompleted DownloadState = "completed"
|
||||
DownloadStateCancelled DownloadState = "cancelled"
|
||||
)
|
||||
|
||||
type DownloadOptions struct {
|
||||
DownloadPath string // Directorio donde guardar
|
||||
Behavior string // "allow" | "deny" | "allowAndName"
|
||||
}
|
||||
|
||||
func (b *Browser) SetDownloadBehavior(ctx context.Context, opts *DownloadOptions) error
|
||||
func (b *Browser) WaitForDownload(ctx context.Context, action func()) (*Download, error)
|
||||
func (b *Browser) OnDownload(handler func(*Download)) error
|
||||
func (b *Browser) GetDownloads(ctx context.Context) ([]*Download, error)
|
||||
func (b *Browser) CancelDownload(ctx context.Context, downloadID string) error
|
||||
```
|
||||
|
||||
## Uso
|
||||
|
||||
```go
|
||||
// Configurar directorio de descargas
|
||||
b.SetDownloadBehavior(ctx, &browser.DownloadOptions{
|
||||
DownloadPath: "/tmp/downloads",
|
||||
Behavior: "allow",
|
||||
})
|
||||
|
||||
// Esperar download
|
||||
download, _ := b.WaitForDownload(ctx, func() {
|
||||
b.Click(ctx, "#download-button")
|
||||
})
|
||||
|
||||
log.Printf("Downloaded: %s to %s", download.Filename, download.Path)
|
||||
|
||||
// Handler de downloads
|
||||
b.OnDownload(func(d *browser.Download) {
|
||||
log.Printf("Download started: %s", d.Filename)
|
||||
})
|
||||
```
|
||||
|
||||
## CDP Methods
|
||||
|
||||
- `Browser.setDownloadBehavior`
|
||||
- `Page.downloadWillBegin` (evento)
|
||||
- `Page.downloadProgress` (evento)
|
||||
|
||||
## Referencias
|
||||
|
||||
- CDP Browser.setDownloadBehavior: https://chromedevtools.github.io/devtools-protocol/tot/Browser/#method-setDownloadBehavior
|
||||
- Playwright downloads: https://playwright.dev/docs/downloads
|
||||
Reference in New Issue
Block a user