40 lines
1.7 KiB
Markdown
40 lines
1.7 KiB
Markdown
## MODIFIED Requirements
|
|
|
|
### Requirement: Sitemap and robots
|
|
The site MUST provide:
|
|
- `sitemap.xml` enumerating indexable pages
|
|
- `robots.txt` that allows indexing of indexable pages
|
|
|
|
The sitemap MUST include the blog surface routes:
|
|
- `/blog`
|
|
- blog post detail routes
|
|
- blog page detail routes
|
|
- blog category listing routes
|
|
|
|
`robots.txt` MUST include a `Sitemap:` directive with an absolute URL to the sitemap (or sitemap index) and MUST NOT use a relative sitemap URL.
|
|
|
|
#### Scenario: Sitemap is available
|
|
- **WHEN** a crawler requests `/sitemap.xml`
|
|
- **THEN** the server returns an XML sitemap listing `/`, `/videos`, `/podcast`, `/about`, and `/blog`
|
|
|
|
#### Scenario: Blog URLs appear in sitemap
|
|
- **WHEN** WordPress content is available in the cache at build time
|
|
- **THEN** the generated sitemap includes the blog detail URLs for those items
|
|
|
|
#### Scenario: robots.txt includes absolute sitemap URL
|
|
- **WHEN** a crawler requests `/robots.txt`
|
|
- **THEN** the response includes a `Sitemap:` directive with an absolute URL (e.g., `https://<domain>/sitemap-index.xml`) that Lighthouse and crawlers can parse
|
|
|
|
## ADDED Requirements
|
|
|
|
### Requirement: Crawlable link markup
|
|
The site MUST NOT render anchor elements (`<a>`) without an `href` attribute.
|
|
|
|
Interactive UI that does not navigate MUST use a `<button>` element (or equivalent role) instead of a placeholder anchor.
|
|
|
|
If an anchor is used for navigation, it MUST include a valid `href` in the initial HTML (not only populated later by client-side JavaScript).
|
|
|
|
#### Scenario: Modal CTAs are crawlable
|
|
- **WHEN** the homepage is loaded and the media modal markup exists in the DOM
|
|
- **THEN** any CTA anchors within the modal have valid `href` values, or are not rendered as anchors until an `href` is available
|