feat: site languages, setup and site URL settings

This commit is contained in:
Florian Sylvain committed 2026-11-01 22:13:02 +01:00
1 parent 0806733d5c
commit d9158025d4
106 files changed
+10184 -56

No files matched your search

@@ -0,0 +1,42 @@
Feature: The visual checker covers the Localization board
web/visual discovers the Localization board, its groups, its 1024 px
captures and its fixtures, so that this slice and every later localization
slice is gated against docs/design.
Background:
Given the board is docs/design/source/RenewCMS Screens Localization.dc.html with frame LocaleFrame
And the state tables are docs/design/screens/localization-*.md and docs/design/states.md
And task visual:check is a hard gate: every capture within 10 %, no unmocked /v1 call, no size mismatch, no exception without the user's approval
And no threshold is changed
And nothing in docs/design is edited
Scenario: Groups are discovered from the screen file
When task visual:check runs for "localization-site-languages"
Then the checker reads the visual reference line and the three groups L1, L1b and L2
And it lists their 25, 9 and 7 states by their loc.* ids
And a state with no setup in web/visual fails the run
Scenario Outline: Capture sizes
Given a state lists <sizes> in its Sizes column
Then the checker captures the board frame and the SPA at <widths>, in light and dark
And a state with 1440 and 390 only gets no 1024 capture
Examples:
| sizes | widths |
| 1440, 390 | 1440x900 and 390x844 |
| 1440, 1024, 390 | 1440x900, 1024x? and 390x844 |
Scenario: Selecting frames
Given LocaleFrame is selected by LocaleFrame{s:{v:"sl",x:"multi"}}
Then the checker renders that state in the board and captures its frame
And a state is addressed by its loc.* id, not by the legacy name
Scenario: Fixtures and mocks
Then every state's setup uses the matching fixture of locale-fixtures.js (Journal, Atelier, Archive, Notes, Gallery)
And the mocked /v1 responses are derived from those fixtures
And the board's it, ja and zh-Hans tags are used by mocks only
And states that depend on the current date or time are skipped as clock-sensitive and nothing else is
Scenario: Existing screens are unaffected
When task visual:check runs for any screen that existed before
Then its states, sizes and verdicts are the same as before