All checks were successful
Ses sections n'ont pas de sens sur le web (pas de « version installée », la vérif de mise à jour y est un no-op) et son seul réglage web-pertinent — la case « toujours rester sur le site web » — vit mieux dans le flux qu'il pilote. - `AppLayout.tsx` : `SETTINGS_ITEMS` gagne un `nativeOnly`, filtré une fois au chargement du module (`settingsNavItems`) via `Capacitor.isNativePlatform()` — l'entrée disparaît du menu Paramètres (sidebar + feuille « Plus »). - `App.tsx` : la route `/parametres/application` redirige vers `/parametres/compte` sur le web, comme le précédent `/foyer`, pour qu'un bookmark ne tombe pas sur une page orpheline. - `AppSettingsPage.tsx` : devient natif-only — la branche `webHint` et la section « rester sur le site web » sont retirées. - La case « toujours rester sur le site web » déménage sur `/telecharger` (`DownloadPage`) : page publique qu'un visiteur non connecté sur navigateur téléphone peut atteindre, et c'est exactement le flux que la préférence concerne. `localStorage` sur l'origine web publique, là où `attemptOpenNativeApp` la lit. i18n `appSettings.redirect.*` → `download.stayOnWeb.*` ; `appSettings.version.webHint` supprimée. Tests : `sidebar.cy.ts` / `app-settings-page.cy.ts` — l'entrée et la page sont absentes sur le web, la route redirige. `download-page.cy.ts` — la case « rester sur le site web » par défaut décochée, persistée au reload. Local OK (sidebar 5/5, app-settings 2/2, download 3/3). Closes #107 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
51 lines
2.1 KiB
TypeScript
51 lines
2.1 KiB
TypeScript
// Pure layout spec, no Cucumber — a single static page with no user
|
|
// journey of its own (see layout.cy.ts's identical rationale for this
|
|
// 3-way test split). No `cy.intercept("**/auth/me", ...)` needed: this
|
|
// route renders outside RequireAuth entirely (see App.tsx's own doc
|
|
// comment on why), so it never calls that endpoint.
|
|
|
|
describe("DownloadPage — the mobile-app-redirect fallback", () => {
|
|
it("renders the APK download link, a retry button, and a way back home", () => {
|
|
cy.visit("/telecharger");
|
|
|
|
cy.contains("h1", "Installer l'application Android").should("be.visible");
|
|
|
|
// API_BASE_URL is empty locally (relative-URL, same-origin default —
|
|
// see client.ts), so the real target collapses to this relative path.
|
|
cy.contains("a", "Télécharger l'APK").should("have.attr", "href", "/mobile/download");
|
|
|
|
cy.contains("button", "Réessayer d'ouvrir l'application").should("be.visible");
|
|
|
|
cy.contains("a", "Retour à l'accueil").should("have.attr", "href", "/");
|
|
});
|
|
|
|
it("is reachable without being logged in — no bounce to /login", () => {
|
|
cy.visit("/telecharger");
|
|
cy.url().should("include", "/telecharger");
|
|
});
|
|
|
|
// Issue #107 — the "toujours rester sur le site web" preference moved
|
|
// here from "Paramètres d'application" (packaged-app only now). Written to
|
|
// `localStorage` on the public web origin, which is where
|
|
// `attemptOpenNativeApp` reads it.
|
|
it("defaults 'stay on web' to unchecked, and persists a toggle across a reload", () => {
|
|
cy.visit("/telecharger");
|
|
|
|
cy.contains("label", "Toujours rester sur le site web")
|
|
.find('input[type="checkbox"]')
|
|
.should("not.be.checked");
|
|
|
|
cy.contains("label", "Toujours rester sur le site web").click();
|
|
cy.contains("label", "Toujours rester sur le site web")
|
|
.find('input[type="checkbox"]')
|
|
.should("be.checked");
|
|
cy.window().then((win) => {
|
|
expect(win.localStorage.getItem("batchcooking:stayOnWeb")).to.equal("true");
|
|
});
|
|
|
|
cy.reload();
|
|
cy.contains("label", "Toujours rester sur le site web")
|
|
.find('input[type="checkbox"]')
|
|
.should("be.checked");
|
|
});
|
|
});
|