Bite 32.2 — Person Self‐Service Journey History - RodrigoMattosoSilveira/EnterpriseRemoteSystems GitHub Wiki

Bite 32.2 — Person Self-Service Journey History

Manual Promotion Test Suite

Branch: 895-bite-322-person-self-service-journey-history
Committed HEAD SHA: 75687b5c75e4b229ee94ae27fd3685d6d5db3d3a


Promotion rule

Promote Bite 32.2 only if all three manual tests PASS.

Bite 32.2 is promotion-blocking if any of the following occurs:

  • a Person cannot see their own current Journey from their Person page;
  • a Person cannot see their own closed Journey history;
  • a Person sees another Person's Journey;
  • self-service exposes a Tenant-wide People or Collaborator catalog;
  • opening a Journey from self-service opens the wrong Person's Journey;
  • a closed Journey cannot be opened;
  • the current and historical Journeys are presented in the wrong order;
  • switching between pt-BR and en-US changes the underlying Journey set;
  • new 32.2 UI is untranslated in either supported locale;
  • a raw translation key is displayed;
  • any unexpected 401, 403, 404, 500, JavaScript exception, or application-level error occurs during the supported UI flow.

0. Prerequisites

0.1 Confirm the committed source

From the repository root, run:

git rev-parse HEAD

Expected:

75687b5c75e4b229ee94ae27fd3685d6d5db3d3a

PASS: the SHA matches exactly.

BLOCK PROMOTION: stop if the SHA differs.


0.2 Prepare the deterministic Brazilian demo database

Stop any currently running LOCAL backend.

From the repository root, run:

make brazilian-demo-local-reset BRAZILIAN_DEMO_AS_OF=2026-09-18
make brazilian-demo-local-verify BRAZILIAN_DEMO_AS_OF=2026-09-18

The demo fixture is appropriate for Bite 32.2 because:

  • Rafael Lima has one historical closed Journey;
  • Rafael Lima has one current Journey;
  • Rafael has his own ordinary self-service Authentication Account;
  • other People and Collaborators exist in the same Tenant, allowing the self-service confidentiality boundary to be inspected through the UI.

0.3 Start the backend

In Terminal 1:

ERS_DATABASE_PATH=data/brazilian-demo.db make local-backend

Leave the terminal running.


0.4 Start the frontend

In Terminal 2:

make local-frontend

Open the normal LOCAL URL displayed by Vite.


Test 01 — Rafael sees his own current and closed Journey history in Portuguese

Purpose

Verify the principal Bite 32.2 user story:

As a Person, I can see my own current and closed Journeys for my current Tenant.

This test must be performed as the Person, not as a Tenant Administrator.


Identity

Sign in as:

Person:   Rafael Lima
Nickname: Rafa
Login:    [email protected]
Password: Demo-31.4-Person!

Expected Tenant:

Mineração Serra Dourada — DEMO

Expected role/context:

Ordinary Person / Collaborator self-service

Do not use Mariana Alves or another Tenant Administrator for this test.


Locale

Select:

Português (Brasil)

If the application is already using pt-BR, leave it selected.


Procedure

  1. Sign out of any existing ERS session.

  2. Sign in using:

    [email protected]
    Demo-31.4-Person!
    
  3. Confirm the selected Tenant/context is:

    Mineração Serra Dourada — DEMO
    
  4. Confirm ERS opens Rafael's own Person self-service page, or use the normal application navigation and click:

    Pessoas
    
  5. Confirm clicking Pessoas opens Rafael's own Person record rather than a Tenant-wide list of People.

  6. Confirm the Person displayed is:

    Rafael Lima
    
  7. Confirm nickname:

    Rafa
    
  8. Scroll down until you find:

    Histórico de Jornadas
    
  9. Confirm the Person-specific explanatory text is:

    Suas Jornadas de Colaborador atuais e encerradas neste Locatário.
    
  10. Count the Journey history cards.

Expected:

2

Current Journey

  1. Inspect the first/newest Journey card.

  2. Confirm its lifecycle state is:

Atual
  1. Confirm the Journey start date corresponds to:
30 de jul. de 2026
  1. Confirm its projected end date corresponds to:
28 de out. de 2026
  1. Confirm the card displays:
Alocação de trabalho
Remuneração
Abrir Jornada
  1. Confirm the work assignment value is not blank.

  2. Confirm the compensation value is not blank.

  3. Record the Journey ID shown on the card:

Current Journey ID: ______________________________________

Historical closed Journey

  1. Inspect the second/older Journey card.

  2. Confirm its lifecycle state is:

Encerrada
  1. Confirm its start date corresponds to:
10 de fev. de 2026
  1. Confirm its closure date corresponds to:
10 de jun. de 2026
  1. Confirm the historical card also displays:
Alocação de trabalho
Remuneração
Abrir Jornada
  1. Confirm the work assignment value is not blank.

  2. Confirm the compensation value is not blank.

  3. Record the Journey ID:

Closed Journey ID: _______________________________________
  1. Confirm the Current Journey ID and Closed Journey ID are different.

  2. Confirm the Atual Journey appears before the Encerrada Journey.


Open the current Journey

  1. On the Atual card, click:
Abrir Jornada
  1. Confirm the current Journey detail page opens successfully.

  2. Confirm the page belongs to Rafael Lima.

  3. Confirm the Journey ID on the detail page matches the Current Journey ID recorded above.

  4. Confirm the Journey is not identified as closed.

  5. Return to Rafael's Person page using the normal Voltar control or the browser Back button.


Open the closed Journey

  1. Return to:
Histórico de Jornadas
  1. On the Encerrada Journey, click:
Abrir Jornada
  1. Confirm the Journey detail page opens successfully.

  2. Confirm the page belongs to Rafael Lima.

  3. Confirm the Journey ID matches the Closed Journey ID recorded above.

  4. Confirm the page visibly identifies the Journey as closed.

  5. Confirm the displayed closure date corresponds to:

10 de jun. de 2026

Expected result

Rafael can inspect exactly:

1 current Journey
1 historical closed Journey

for his Membership in:

Mineração Serra Dourada — DEMO

The current Journey is displayed first.

Both Journey detail pages remain readable through the normal self-service UI.


PASS

PASS if all steps above complete successfully.


BLOCK PROMOTION

Block promotion if:

  • Histórico de Jornadas is absent;
  • only the current Journey appears;
  • the historical Journey is absent;
  • more than two Journeys appear;
  • both cards open the same Journey;
  • either Journey belongs to another Person;
  • the closed Journey cannot be opened;
  • the ordering is reversed;
  • Rafael receives an authorization error while using the supported self-service path;
  • an unexpected application error occurs.

Test 02 — Self-service does not expose another Person's People or Journey data

Purpose

Verify the visible self-service confidentiality boundary.

A Person must be able to see their own data without gaining Tenant-wide People or Collaborator browsing merely because they have people.self.read and collaborators.self.read.


Identity

Remain signed in as:

Rafael Lima
[email protected]

Selected Tenant:

Mineração Serra Dourada — DEMO

Locale may remain:

Português (Brasil)

Part A — People navigation remains self-only

  1. Use the normal application navigation.

  2. Click:

    Pessoas
    
  3. Confirm the application opens Rafael Lima's own Person page.

  4. Confirm there is not a Tenant-wide People list allowing Rafael to browse People such as:

    João Ferreira
    Camila Souza
    Beatriz Nascimento
    Mariana Alves
    
  5. Confirm there is no normal Tenant Administrator action to:

    • create another Person;
    • add an existing Person;
    • manage another Person's Authentication Account;
    • start a Collaborator Journey for another Person.
  6. Confirm the visible Journey History belongs to Rafael.


Part B — Collaborators navigation remains self-only

  1. Use the normal application navigation and click:
Colaboradores
  1. Confirm the page is presented as Rafael's own Collaborator/Journey self-service history rather than a Tenant-wide Collaborator catalog.

  2. Confirm Rafael's current Journey is visible.

  3. Confirm Rafael's closed historical Journey is visible.

  4. Confirm the page does not list another Tenant member's Collaborator Journey, including:

João Ferreira
Camila Souza
  1. Confirm no Tenant-wide Collaborator search/filter is offered that would let Rafael search for another Person.

  2. Record the two Journey IDs shown here.

Current Journey ID: ______________________________________
Closed Journey ID:  ______________________________________
  1. Compare them with the IDs recorded in Test 01.

  2. Confirm the two sets of IDs are identical.


Part C — Return from Collaborators to own Person

  1. Use the normal UI control that returns to Rafael's Person record, such as:
Minha Pessoa

or its currently rendered pt-BR equivalent.

  1. Confirm ERS returns to:
Rafael Lima
  1. Confirm the same two Journey records remain under:
Histórico de Jornadas

Expected result

Rafael can navigate between:

his Person
↔
his Collaborator Journeys

but cannot use those navigation entries to browse another Person or another Person's Journeys.


PASS

PASS if:

Pessoas       → Rafael only
Colaboradores → Rafael's Journeys only

and both views refer to the exact same current and historical Journey IDs.


BLOCK PROMOTION

Block promotion if:

  • Pessoas opens a Tenant-wide People catalog for Rafael;
  • Rafael can navigate through the UI to João, Camila, Beatriz, Mariana, or another Person;
  • Colaboradores shows another Person's Journey;
  • a Tenant-wide Collaborator search becomes available to Rafael;
  • the Person-page Journey IDs and Collaborator-page Journey IDs differ unexpectedly;
  • Rafael gains Tenant Administrator actions;
  • an unexpected authorization or application error occurs.

Test 03 — English I18N parity preserves the same self-service history

Purpose

Verify Bite 32.2 is complete in the second supported ERS locale and that changing presentation locale does not change authorization or Journey identity.


Identity

Remain signed in as:

Rafael Lima
[email protected]

Selected Tenant:

Mineração Serra Dourada — DEMO

Procedure

  1. Return to Rafael's own Person page using the normal application navigation:

    People
    

    or switch locale first if the navigation is still displayed in Portuguese.

  2. Use the language selector.

  3. Select:

English (United States)
  1. Confirm the Person displayed remains:
Rafael Lima
  1. Confirm the selected Tenant remains:
Mineração Serra Dourada — DEMO
  1. Locate the section:
Journey History
  1. Confirm its Person-specific description reads:
Your current and closed Collaborator Journeys in this Tenant.
  1. Confirm exactly two Journey cards remain visible.

Current Journey

  1. Confirm the first Journey displays:
Current
  1. Confirm its dates are rendered in English locale format:
Started: Jul 30, 2026
Projected end: Oct 28, 2026
  1. Confirm the card contains:
Work assignment
Compensation
Open Journey
  1. Confirm its Journey ID is the same Current Journey ID recorded in Test 01.

Historical Journey

  1. Confirm the second Journey displays:
Closed
  1. Confirm its dates are rendered as:
Started: Feb 10, 2026
Closed: Jun 10, 2026
  1. Confirm its Journey ID is the same Closed Journey ID recorded in Test 01.

  2. Confirm both Journey records remain in the same newest-first order.

  3. Confirm no raw translation keys are visible, including anything resembling:

people.journeyHistory.title
people.journeyHistory.selfDescription
people.journeyHistory.current
people.journeyHistory.closed
people.journeyHistory.openJourney
  1. Confirm the new 32.2 structural labels are no longer rendered in Portuguese, including:
Histórico de Jornadas
Suas Jornadas de Colaborador atuais e encerradas neste Locatário.
Atual
Abrir Jornada
  1. Click Open Journey on the historical Closed Journey.

  2. Confirm the historical Rafael Journey opens successfully.

  3. Confirm the Journey ID still matches the Closed Journey ID from Test 01.

  4. Return to Rafael's Person page.

  5. Switch back to:

Português (Brasil)
  1. Confirm the same two Journey IDs remain visible.

Expected result

Locale changes affect only presentation.

The invariant must remain:

same Account
same Tenant
same Person
same two Journeys
same lifecycle states
same Journey IDs

Only labels and locale-sensitive date presentation change.


PASS

PASS if the self-service feature is complete in both en-US and pt-BR without changing the underlying data.


BLOCK PROMOTION

Block promotion if:

  • changing locale changes the Journey count;
  • a Journey disappears or another appears;
  • Journey IDs change;
  • English mode retains new 32.2 Portuguese structural text;
  • Portuguese mode retains new 32.2 English structural text;
  • raw translation keys appear;
  • date formatting does not change with locale;
  • opening the historical Journey stops working after a locale switch.

Closed-only Journey history

No additional manual test is required for the following case:

Person
  ↓
has historical closed Journey(s)
  ↓
has no current active Journey
  ↓
must retain collaborators.self.read
  ↓
must still see Journey History

The committed Bite 32.2 frontend regression explicitly tests that Journey History remains visible when the Person has only closed Journeys.

The existing authorization/domain coverage also establishes that self-service Journey-history permission derives from the existence of Journey history, rather than requiring an active Journey.

Because the deterministic Brazilian demo intentionally gives Rafael both a historical and current Journey, manually testing the closed-only state would require mutating the fixture merely to recreate a state already covered deterministically by automated tests.

That mutation is not necessary for promotion.


DevTools / API / SQL

None required.

All Bite 32.2 manual acceptance tests above are deliberately executable through the normal ERS UI.


Final promotion checklist

[x] Exact committed ZIP/SHA verified
[x] make local-check passes — reported by tester
[x] Feature-branch CI passes — reported by tester

[ ] Test 01 — Rafael sees current + closed Journey history in pt-BR — PASS
[ ] Test 02 — self-service remains Rafael-only — PASS
[ ] Test 03 — en-US / pt-BR parity preserves Journey identity — PASS

If all three manual tests PASS and no new defect is observed, Bite 32.2 — Person Self-Service Journey History is ready for promotion.