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>
40 lines
1.5 KiB
TypeScript
40 lines
1.5 KiB
TypeScript
// Mocks the API via cy.intercept — this job doesn't run a live backend (see
|
|
// .github/workflows/ci.yml).
|
|
//
|
|
// Issue #107 — "Paramètres d'application" is packaged-app only now. Its
|
|
// content (installed version + update check) is inert on the web, and the
|
|
// one web-relevant control it carried (the "stay on web" redirect toggle)
|
|
// moved to `/telecharger` (see download-page.cy.ts). Cypress always runs as
|
|
// a plain web browser (`Capacitor.isNativePlatform()` is never true here),
|
|
// so the page itself has no seam to reach — same untested-on-purpose
|
|
// posture already accepted for `useAppUpdateCheck` / `UpdateBanner`. This
|
|
// spec now only covers the web-side gating.
|
|
|
|
const authenticatedProfile = {
|
|
id: 1,
|
|
firstName: "Alice",
|
|
lastName: "Martin",
|
|
email: "alice@example.com",
|
|
tokenVersion: 0,
|
|
houseId: null,
|
|
dietId: null,
|
|
};
|
|
|
|
describe("App settings — hidden on the web (#107)", () => {
|
|
beforeEach(() => {
|
|
cy.intercept("GET", "**/auth/me", { statusCode: 200, body: authenticatedProfile });
|
|
cy.intercept("GET", /\/planning\?/, { statusCode: 200, body: null });
|
|
});
|
|
|
|
it("is absent from the Paramètres menu", () => {
|
|
cy.visit("/");
|
|
cy.contains("button", "Paramètres").click();
|
|
cy.contains("a", "Paramètres d'application").should("not.exist");
|
|
});
|
|
|
|
it("redirects /parametres/application to /parametres/compte instead of an orphaned page", () => {
|
|
cy.visit("/parametres/application");
|
|
cy.url().should("include", "/parametres/compte");
|
|
cy.contains("h1", "Paramètres d'application").should("not.exist");
|
|
});
|
|
});
|