# JS2 SBH — avvio della sessione, login, schede, rientro e uscita

# 4. Opzioni › Informazioni sulla sessione

![Informazioni sulla sessione](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/informazioni-sulla-sessione.png)

Dal pulsante delle opzioni (le tre righe in basso a sinistra) › **Informazioni sulla sessione**: chi
e' collegato, a quale server, con quale connessione, versione e catalogo. E' quello che si chiede a
chi segnala un problema; **Copia** lo mette negli appunti in una volta.

✔ Verifica: la finestra mostra «Server (nodo)» e «Connessione n.».

✔ Verifica: «Postazione (client)» e' `GUIDA-AVVIO`, il nome scritto al §1: il nome client arriva
davvero al server.

✔ Verifica: «Utente» e' valorizzato.

# 5. Piu' sessioni: le schede

![Il menu della scheda](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/il-menu-della-scheda.png)

Ogni scheda della barra in basso e' una **sessione completa**, con la sua connessione al server:
due schede sono due utenti collegati, indipendenti. Il tasto destro su una scheda apre il suo menu.

✔ Verifica: nel menu della scheda «Duplica» e «Chiudi la scheda» sono attivi.

![La scheda duplicata](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/la-scheda-duplicata.png)

**Duplica** apre una connessione nuova con le stesse credenziali, senza rifare il login: le
credenziali restano nella memoria della pagina, mai nel browser (vedi il §8: dopo una ricarica non
ci sono piu' e la scheda nuova chiede il login).

✔ Verifica: compare una seconda scheda che entra da sola, senza richiesta di login, arriva al menu
(«UTENTE · menu») e diventa l'attiva.

![Due schede affiancate](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/due-schede-affiancate.png)

**Affianca alla scheda attiva** (dal menu di una scheda che non e' quella attiva) divide lo schermo
fra due sessioni: per esempio un'interrogazione a sinistra e un inserimento a destra. Il clic in una
delle due la rende attiva (tastiera e finestre vanno a lei). **Separa**, dallo stesso menu, torna a
una sola.

✔ Verifica: con «Affianca» due sessioni sono a video insieme, ognuna col suo menu e piu' stretta.

✔ Verifica: con «Separa» ne resta a video una sola.

![Chiudere una scheda](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/chiudere-una-scheda.png)

**Chiudi la scheda** su una scheda connessa esce dalla sua sessione in modo ordinato e lo chiede
prima, con una finestra dell'app e non con quella del browser.

✔ Verifica: «Chiudi la scheda» chiede «Chiudere la scheda?»; confermato, la scheda sparisce e resta
la prima, col suo menu.

![Una scheda nuova](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/una-scheda-nuova.png)

Il **+** accanto alle schede apre una sessione nuova **con il suo login** (per entrare con un altro
utente): la scheda nasce sulla pagina Connetti. Una scheda senza connessione si chiude subito, senza
conferma, perche' non c'e' niente sul server da chiudere.

✔ Verifica: il «+» apre la scheda «Nuova sessione» con Connetti, e la prima resta connessa (pallino
verde).

✔ Verifica: il menu della scheda nuova dice «Nessuna connessione aperta» e «Chiudi la scheda» la
toglie subito.

# 6. Una funzione aperta

![Condizioni pagamento in interrogazione](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/condizioni-pagamento-in-interrogazione.png)

Dal menu: modulo **B20**, cerca «Condizioni», **Condizioni pagamento**, tipo di lavoro
**Interrogazione**, **Avvia**. Con una funzione aperta il client protegge il lavoro: uscire a meta'
troncherebbe il programma COBOL (file e transazioni non chiusi), quindi si esce solo dal menu.

✔ Verifica: la griglia ha le righe e il cursore e' sul Codice pagamento.

✔ Verifica: la scheda dice utente e form (non piu' «menu») e la barra mostra form e maschera in
input.

✔ Verifica: il pulsante di uscita e' spento.

![La scheda con una funzione aperta](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/la-scheda-con-una-funzione-aperta.png)

✔ Verifica: nel menu della scheda «Chiudi la scheda» e' spento, con «Prima chiudi la funzione e
torna al menu».

# 7. Il rientro dopo una ricarica

![Dopo la ricarica della pagina](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/dopo-la-ricarica-della-pagina.png)

Ricaricare la pagina (F5), chiudere la scheda del browser e riaprire `/sbh`, o andare avanti e
indietro, non perde la sessione: il gateway la tiene parcheggiata per qualche minuto, il browser
rigioca quello che il server gli aveva mandato e si riaggancia. La funzione torna com'era, col campo
in input. Per questo il browser non chiede piu' «Vuoi davvero uscire?»: non c'e' niente da perdere.

✔ Verifica: ricaricando, il browser non mostra nessun avviso.

✔ Verifica: la griglia torna con la stessa prima riga, il cursore sul Codice pagamento e nessuna
attesa in corso.

✔ Verifica: dopo la ricarica c'e' una sola scheda (quella ripresa prende il posto della scheda vuota
dell'avvio).

# 8. Uscire dalla pagina con la sessione aperta

![Uscire dalle sessioni?](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/uscire-dalle-sessioni.png)

Andare altrove nell'applicazione (qui: **Tutti i moduli** in alto a sinistra › un modulo) con una
sessione aperta non la abbandona in silenzio: l'app chiede cosa farne.

- **Resta**: si annulla la navigazione.
- **Lascia in sospeso**: si esce, le sessioni restano parcheggiate sul gateway e tornando su `/sbh`
  entro il tempo detto riprendono da dove erano, come dopo la ricarica del §7.
- **Forza l'uscita** (con una funzione aperta) o **Chiudi le sessioni ed esci** (dal menu): chiude
  tutte le connessioni. Con una funzione aperta la tronca a meta'.

La guida prova **Resta**: «Lascia in sospeso» terminerebbe il giro con una sessione parcheggiata sul
server, che il passo successivo dovrebbe riprendere; il rientro stesso e' gia' provato al §7.

✔ Verifica: compare «Uscire dalle sessioni?» e avverte che c'e' una funzione aperta.

✔ Verifica: i pulsanti sono «Resta», «Lascia in sospeso» e «Forza l'uscita».

✔ Verifica: il testo dice che le sessioni in sospeso riprendono «entro 15 minuti» (il tempo di
rientro del gateway, `SBH_RESUME_SECONDS`, di default 900 secondi).

✔ Verifica: con «Resta» la finestra si chiude, si resta su `/sbh` e la funzione e' ancora a video.

![Duplica dopo il rientro](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/duplica-dopo-il-rientro.png)

Tornati al menu col tasto Esci della funzione, l'uscita si riaccende. La sessione ripresa dopo la
ricarica **si puo' duplicare**, ma con una differenza: le credenziali che servono a «Duplica» per
entrare da sola stavano nella memoria della pagina, e la ricarica le ha cancellate (e' voluto: non
si salvano nel browser). Il menu della scheda lo dice nel sottotitolo, «Nuova connessione: dopo una
ricarica il login va rifatto».

✔ Verifica: di nuovo al menu, il pulsante di uscita e' attivo e la scheda dice «UTENTE · menu».

✔ Verifica: dopo il rientro «Duplica» e' attivo, con «dopo una ricarica il login va rifatto».

![La scheda duplicata chiede il login](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/la-scheda-duplicata-chiede-il-login.png)

La scheda nuova si collega da sola e arriva alla richiesta di login del server. La guida non entra
(non conosce le credenziali: stanno in `config/.env.sbh`) e chiude la scheda dal suo menu, con la
conferma: l'uscita e' ordinata anche dalla richiesta di login (il client risponde Esci al server).

✔ Verifica: la seconda scheda mostra il login e dice «Accesso…», mentre la prima resta connessa.

✔ Verifica: «Chiudi la scheda» con la conferma la toglie e resta la prima, col suo menu.

# 9. L'uscita ordinata

![Chiudere la sessione?](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/chiudere-la-sessione.png)

Dal menu, il pulsante di uscita in basso a destra (o Opzioni › **Esci dalla sessione**) chiude la
sessione in modo ordinato: il client dice al server che se ne va, il server chiude i suoi programmi
e libera la connessione. La conferma e' una finestra dell'app.

✔ Verifica: l'uscita chiede «Chiudere la sessione?» con il pulsante «Chiudi la sessione».

![Sessione chiusa](https://gsdoc.genesyssoftware.eu/uploads/images/gallery/2026-10/scaled-1680-/sessione-chiusa.png)

✔ Verifica: confermato, la barra dice «Chiuso» e torna la pagina Connetti.

✔ Verifica: accanto a «Chiuso» non ci sono piu' nodo e numero della connessione finita.

✔ Verifica: nel browser non resta nessuna sessione da riprendere (nessuna voce `sbh-web.sessione.*`
nel localStorage).

# Introduzione

> Come si apre una sessione del gestionale legacy dal client web, come si entra, come si lavora con
> piu' sessioni a schede, cosa succede se si ricarica la pagina e come si esce senza lasciare
> connessioni appese sul server. Percorso: **http://localhost:4202/sbh › Connetti › Accedi**; per la
> funzione di prova **B20 › Condizioni pagamento › Interrogazione**.
>
> Rieseguire: `cd frontend && npx playwright test --config=playwright.sbh.config.ts sbh-web-guida-avvio`
> (con altre sessioni al lavoro, aggiungere `--output=test-results/sbh-guida-avvio`).
> 42 verifiche, 18 schermate. Non crea dati: la funzione di prova e' aperta in interrogazione.

**Perche' uno spec Playwright e non un `.cjs` in `e2e/guide/`.** Le altre guide girano con uno
script `node e2e/guide/<slug>-guide.cjs` contro l'ERP sulla 4200. Questa parla con un server SIGEA
legacy vero, attraverso il gateway SBH, e ha bisogno di utente e password: li carica
`frontend/playwright.sbh.config.ts` da `config/.env.sbh` (ignorato da git, non si legge e non si
copia altrove). Lo script e' quindi `frontend/e2e/sbh-web-guida-avvio.spec.ts`, che usa quella
config, la cache dei menu di `e2e/sbh-web-accesso.ts` (`SBH_STATO`) e lo stesso schema degli altri
spec sbh-web. Ogni `✔ Verifica` qui sotto e' un `expect` dello spec, nello stesso ordine.

Prerequisiti: `npm run sbh:leggero` avviato (app sulla 4202, gateway sulla 5086), la VPN verso il
server legacy. Viewport 1500x900. Lo spec chiude sempre la sessione in modo ordinato, anche se un
passo fallisce: il server ha un numero massimo di connessioni e una sessione abbandonata resta
occupata finche' il gateway non la chiude.