package browser import "testing" // TestBuildFullPageClip cubre el nucleo puro del modo FullPage: dado el mapa de // Page.getLayoutMetrics, construir el clip que cubre el documento entero. No // requiere Chrome. func TestBuildFullPageClip(t *testing.T) { t.Run("golden: pagina larga via cssContentSize", func(t *testing.T) { metrics := map[string]any{ "cssContentSize": map[string]any{ "x": 0.0, "y": 0.0, "width": 1280.0, "height": 8000.0, }, } clip, ok := buildFullPageClip(metrics) if !ok { t.Fatal("esperaba ok=true para cssContentSize valido") } if clip.Width != 1280 || clip.Height != 8000 { t.Errorf("clip = %+v, esperaba width=1280 height=8000", clip) } if clip.X != 0 || clip.Y != 0 || clip.Scale != 1 { t.Errorf("clip = %+v, esperaba x=0 y=0 scale=1", clip) } }) t.Run("edge: viewport pequeno (pagina corta) sigue produciendo clip valido", func(t *testing.T) { metrics := map[string]any{ "cssContentSize": map[string]any{"width": 320.0, "height": 480.0}, } clip, ok := buildFullPageClip(metrics) if !ok { t.Fatal("esperaba ok=true para pagina corta") } if clip.Width != 320 || clip.Height != 480 { t.Errorf("clip = %+v, esperaba 320x480", clip) } }) t.Run("edge: fallback a contentSize cuando falta cssContentSize", func(t *testing.T) { metrics := map[string]any{ "contentSize": map[string]any{"width": 1024.0, "height": 2048.0}, } clip, ok := buildFullPageClip(metrics) if !ok { t.Fatal("esperaba ok=true via contentSize") } if clip.Width != 1024 || clip.Height != 2048 { t.Errorf("clip = %+v, esperaba 1024x2048", clip) } }) t.Run("error: dimensiones cero -> ok=false (captura solo viewport)", func(t *testing.T) { metrics := map[string]any{ "cssContentSize": map[string]any{"width": 0.0, "height": 0.0}, } if _, ok := buildFullPageClip(metrics); ok { t.Error("esperaba ok=false para dimensiones cero") } }) t.Run("error: pagina vacia (metrics sin tamano) -> ok=false", func(t *testing.T) { if _, ok := buildFullPageClip(map[string]any{}); ok { t.Error("esperaba ok=false para metrics vacio") } }) t.Run("error: width valido pero height cero -> ok=false", func(t *testing.T) { metrics := map[string]any{ "cssContentSize": map[string]any{"width": 800.0, "height": 0.0}, } if _, ok := buildFullPageClip(metrics); ok { t.Error("esperaba ok=false cuando un eje es cero") } }) }