Sur la page vitrine `/`, sous la rangée de CTA du hero (pas un 3e bouton : un compte reste nécessaire quelle que soit la plateforme), un lien discret vers l'APK Android + une ligne d'aide. - Cible : l'asset `batchcooking.apk` de la dernière release taguée Forgejo (`/releases/latest/download/…`, nom de fichier stable) — pas un artefact de CI. 404 tant que #64 + la correction de release.yml ne sont pas faits : état transitoire assumé, ce ticket n'ajoute que le lien. - `mobileHint` : rappel honnête que c'est un .apk à sideloader, pas une distribution Play Store. - i18n `landing.hero.mobileDownload` / `mobileHint` ; style discret dans landing-page.scss ; scénario Cypress de plus (présence + href du lien). Vérifs : `pnpm build` + `pnpm lint` OK. `landing.feature` non lancé en local (le hoist `tslib` de `@cypress/vite-dev-server` dans ce node_modules est cassé par un `pnpm install --force` interrompu + un verrou concurrent sur `@esbuild/win32-x64` ; `pnpm-lock.yaml` inchangé, la CI n'est pas affectée) → couvert par le job `e2e` de la CI. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
40 lines
1.5 KiB
Gherkin
40 lines
1.5 KiB
Gherkin
Feature: Public landing page at the root
|
|
|
|
A logged-out visitor on "/" should see a real presentation of the app
|
|
before being asked to sign in — but every other guarded route, and a
|
|
logged-in visitor, must behave exactly as before.
|
|
|
|
Scenario: A logged-out visitor lands on the presentation page
|
|
Given I am not signed in
|
|
When I visit "/"
|
|
Then I should see the heading "Cuisinez une fois, mangez toute la semaine"
|
|
And I should see the landing call to action
|
|
|
|
Scenario: The landing page sends visitors to sign in
|
|
Given I am not signed in
|
|
And I visit "/"
|
|
When I click the link "Se connecter"
|
|
Then the URL should include "/login"
|
|
|
|
Scenario: The landing page sends visitors to create an account
|
|
Given I am not signed in
|
|
And I visit "/"
|
|
When I click the link "Créer un compte"
|
|
Then the URL should include "/signup"
|
|
|
|
Scenario: The landing page offers the Android app download
|
|
Given I am not signed in
|
|
When I visit "/"
|
|
Then I should see the Android download link
|
|
|
|
Scenario: Another guarded route still redirects a logged-out visitor to sign in
|
|
Given I am not signed in
|
|
When I visit "/recettes"
|
|
Then the URL should include "/login"
|
|
|
|
Scenario: A signed-in visitor on "/" still gets the planning, not the landing
|
|
Given I am signed in as "Alice" "Martin"
|
|
And the planning request returns nothing
|
|
When I visit "/"
|
|
Then I should see the heading "Planning de la semaine"
|
|
And I should not see "Cuisinez une fois, mangez toute la semaine"
|