Fix all openspec validation errors (45/45 pass)
Main specs (7): Converted from delta format (## ADDED/MODIFIED) to proper main spec format (## Purpose + ## Requirements) Changes (3): Added missing spec files for e2e-test-reorganization, journal-poi-details, and mobile-nearby-sync Mobile testing: Added missing scenario for "No Vitest" requirement Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
8682ec8140
commit
572d240ed1
11 changed files with 94 additions and 7 deletions
|
|
@ -0,0 +1,16 @@
|
|||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Planner E2E test infrastructure
|
||||
The Planner E2E test suite SHALL mock BRouter by default, split tests by feature file, and provide shared test helpers for common setup patterns.
|
||||
|
||||
#### Scenario: BRouter mocked by default
|
||||
- **WHEN** a Planner E2E test runs
|
||||
- **THEN** BRouter is mocked via a shared Playwright fixture unless the test explicitly opts into the real BRouter endpoint
|
||||
|
||||
#### Scenario: Tests split by feature file
|
||||
- **WHEN** the Planner E2E test suite is executed
|
||||
- **THEN** tests are organized into focused files by feature area (session, routing, multi-day, overlays, coloring) instead of a single monolithic test file
|
||||
|
||||
#### Scenario: Shared test helpers
|
||||
- **WHEN** a Planner E2E test needs to create a session and wait for connection
|
||||
- **THEN** it uses a shared helper function that handles session creation, navigation, and waiting for the connected state
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: POI metadata on route detail waypoints
|
||||
The Journal route detail page SHALL display POI metadata (phone, address, website, opening hours) for waypoints that have associated OpenStreetMap POI data.
|
||||
|
||||
#### Scenario: POI metadata displayed on waypoints
|
||||
- **WHEN** a route detail page is loaded and a waypoint has POI metadata from the Planner
|
||||
- **THEN** the waypoint displays the POI name, icon, and category alongside its coordinates
|
||||
|
||||
#### Scenario: Phone, address, and website shown
|
||||
- **WHEN** a waypoint has POI metadata including phone, address, or website
|
||||
- **THEN** those details are shown in the waypoint detail section with appropriate links (tel: for phone, mailto: or https: for website)
|
||||
|
||||
#### Scenario: Waypoints without POI data display normally
|
||||
- **WHEN** a waypoint on the route detail page has no associated POI metadata
|
||||
- **THEN** the waypoint displays as before with coordinates and name only, with no empty POI sections shown
|
||||
|
|
@ -24,3 +24,7 @@ The mobile app SHALL use Maestro for end-to-end flow testing on real/emulated de
|
|||
|
||||
### Requirement: No Vitest for mobile
|
||||
Vitest SHALL NOT be used for the mobile app. React Native Testing Library has incomplete Vitest support — Jest with jest-expo is the stable, Expo-recommended choice.
|
||||
|
||||
#### Scenario: Vitest not used
|
||||
- **WHEN** unit or component tests are added to the mobile app
|
||||
- **THEN** they use Jest with jest-expo preset, not Vitest
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
## ADDED Requirements
|
||||
|
||||
### Requirement: BLE nearby route sync
|
||||
The mobile app SHALL discover nearby devices via Bluetooth LE and transfer route data (waypoints + GPX geometry) directly between devices without internet connectivity.
|
||||
|
||||
#### Scenario: BLE device discovery
|
||||
- **WHEN** a user enables nearby sync on the route detail screen
|
||||
- **THEN** the app advertises via BLE and discovers other nearby devices that have the same route open
|
||||
|
||||
#### Scenario: Route transfer
|
||||
- **WHEN** a nearby device with a newer version of the route is discovered
|
||||
- **THEN** the user is prompted to accept the update and the route data is transferred via chunked BLE messages
|
||||
|
||||
#### Scenario: Version check before sync
|
||||
- **WHEN** two devices discover each other via BLE
|
||||
- **THEN** they exchange route version numbers and only the device with the older version is offered the update
|
||||
|
||||
### Requirement: QR waypoint sharing
|
||||
The mobile app SHALL support sharing waypoint coordinates via QR code as a fallback when BLE is unavailable or impractical.
|
||||
|
||||
#### Scenario: QR waypoint sharing
|
||||
- **WHEN** a user taps "Share via QR" on a route
|
||||
- **THEN** a QR code is generated containing compressed waypoint coordinates that another device can scan to receive the waypoints
|
||||
|
|
@ -1,4 +1,8 @@
|
|||
## ADDED Requirements
|
||||
## Purpose
|
||||
|
||||
Bidirectional interaction between the map and elevation chart, enabling users to explore route elevation by hovering, clicking, and dragging on either surface.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Route hover highlights elevation chart
|
||||
Hovering over the route polyline on the map SHALL highlight the corresponding position on the elevation chart.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
## ADDED Requirements
|
||||
## Purpose
|
||||
|
||||
Renderer-agnostic map configuration data (tile sources, route color palettes, POI categories) usable by any rendering engine without DOM or library dependencies.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Renderer-agnostic map definitions
|
||||
The `@trails-cool/map-core` package SHALL provide map configuration data usable by any rendering engine.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
## MODIFIED Requirements
|
||||
## Purpose
|
||||
|
||||
Map tile layer display with base layer switching and independent overlay tile layers in the Planner.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Base layer switching
|
||||
The map SHALL support switching between multiple base tile layers, and SHALL support toggling overlay tile layers independently.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
## ADDED Requirements
|
||||
## Purpose
|
||||
|
||||
Multi-day route planning with overnight waypoint markers, per-day statistics, day-aware UI, and day structure preserved in GPX exports.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Overnight waypoint markers
|
||||
Any waypoint SHALL be toggleable as an overnight stop, creating day boundaries in the route.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
## ADDED Requirements
|
||||
## Purpose
|
||||
|
||||
POI overlay panel for toggling OpenStreetMap point-of-interest categories on the Planner map, with viewport-scoped loading, caching, and profile-aware defaults.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: POI overlay panel
|
||||
The Planner SHALL provide a collapsible panel for toggling POI categories on the map.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
## ADDED Requirements
|
||||
## Purpose
|
||||
|
||||
Tile-based map overlays (hillshading, Waymarked Trails cycling/hiking/MTB routes) with support for multiple simultaneous overlays, proper attribution, and profile-aware auto-enabling.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Hillshading overlay
|
||||
The Planner map SHALL offer a hillshading tile overlay that visualizes terrain relief.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
## MODIFIED Requirements
|
||||
## Purpose
|
||||
|
||||
Real-time collaborative editing sessions in the Planner using Yjs CRDTs, synchronizing waypoints, route options, and overlay preferences across all connected participants.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Real-time collaborative editing
|
||||
The Planner SHALL synchronize waypoint edits, route options, and overlay preferences across all connected participants in real-time using Yjs CRDTs.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue