From 097bcc1c5b2d486a2d90fa9b99abd80b9266a71a Mon Sep 17 00:00:00 2001 From: devops Date: Mon, 27 Jul 2026 01:53:41 +0000 Subject: [PATCH] Update .gitea/workflows/build.yaml --- .gitea/workflows/build.yaml | 100 +++++++++++++++++++++++------------- 1 file changed, 65 insertions(+), 35 deletions(-) diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 2b51de1..b48a783 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -99,56 +99,86 @@ jobs: echo "Contexto listo:" du -sh "${APP_DIR}" - # Diagnóstico temprano para el hotfix de navegación. - # No modifica el frontend, pero evita publicar silenciosamente un menú - # que existe y no está conectado al Header/Layout real. - - name: Validar integración del menú de categorías + # Valida los tres componentes reales que controlan la navegación. + # No busca CategoryMenu.tsx porque ese archivo era código sin uso. + - name: Validar navegación real del catálogo shell: bash run: | set -euo pipefail - MENU_FILE="$( - find "${APP_DIR}" -type f -name 'CategoryMenu.tsx' -print -quit - )" + NAVBAR_FILE="${APP_DIR}/components/layout/navbar.tsx" + CATALOG_FILE="${APP_DIR}/components/catalog/catalog-client.tsx" + PAGE_FILE="${APP_DIR}/app/catalog/page.tsx" - if [ -z "${MENU_FILE}" ]; then - echo "AVISO: no se encontró CategoryMenu.tsx." - echo "El build continuará usando el menú actualmente integrado." - exit 0 - fi + for FILE in "${NAVBAR_FILE}" "${CATALOG_FILE}" "${PAGE_FILE}"; do + if [ ! -f "${FILE}" ]; then + echo "ERROR: no existe ${FILE}" + exit 1 + fi + done - echo "CategoryMenu encontrado: ${MENU_FILE}" + echo "Validando Navbar real: ${NAVBAR_FILE}" - if ! grep -Eq 'useSearchParams|URLSearchParams|window\.location\.search' "${MENU_FILE}"; then - echo "ERROR: CategoryMenu.tsx no deriva el estado activo desde la URL." + grep -q 'useSearchParams' "${NAVBAR_FILE}" || { + echo "ERROR: navbar.tsx no usa useSearchParams." exit 1 - fi + } - if ! grep -q 'collection=Marvel' "${MENU_FILE}"; then - echo "ERROR: falta collection=Marvel para Acción y aventura." + grep -q 'currentCategory' "${NAVBAR_FILE}" || { + echo "ERROR: navbar.tsx no calcula currentCategory." exit 1 - fi + } - if ! grep -q 'category=Mochilas' "${MENU_FILE}"; then - echo "ERROR: falta category=Mochilas." + grep -q 'currentCollection' "${NAVBAR_FILE}" || { + echo "ERROR: navbar.tsx no calcula currentCollection." exit 1 - fi + } - MENU_USAGE="$( - grep -Rsl --include='*.tsx' --include='*.ts' 'CategoryMenu' "${APP_DIR}/app" "${APP_DIR}/src" "${APP_DIR}/components" 2>/dev/null | - grep -Fvx "${MENU_FILE}" | - head -n 1 || - true - )" - - if [ -z "${MENU_USAGE}" ]; then - echo "ERROR: CategoryMenu.tsx existe, pero ningún Header/Layout lo importa." - echo "Debe renderizarse en el encabezado que ve el usuario." + grep -q 'collection=Marvel' "${NAVBAR_FILE}" || { + echo "ERROR: falta collection=Marvel en navbar.tsx." exit 1 - fi + } - echo "CategoryMenu integrado desde: ${MENU_USAGE}" - echo "Validación del menú: OK" + grep -q 'category=Mochilas' "${NAVBAR_FILE}" || { + echo "ERROR: falta category=Mochilas en navbar.tsx." + exit 1 + } + + grep -q 'aria-current={active ? "page" : undefined}' "${NAVBAR_FILE}" || { + echo "ERROR: navbar.tsx no expone correctamente el menú activo." + exit 1 + } + + echo "Validando sincronización del catálogo: ${CATALOG_FILE}" + + grep -q 'useEffect' "${CATALOG_FILE}" || { + echo "ERROR: catalog-client.tsx no usa useEffect." + exit 1 + } + + grep -q 'setCategory(initialCategory' "${CATALOG_FILE}" || { + echo "ERROR: catalog-client.tsx no sincroniza initialCategory." + exit 1 + } + + grep -q 'setCollection(initialCollection' "${CATALOG_FILE}" || { + echo "ERROR: catalog-client.tsx no sincroniza initialCollection." + exit 1 + } + + grep -q 'setQuery(initialQuery' "${CATALOG_FILE}" || { + echo "ERROR: catalog-client.tsx no sincroniza initialQuery." + exit 1 + } + + echo "Validando remontaje por parámetros: ${PAGE_FILE}" + + grep -q 'key={`${category}:${collection}:${query}:${section}`}' "${PAGE_FILE}" || { + echo "ERROR: app/catalog/page.tsx no remonta CatalogClient al cambiar la URL." + exit 1 + } + + echo "OK: navegación real del catálogo validada." - name: Login en Gitea Registry uses: docker/login-action@v2