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-BRanden-USchanges 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
-
Sign out of any existing ERS session.
-
Sign in using:
[email protected] Demo-31.4-Person! -
Confirm the selected Tenant/context is:
Mineração Serra Dourada — DEMO -
Confirm ERS opens Rafael's own Person self-service page, or use the normal application navigation and click:
Pessoas -
Confirm clicking Pessoas opens Rafael's own Person record rather than a Tenant-wide list of People.
-
Confirm the Person displayed is:
Rafael Lima -
Confirm nickname:
Rafa -
Scroll down until you find:
Histórico de Jornadas -
Confirm the Person-specific explanatory text is:
Suas Jornadas de Colaborador atuais e encerradas neste Locatário. -
Count the Journey history cards.
Expected:
2
Current Journey
-
Inspect the first/newest Journey card.
-
Confirm its lifecycle state is:
Atual
- Confirm the Journey start date corresponds to:
30 de jul. de 2026
- Confirm its projected end date corresponds to:
28 de out. de 2026
- Confirm the card displays:
Alocação de trabalho
Remuneração
Abrir Jornada
-
Confirm the work assignment value is not blank.
-
Confirm the compensation value is not blank.
-
Record the Journey ID shown on the card:
Current Journey ID: ______________________________________
Historical closed Journey
-
Inspect the second/older Journey card.
-
Confirm its lifecycle state is:
Encerrada
- Confirm its start date corresponds to:
10 de fev. de 2026
- Confirm its closure date corresponds to:
10 de jun. de 2026
- Confirm the historical card also displays:
Alocação de trabalho
Remuneração
Abrir Jornada
-
Confirm the work assignment value is not blank.
-
Confirm the compensation value is not blank.
-
Record the Journey ID:
Closed Journey ID: _______________________________________
-
Confirm the Current Journey ID and Closed Journey ID are different.
-
Confirm the Atual Journey appears before the Encerrada Journey.
Open the current Journey
- On the Atual card, click:
Abrir Jornada
-
Confirm the current Journey detail page opens successfully.
-
Confirm the page belongs to Rafael Lima.
-
Confirm the Journey ID on the detail page matches the Current Journey ID recorded above.
-
Confirm the Journey is not identified as closed.
-
Return to Rafael's Person page using the normal Voltar control or the browser Back button.
Open the closed Journey
- Return to:
Histórico de Jornadas
- On the Encerrada Journey, click:
Abrir Jornada
-
Confirm the Journey detail page opens successfully.
-
Confirm the page belongs to Rafael Lima.
-
Confirm the Journey ID matches the Closed Journey ID recorded above.
-
Confirm the page visibly identifies the Journey as closed.
-
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
-
Use the normal application navigation.
-
Click:
Pessoas -
Confirm the application opens Rafael Lima's own Person page.
-
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 -
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.
-
Confirm the visible Journey History belongs to Rafael.
Part B — Collaborators navigation remains self-only
- Use the normal application navigation and click:
Colaboradores
-
Confirm the page is presented as Rafael's own Collaborator/Journey self-service history rather than a Tenant-wide Collaborator catalog.
-
Confirm Rafael's current Journey is visible.
-
Confirm Rafael's closed historical Journey is visible.
-
Confirm the page does not list another Tenant member's Collaborator Journey, including:
João Ferreira
Camila Souza
-
Confirm no Tenant-wide Collaborator search/filter is offered that would let Rafael search for another Person.
-
Record the two Journey IDs shown here.
Current Journey ID: ______________________________________
Closed Journey ID: ______________________________________
-
Compare them with the IDs recorded in Test 01.
-
Confirm the two sets of IDs are identical.
Part C — Return from Collaborators to own Person
- Use the normal UI control that returns to Rafael's Person record, such as:
Minha Pessoa
or its currently rendered pt-BR equivalent.
- Confirm ERS returns to:
Rafael Lima
- 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
-
Return to Rafael's own Person page using the normal application navigation:
Peopleor switch locale first if the navigation is still displayed in Portuguese.
-
Use the language selector.
-
Select:
English (United States)
- Confirm the Person displayed remains:
Rafael Lima
- Confirm the selected Tenant remains:
Mineração Serra Dourada — DEMO
- Locate the section:
Journey History
- Confirm its Person-specific description reads:
Your current and closed Collaborator Journeys in this Tenant.
- Confirm exactly two Journey cards remain visible.
Current Journey
- Confirm the first Journey displays:
Current
- Confirm its dates are rendered in English locale format:
Started: Jul 30, 2026
Projected end: Oct 28, 2026
- Confirm the card contains:
Work assignment
Compensation
Open Journey
- Confirm its Journey ID is the same Current Journey ID recorded in Test 01.
Historical Journey
- Confirm the second Journey displays:
Closed
- Confirm its dates are rendered as:
Started: Feb 10, 2026
Closed: Jun 10, 2026
-
Confirm its Journey ID is the same Closed Journey ID recorded in Test 01.
-
Confirm both Journey records remain in the same newest-first order.
-
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
- 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
-
Click Open Journey on the historical Closed Journey.
-
Confirm the historical Rafael Journey opens successfully.
-
Confirm the Journey ID still matches the Closed Journey ID from Test 01.
-
Return to Rafael's Person page.
-
Switch back to:
Português (Brasil)
- 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.