test: add comprehensive testing infrastructure
- Add npm test scripts for build, markdown, HTML, and link validation - Install markdownlint-cli for content quality checks - Install html-validate for HTML5 conformity validation - Add htmltest (via devbox) for internal/external link checking - Configure test rules in .htmltest.yml, .htmlvalidate.json, .markdownlint.json - Add GitHub Actions workflow for automated CI testing - Add TESTING.md documentation for test usage
This commit is contained in:
parent
d6f3d67724
commit
12e31ede91
6 changed files with 163 additions and 0 deletions
51
.github/workflows/test.yml
vendored
Normal file
51
.github/workflows/test.yml
vendored
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
name: Hugo Site Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Hugo
|
||||||
|
uses: peaceiris/actions-hugo@v3
|
||||||
|
with:
|
||||||
|
hugo-version: 'latest'
|
||||||
|
extended: true
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '24'
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
npm ci
|
||||||
|
go install github.com/wjdp/htmltest@latest
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
npm run test:build
|
||||||
|
npm run test:markdown
|
||||||
|
npm run test:html
|
||||||
|
|
||||||
|
- name: Run link checker
|
||||||
|
run: htmltest
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
|
- name: Upload htmltest results
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
if: always()
|
||||||
|
with:
|
||||||
|
name: htmltest-report
|
||||||
|
path: tmp/.htmltest/
|
||||||
10
.htmltest.yml
Normal file
10
.htmltest.yml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
DirectoryPath: "public"
|
||||||
|
CheckExternal: true
|
||||||
|
CheckInternalHash: true
|
||||||
|
IgnoreURLs:
|
||||||
|
- "^https://example\\.docsy\\.dev"
|
||||||
|
- "^https://example\\.com"
|
||||||
|
- "^http://localhost"
|
||||||
|
IgnoreDirectoryMissingTrailingSlash: true
|
||||||
|
IgnoreAltMissing: true
|
||||||
|
CheckDoctype: true
|
||||||
12
.htmlvalidate.json
Normal file
12
.htmlvalidate.json
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"extends": ["html-validate:recommended"],
|
||||||
|
"rules": {
|
||||||
|
"no-inline-style": "off",
|
||||||
|
"require-sri": "off",
|
||||||
|
"no-trailing-whitespace": "off",
|
||||||
|
"void-style": "off"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
"html5"
|
||||||
|
]
|
||||||
|
}
|
||||||
8
.markdownlint.json
Normal file
8
.markdownlint.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"default": true,
|
||||||
|
"MD013": false,
|
||||||
|
"MD033": false,
|
||||||
|
"MD041": false,
|
||||||
|
"MD024": { "siblings_only": true },
|
||||||
|
"MD025": { "front_matter_title": "" }
|
||||||
|
}
|
||||||
62
TESTING.md
Normal file
62
TESTING.md
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
# Hugo Site Testing
|
||||||
|
|
||||||
|
Dieses Projekt verwendet mehrere automatisierte Tests zur Qualitätssicherung.
|
||||||
|
|
||||||
|
## Verfügbare Tests
|
||||||
|
|
||||||
|
### 1. Build-Test
|
||||||
|
```bash
|
||||||
|
npm run test:build
|
||||||
|
```
|
||||||
|
Prüft ob die Hugo-Seite überhaupt baut und zeigt Warnungen/Fehler an.
|
||||||
|
|
||||||
|
### 2. Markdown-Linting
|
||||||
|
```bash
|
||||||
|
npm run test:markdown
|
||||||
|
```
|
||||||
|
Validiert Markdown-Dateien auf Stilprobleme und Best Practices.
|
||||||
|
|
||||||
|
### 3. HTML-Validierung
|
||||||
|
```bash
|
||||||
|
npm run test:html
|
||||||
|
```
|
||||||
|
Prüft die generierte HTML auf HTML5-Konformität.
|
||||||
|
|
||||||
|
### 4. Link-Checker
|
||||||
|
```bash
|
||||||
|
npm run test:links
|
||||||
|
```
|
||||||
|
Testet alle internen und externen Links auf Gültigkeit.
|
||||||
|
|
||||||
|
### Alle Tests ausführen
|
||||||
|
```bash
|
||||||
|
npm test
|
||||||
|
```
|
||||||
|
|
||||||
|
### Schnelle Tests (ohne Link-Check)
|
||||||
|
```bash
|
||||||
|
npm run test:quick
|
||||||
|
```
|
||||||
|
|
||||||
|
## Konfigurationsdateien
|
||||||
|
|
||||||
|
- `.htmltest.yml` - Link-Checker-Konfiguration
|
||||||
|
- `.htmlvalidate.json` - HTML-Validierungs-Regeln
|
||||||
|
- `.markdownlint.json` - Markdown-Linting-Regeln
|
||||||
|
|
||||||
|
## CI/CD Integration
|
||||||
|
|
||||||
|
GitHub Actions führt diese Tests automatisch bei jedem Push/PR aus:
|
||||||
|
- `.github/workflows/test.yml`
|
||||||
|
|
||||||
|
## Lokale Entwicklung
|
||||||
|
|
||||||
|
Vor dem Commit empfohlen:
|
||||||
|
```bash
|
||||||
|
npm run test:quick # Schnelle Tests
|
||||||
|
```
|
||||||
|
|
||||||
|
Vor dem Push:
|
||||||
|
```bash
|
||||||
|
npm test # Alle Tests inkl. Link-Check
|
||||||
|
```
|
||||||
20
package.json
Normal file
20
package.json
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"name": "ipceicis-developerframework",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"scripts": {
|
||||||
|
"build": "hugo --gc --minify",
|
||||||
|
"test:build": "hugo --gc --minify --logLevel info",
|
||||||
|
"test:links": "htmltest",
|
||||||
|
"test:html": "html-validate 'public/**/*.html'",
|
||||||
|
"test:markdown": "markdownlint 'content/**/*.md'",
|
||||||
|
"test": "npm run test:build && npm run test:markdown && npm run test:html && npm run test:links",
|
||||||
|
"test:quick": "npm run test:build && npm run test:markdown"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"autoprefixer": "^10.4.21",
|
||||||
|
"html-validate": "^10.1.2",
|
||||||
|
"markdownlint-cli": "^0.45.0",
|
||||||
|
"postcss": "^8.5.6",
|
||||||
|
"postcss-cli": "^11.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue