Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35fdea5df5 | ||
|
|
8d44f2e771 | ||
|
|
ef6dc1f6a8 | ||
|
|
352762b9d2 | ||
|
|
58cc93bb2f | ||
|
|
5eaa94818f | ||
|
|
66a81ad9a3 | ||
|
|
39e1bf61d3 | ||
|
|
b5a1f70d1d |
No files matched your search
@@ -343,14 +343,64 @@ compartido) para que el contenedor vea los archivos de verdad.
|
||||
completada sin intervención manual — hoy solo se confirmó que el
|
||||
endpoint responde `200` a un `POST` sintético y que la redirección
|
||||
al banco ocurre, no el ciclo completo con notificación real.
|
||||
7. **Login/registro de cliente real** (Google OAuth y con contraseña) —
|
||||
nunca ejercitado con un navegador real en ninguna sesión.
|
||||
8. **Bug conocido de Firefox Android** (ver memoria de proyecto,
|
||||
`known-bug-firefox-android-layout`): el layout se corta/desplaza
|
||||
solo en Firefox Android — Playwright puede emular Android/Chrome
|
||||
pero no Firefox; si se necesita reproducir esto específicamente hace
|
||||
falta `playwright-firefox` o un dispositivo real.
|
||||
9. **Otros viewports** (tablet, desktop grande) para el banner y el
|
||||
buscador — solo se probaron mobile (iPhone 13) y desktop 1280px.
|
||||
10. **Flujo de wishlist/favoritos y el diálogo de cuenta** — no
|
||||
ejercitados todavía con navegador real.
|
||||
Ampliado 2026-09-10 con el resto de la superficie real del storefront
|
||||
(4 páginas + `components/{account,cart,catalog,checkout,home,layout,
|
||||
product,search,wishlist}`), agrupado por riesgo:
|
||||
|
||||
**Checkout / pagos**
|
||||
|
||||
7. **Pago cancelado o rechazado en el banco PSE:** confirmar que la
|
||||
orden no queda en un estado ambiguo ("colgada" en
|
||||
`pending_authorization` para siempre) cuando el comprador cancela o
|
||||
el banco rechaza — hoy solo se probó el camino feliz hasta la
|
||||
redirección.
|
||||
8. **Persona jurídica + NIT** en el formulario de PSE — solo se probó
|
||||
persona natural con cédula.
|
||||
9. **`/checkout` con carrito vacío** (acceso directo por URL, sin pasar
|
||||
por un producto primero).
|
||||
10. **Fallback "Confirmar por WhatsApp"** (visible cuando falla la
|
||||
lista de bancos o como alternativa siempre disponible): que el link
|
||||
arme el mensaje correcto con los datos del pedido.
|
||||
|
||||
**Catálogo y búsqueda**
|
||||
|
||||
11. **Filtros de `/catalog`** (categoría/colección/marca/precio — las
|
||||
facetas de Meilisearch, ver ADR 0006) con navegador real: que
|
||||
aplicar/combinar filtros actualice los resultados y la URL.
|
||||
12. **Búsqueda sin resultados** — confirmar que muestra un mensaje
|
||||
claro en vez de quedar vacío sin explicación.
|
||||
|
||||
**Producto**
|
||||
|
||||
13. **Selección de variantes** (cuando un producto tiene más de una) y
|
||||
que el precio/disponibilidad mostrado cambie según la variante
|
||||
elegida.
|
||||
14. **Slug de producto inválido** → debe caer en `not-found.tsx`
|
||||
(`app/not-found.tsx`), no en un error sin manejar.
|
||||
15. **Zoom interactivo del producto** (hover + modal click-to-zoom,
|
||||
`product-gallery.tsx`) — re-verificar con navegador real, la última
|
||||
vez que se probó fue antes de esta tanda de cambios al storefront.
|
||||
|
||||
**Cuenta y wishlist**
|
||||
|
||||
16. **Login/registro de cliente real** (Google OAuth de punta a punta
|
||||
incluyendo `/auth/google/callback`, y con contraseña) — nunca
|
||||
ejercitado con un navegador real en ninguna sesión.
|
||||
17. **Wishlist/favoritos** (`wishlist-drawer.tsx`): agregar/quitar y
|
||||
confirmar que persiste entre recargas (guardado en `localStorage`,
|
||||
por-viewer — no hay forma de verificarlo por API).
|
||||
|
||||
**Transversal**
|
||||
|
||||
18. **Bug conocido de Firefox Android** (ver memoria de proyecto,
|
||||
`known-bug-firefox-android-layout`): el layout se corta/desplaza
|
||||
solo en Firefox Android — Playwright puede emular Android/Chrome
|
||||
pero no Firefox; si se necesita reproducir esto específicamente hace
|
||||
falta `playwright-firefox` o un dispositivo real.
|
||||
19. **Otros viewports** (tablet, desktop grande) para el banner y el
|
||||
buscador — solo se probaron mobile (iPhone 13) y desktop 1280px.
|
||||
20. **Página 404** (`app/not-found.tsx`) — nunca visitada con navegador
|
||||
real.
|
||||
21. **Accesibilidad básica**: navegación completa por teclado (tab
|
||||
order, foco visible) en el checkout y el buscador — Playwright
|
||||
puede simular esto (`page.keyboard`), no probado todavía.
|
||||
@@ -25,7 +25,7 @@ spec:
|
||||
runAsNonRoot: false
|
||||
containers:
|
||||
- name: app
|
||||
image: gitea.cruzcloud.net/devops/docs-portal:v1.0.237
|
||||
image: gitea.cruzcloud.net/devops/docs-portal:v1.0.242
|
||||
# El base saca TODAS las capabilities. Probado en vivo y
|
||||
# revertido: con drop: ALL (aunque se agregue NET_BIND_SERVICE
|
||||
# de vuelta) el propio entrypoint de nginx:1.27-alpine falla al
|
||||
|
||||
@@ -65,7 +65,7 @@ spec:
|
||||
memory: 64Mi
|
||||
|
||||
- name: migrations
|
||||
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.234
|
||||
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.239
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- node
|
||||
@@ -86,7 +86,7 @@ spec:
|
||||
|
||||
containers:
|
||||
- name: app
|
||||
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.234
|
||||
image: gitea.cruzcloud.net/devops/ecommerce-medusa:v1.0.239
|
||||
imagePullPolicy: IfNotPresent
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
|
||||
@@ -87,6 +87,18 @@ export function PredictiveSearch() {
|
||||
Buscando…
|
||||
</div>
|
||||
)}
|
||||
{/* Encontrado probando en vivo con navegador real: sin este bloque,
|
||||
una busqueda de 2+ caracteres sin coincidencias no mostraba nada
|
||||
(ni "buscando" ni un mensaje) -- el usuario se quedaba sin ningun
|
||||
feedback de que su busqueda de verdad corrio. Se ofrece igual el
|
||||
boton de buscar en todo el catalogo porque esa busqueda completa
|
||||
puede usar criterios mas amplios que el autocompletado. */}
|
||||
{!loading && normalized.length >= 2 && matches.length === 0 && (
|
||||
<div className="absolute left-0 right-0 top-[calc(100%+10px)] z-50 rounded-2xl border border-slate-200 bg-white p-2 text-center shadow-2xl">
|
||||
<p className="p-3 text-sm text-slate-500">No encontramos resultados para “{query.trim()}”.</p>
|
||||
<button type="submit" className="w-full rounded-xl bg-ari-marino px-4 py-3 text-sm font-black text-white hover:brightness-110">Buscar “{query.trim()}” en todo el catálogo</button>
|
||||
</div>
|
||||
)}
|
||||
{matches.length > 0 && (
|
||||
<div className="absolute left-0 right-0 top-[calc(100%+10px)] z-50 overflow-hidden rounded-2xl border border-slate-200 bg-white p-2 shadow-2xl">
|
||||
{matches.map((product) => (
|
||||
|
||||
@@ -25,7 +25,7 @@ spec:
|
||||
runAsUser: 1001
|
||||
containers:
|
||||
- name: app
|
||||
image: gitea.cruzcloud.net/devops/ecommerce-frontend:v1.0.238
|
||||
image: gitea.cruzcloud.net/devops/ecommerce-frontend:v1.0.240
|
||||
env:
|
||||
- name: HEADLESS_PROVIDER
|
||||
value: medusa
|
||||
|
||||
Reference in new issue
Block a user