batchCooking/apps/web/cypress/e2e
Nicolas 3abb7217dd
All checks were successful
CI / lint (push) Successful in 2m59s
CI / build (push) Successful in 3m4s
CI / intent-service-test (push) Successful in 4m46s
CI / e2e (push) Successful in 9m33s
CI / test (push) Successful in 17m20s
CI / build-android (push) Has been skipped
feat(mobile): proxie le telechargement de l'APK via l'API (pas de CORS)
Suite au fix de /releases/latest (precedent), l'utilisateur voulait un
lien qui declenche le telechargement du .apk directement, sans quitter
l'appli web. Verifie en direct : fetch("https://git.dev.kyuno.fr/api/...")
depuis le navigateur echoue avec "Failed to fetch" (confirme via un essai
en mode no-cors : la requete reseau aboutit bien, seule la reponse est
bloquee) — Forgejo n'envoie aucun header CORS sur son API Releases,
publique ou non. Ca ne concerne pas que la page d'accueil : le hook de
verification de mise a jour (#66, useAppUpdateCheck) faisait exactement le
meme fetch cross-origin depuis la WebView native, et echouait donc tout
aussi silencieusement en production sans que personne ne puisse s'en
rendre compte (le hook avale toute erreur reseau par design).

Ajoute un petit module apps/api/src/modules/mobile/ (2 routes publiques,
aucune ne touche la base de donnees) :
- GET /mobile/latest-release -> { version } (proxy JSON, remplace le fetch
  direct de useAppUpdateCheck)
- GET /mobile/download -> redirection 302 vers l'asset .apk reel de la
  derniere release (ou vers la page /releases/latest en repli si
  Forgejo est injoignable ou qu'aucun .apk n'est encore attache)

Cote frontend : LandingPage.tsx et UpdateBanner.tsx pointent maintenant
vers ce proxy (`${API_BASE_URL}/mobile/download`, target="_blank") au lieu
d'une URL Forgejo directe — un clic, telechargement immediat, jamais de
navigation hors de l'appli. useAppUpdateCheck.ts appelle desormais
apiClient.getLatestMobileVersion() au lieu d'un fetch direct.

Verifie en local (sans Postgres, ces routes n'en ont pas besoin) contre
les vraies donnees Forgejo :
  GET /mobile/latest-release -> {"version":"v0.2.0"}
  GET /mobile/download -> 302, Location vers le vrai .apk signe

pnpm lint / tsc (api + web) / pnpm --filter web build : tous verts. Le
scenario Cypress "offers the Android app download" echoue encore en local
(meme souci pre-existant deja documente sur la PR precedente, confirme
independant du code par CI reel) ; mis a jour pour asserter le nouveau
href relatif.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 23:40:06 +02:00
..
account.cy.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
account.feature refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
account.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
admin-catalog.cy.ts fix(admin): isole l'API admin sous /admin/api pour éviter la collision avec les pages front 2026-09-05 13:48:07 +02:00
admin-corrections.cy.ts fix(admin): isole l'API admin sous /admin/api pour éviter la collision avec les pages front 2026-09-05 13:48:07 +02:00
admin-dashboard.cy.ts fix(admin): isole l'API admin sous /admin/api pour éviter la collision avec les pages front 2026-09-05 13:48:07 +02:00
admin-layout.cy.ts fix(admin): isole l'API admin sous /admin/api pour éviter la collision avec les pages front 2026-09-05 13:48:07 +02:00
admin-login.feature refactor(admin): fusionne apps/admin-web dans apps/web sous /admin/* 2026-08-29 17:02:29 +02:00
admin-login.ts fix(admin): isole l'API admin sous /admin/api pour éviter la collision avec les pages front 2026-09-05 13:48:07 +02:00
admin-tours.cy.ts feat(web): page admin de CRUD des didacticiels (#44) 2026-09-06 06:53:38 +02:00
auth.feature refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
auth.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
cooking-session-page.cy.ts feat(cooking-session): déplie une recette de l'onglet Recettes au lieu de rediriger 2026-09-04 23:08:47 +02:00
cooking-session.feature feat(cooking-session): déplie une recette de l'onglet Recettes au lieu de rediriger 2026-09-04 23:08:47 +02:00
cooking-session.ts feat(cooking-session): déplie une recette de l'onglet Recettes au lieu de rediriger 2026-09-04 23:08:47 +02:00
household-settings.cy.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
household-settings.feature fix(recipes): la source générique JSON-LD n'apparaît plus comme source 2026-08-20 15:10:51 +02:00
household-settings.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
landing.feature feat(landing): lien de téléchargement de l'app Android (#65) 2026-09-06 10:26:50 +02:00
landing.ts feat(mobile): proxie le telechargement de l'APK via l'API (pas de CORS) 2026-09-06 23:40:06 +02:00
layout.cy.ts feat(web): passe responsive téléphone pour le contenu des pages (#39 phase 3) 2026-09-06 03:24:13 +02:00
leftovers-basket.cy.ts feat(planning): panier des restes dans l'en-tête (lecture seule + jeter) 2026-09-06 00:16:00 +02:00
onboarding.feature fix(recipes): synchronise les sources en base au démarrage de l'image de prod 2026-08-20 13:48:29 +02:00
onboarding.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
planning-leftovers.feature feat(planning): glisser-déposer un reste sur un autre créneau 2026-09-06 00:47:49 +02:00
planning-leftovers.ts feat(planning): glisser-déposer un reste sur un autre créneau 2026-09-06 00:47:49 +02:00
planning-page.cy.ts feat(cooking): page /cuisiner + bouton "Commencer a cuisiner" 2026-08-28 19:06:24 +02:00
planning.feature feat(planning): sépare portions demandées et portions préparées 2026-09-05 23:29:58 +02:00
planning.ts feat(planning): sépare portions demandées et portions préparées 2026-09-05 23:29:58 +02:00
preferences.cy.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
preferences.feature refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
preferences.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
recipe-form.feature feat(recipes): permet d'ajouter des ingredients hors-catalogue 2026-08-28 23:36:42 +02:00
recipe-form.ts fix(recipes): rend StepDescription tolérant à un techSteps absent 2026-09-06 09:04:36 +02:00
recipe-sources.feature test(recipes): fiabilise le scénario 3 pages (scroll réel + log de curseurs) 2026-09-05 20:45:58 +02:00
recipe-sources.ts test(recipes): fiabilise le scénario 3 pages (scroll réel + log de curseurs) 2026-09-05 20:45:58 +02:00
recipes.cy.ts fix(recipes): rend StepDescription tolérant à un techSteps absent 2026-09-06 09:04:36 +02:00
recipes.feature feat(recipes): refond le panneau de correction des métadonnées de tech-step 2026-09-05 00:22:01 +02:00
recipes.ts feat(recipes): refond le panneau de correction des métadonnées de tech-step 2026-09-05 00:22:01 +02:00
shopping-list.feature feat(shopping-list): liste de courses agrégée depuis le planning (#73) 2026-08-22 22:45:06 +02:00
shopping-list.ts feat(shopping-list): liste de courses agrégée depuis le planning (#73) 2026-08-22 22:45:06 +02:00
sidebar.cy.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
smoke.cy.ts feat(web): page vitrine publique à la racine (#41) 2026-09-06 04:33:41 +02:00
tour.feature feat(web): moteur de tutoriel guidé driver.js (#42) 2026-09-06 06:17:06 +02:00
tour.ts feat(web): moteur de tutoriel guidé driver.js (#42) 2026-09-06 06:17:06 +02:00
user-preferences.cy.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
user-preferences.feature refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00
user-preferences.ts refactor: sépare les tests Cypress en parcours utilisateur / layout / composants (#25) 2026-08-19 14:31:17 +02:00