Testing Guide
Overview
The Platform Engineering Playbook includes comprehensive automated testing to ensure all content is valid and error-free before being committed to the repository.
Test Suite
1. MDX/Markdown Validation (test:mdx
)
Validates all .md
and .mdx
files for:
- MDX Syntax Issues: Detects patterns that MDX interprets as JSX (e.g., less-than with numbers should use words like "under 5")
- Frontmatter Validation: Checks for required fields in blog posts (title, description, keywords)
- Internal Link Checking: Validates that internal links point to existing files
- Content Quality: Detects TODO/FIXME comments, trailing whitespace, multiple blank lines
- Code Blocks: Warns about code blocks without language specifications
Run manually:
npm run test:mdx
2. TypeScript Type Checking (typecheck
)
Validates TypeScript code for type errors in:
- Configuration files (
docusaurus.config.ts
,sidebars.ts
) - React components
- Type definitions
Run manually:
npm run typecheck
3. Docusaurus Build Test
Performs a full production build to catch:
- MDX compilation errors
- Missing dependencies
- Invalid configuration
- Broken imports
Run manually:
npm run build
4. Comprehensive Test Suite (test:all
)
Runs all tests plus additional checks:
- Large file detection (files >1MB)
- TODO/FIXME comment detection in staged files
- Podcast metadata integrity checks
Run manually:
npm run test:all
Pre-Commit Hooks
Pre-commit hooks automatically run before every commit to prevent broken code from being committed.
What Runs on Pre-Commit
- ✅ MDX/Markdown validation
- ✅ TypeScript type checking
- ✅ Docusaurus build test
If any check fails, the commit will be blocked until issues are fixed.
Skipping Pre-Commit Hooks
⚠️ Not recommended, but in emergencies:
git commit --no-verify -m "Your commit message"
Common Issues and Fixes
Issue: <
followed by number in markdown
Error:
Found 'less-than-5' which MDX interprets as JSX
Fix:
Replace less-than-symbol-5 with under 5
or less than 5
:
❌ Team size less-than-5 people
✅ Team size under 5 people
Issue: Missing frontmatter in blog posts
Warning:
Blog post missing required "title" in frontmatter
Fix: Add frontmatter at the top of the file:
---
title: "Your Post Title"
description: "Brief description for SEO"
keywords:
- keyword1
- keyword2
datePublished: "2025-10-06"
---
Issue: Broken internal links
Warning:
Potentially broken internal link: "/docs/technical/foo"
Fix:
- Verify the path exists
- Use correct relative or absolute paths
- Check for typos in file names
Issue: Code blocks without language
Warning:
Code block without language specification
Fix: Specify the language after the opening backticks:
❌ ```
code here
```
✅ ```bash
code here
```
Development Workflow
Standard Workflow
- Make your changes
- Stage files:
git add .
- Commit:
git commit -m "Your message"
- Pre-commit hooks run automatically
- If tests pass, commit succeeds
- If tests fail, fix issues and try again
Testing Before Commit
Run tests manually before committing to catch issues early:
# Quick validation
npm run test:mdx
# Full test suite
npm run test:all
CI/CD Integration
Future: These tests will also run in CI/CD pipelines (GitHub Actions) to:
- Validate pull requests
- Run on main branch
- Generate test reports
- Block merges if tests fail
Scripts Location
All test scripts are located in the scripts/
directory:
scripts/validate-mdx.js
- MDX/Markdown validatorscripts/test-all.sh
- Comprehensive test runner
Pre-commit hooks are in .husky/pre-commit
.
Troubleshooting
Hooks not running
If pre-commit hooks aren't running:
# Reinstall husky
npm run prepare
# Make hook executable
chmod +x .husky/pre-commit
Tests taking too long
The build step can take 30-60 seconds. For faster iteration:
# Run only MDX validation
npm run test:mdx
# Run only type checking
npm run typecheck
False positives
If the validator reports false positives (valid code flagged as errors):
- Check if it's a known MDX limitation
- Consider adjusting the validation rules in
scripts/validate-mdx.js
- Document the exception in this guide
Contributing Test Improvements
To improve the test suite:
- Edit validation logic in
scripts/validate-mdx.js
- Update pre-commit hook in
.husky/pre-commit
- Test your changes with
npm run test:all
- Update this documentation
- Submit a pull request