Improved import security, added browser tests
This commit is contained in:
36
README.md
36
README.md
@@ -16,6 +16,9 @@ npm test # unit and IndexedDB regression tests
|
||||
npm run check # svelte-check
|
||||
npm run build # production build into dist/
|
||||
npm run validate # tests, Svelte check and full PWA build
|
||||
npx playwright install chromium # install the browser for UI tests
|
||||
npm run test:e2e # fresh profiles, synthetic fixtures and offline PWA test
|
||||
npm run validate:all # include browser tests in full validation
|
||||
```
|
||||
|
||||
## Exporter et importer les données
|
||||
@@ -229,7 +232,7 @@ the static output, obtaining and renewing a Let's Encrypt certificate on its own
|
||||
|
||||
```sh
|
||||
cp .env.example .env
|
||||
$EDITOR .env # set SITE_ADDRESS and ACME_EMAIL
|
||||
$EDITOR .env # set SITE_ADDRESS, ACME_EMAIL and TRUST_PROXY
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
@@ -239,7 +242,7 @@ Requirements:
|
||||
- Ports **80 and 443** must be reachable from the internet. Port 80 is not optional —
|
||||
it is what the ACME challenge uses to prove domain ownership.
|
||||
|
||||
Certificates are stored in the `caddy_data` volume. Keep it: without it Caddy re-issues
|
||||
Certificates are stored in the bind-mounted `./caddy/data` directory. Keep it: without it Caddy re-issues
|
||||
on every recreate and will hit the Let's Encrypt rate limit after a handful of restarts.
|
||||
|
||||
To update, pull and rebuild:
|
||||
@@ -261,9 +264,12 @@ the only exception, which is why `npm run dev` works without certificates.
|
||||
|
||||
### Behind an existing reverse proxy
|
||||
|
||||
If something upstream already terminates TLS, set `SITE_ADDRESS=:80`, drop the `443`
|
||||
port mappings, and let the proxy forward to port 80. `ACME_EMAIL` is then unused but
|
||||
must still be non-empty — Caddy will not parse a blank value.
|
||||
The current Caddy configuration terminates TLS itself and accepts PROXY protocol
|
||||
from the address or CIDR in `TRUST_PROXY`. Set this value to the real upstream
|
||||
proxy address; `192.0.2.10/32` in `.env.example` is a documentation placeholder.
|
||||
`LISTEN_IP` selects the local interface for the published ports and defaults to
|
||||
`0.0.0.0`. A deployment that terminates TLS elsewhere needs its own Caddy and
|
||||
port configuration; changing `SITE_ADDRESS` alone does not configure that mode.
|
||||
|
||||
The app must be served from the root of its domain. `start_url` and the service worker
|
||||
scope are both `/`, so hosting it under a subpath will not work without changing the
|
||||
@@ -315,3 +321,23 @@ actualisation sont affichées avec une action Réessayer.
|
||||
|
||||
La checklist avant production et les validations restant à exécuter sont suivies
|
||||
dans [PRODUCTION.md](PRODUCTION.md).
|
||||
|
||||
## Sauvegarde vérifiée et validation navigateur
|
||||
|
||||
**Exporter les données** prépare le fichier et enregistre son empreinte complète.
|
||||
**Vérifier le fichier exporté…** relit le fichier téléchargé, contrôle qu’il est
|
||||
importable et compare son contenu à l’export. La date de la dernière sauvegarde
|
||||
vérifiée est distincte de celle du dernier export préparé. Après sept jours sans
|
||||
export vérifié, Pardis affiche un rappel pendant son utilisation. Aucune donnée
|
||||
n’est envoyée à un serveur ; conservez le fichier hors de cet appareil.
|
||||
|
||||
La purge affiche une liste figée de journées. Sauvegarde et suppression partagent
|
||||
une transaction ; une correction concurrente bloque la purge et demande une
|
||||
nouvelle consultation. Les autres journées récemment importées restent intactes.
|
||||
|
||||
Les tests Playwright utilisent des contextes neufs et des données synthétiques,
|
||||
à 320 px. Ils vérifient consultation/correction, focus, Retour, reprise à deux
|
||||
onglets, export vérifié, purge/restauration et rechargement hors ligne. Traces,
|
||||
vidéos et captures sont désactivées. Pour un Chrome déjà installé, définir
|
||||
`PARDIS_CHROME_PATH` avec son chemin ; sinon installer Chromium avec Playwright.
|
||||
La CI installe Chromium et ses dépendances avant de lancer ces tests.
|
||||
|
||||
Reference in New Issue
Block a user