58 lines
3.1 KiB
Markdown
58 lines
3.1 KiB
Markdown
## MODIFIED Requirements
|
|
|
|
### Requirement: Public routes serve published content without authentication
|
|
|
|
The system SHALL expose the public routes of SPEC §5.1 plus the additive package detail route: `home` (`/`), `services.index` (`/servicos`), `packages.show` (`/pacotes/{slug}`), `portfolio.index` (`/portfolio`), `portfolio.show` (`/portfolio/{slug}`), `about` (`/sobre`), `contact` (`/contato`) and `privacy` (`/privacidade`). Every public route MUST respond without authentication and MUST NOT expose unpublished content, internal fields, or internal notes (SPEC §19).
|
|
|
|
#### Scenario: Guest reaches every public route
|
|
|
|
- **WHEN** an unauthenticated visitor requests any public route listed above that has published content where required
|
|
- **THEN** the response status MUST be 200
|
|
- **AND** no redirect to `/admin/login` MUST occur
|
|
|
|
#### Scenario: Unpublished content is invisible
|
|
|
|
- **GIVEN** a service, portfolio case, wedding modality, or testimonial with `published_at` null
|
|
- **WHEN** a visitor loads the corresponding public listing or home section
|
|
- **THEN** the record MUST NOT appear in the rendered output
|
|
|
|
#### Scenario: Unpublished case detail returns 404
|
|
|
|
- **GIVEN** a portfolio case saved as draft
|
|
- **WHEN** a visitor requests `/portfolio/{slug}` for that case
|
|
- **THEN** the response status MUST be 404
|
|
|
|
#### Scenario: Unpublished wedding modality detail returns 404
|
|
|
|
- **GIVEN** a wedding modality saved as draft
|
|
- **WHEN** a visitor requests `/pacotes/{slug}` for that modality
|
|
- **THEN** the response status MUST be 404
|
|
|
|
#### Scenario: Published case detail becomes reachable
|
|
|
|
- **GIVEN** a portfolio case saved as draft
|
|
- **WHEN** an admin fills the required fields and publishes the case
|
|
- **THEN** `/portfolio/{slug}` MUST respond 200
|
|
- **AND** the case MUST appear in the `/portfolio` listing
|
|
|
|
#### Scenario: Published wedding modality detail becomes reachable
|
|
|
|
- **GIVEN** a wedding modality saved as draft with required detail fields
|
|
- **WHEN** an admin publishes the modality
|
|
- **THEN** `/pacotes/{slug}` MUST respond 200
|
|
|
|
## ADDED Requirements
|
|
|
|
### Requirement: Wedding modality detail uses Heritage Editorial public layout
|
|
The system SHALL render `/pacotes/{slug}` with the public layout (header/footer shared), Heritage Editorial tokens, and section order: package hero (eyebrow, bipartite title, lead, outline secondary actions as designed, hero media), dark benefit strip, included-items grid, audience split (media + checklist), final conversion CTA. The page MUST be server-rendered Blade without a public Livewire dependency. Missing optional images MUST NOT break the page (omit or degrade the media slot).
|
|
|
|
#### Scenario: Detail page section order
|
|
- **GIVEN** a published modality with complete detail content
|
|
- **WHEN** a visitor loads `/pacotes/{slug}`
|
|
- **THEN** the document MUST include the hero, benefits, included items, audience and final CTA regions in that order
|
|
- **AND** MUST use the public layout chrome
|
|
|
|
#### Scenario: Detail page has no console errors
|
|
- **WHEN** the modality detail is loaded in a real browser at desktop and mobile viewports
|
|
- **THEN** the browser console MUST contain no JavaScript errors
|