174 lines
4.1 KiB
Markdown
174 lines
4.1 KiB
Markdown
# Search Functionality Tests
|
|
|
|
This directory contains Playwright end-to-end tests for the search functionality in TinaDocs.
|
|
|
|
## Overview
|
|
|
|
The search tests verify that the Pagefind-based search functionality works correctly across different scenarios:
|
|
|
|
- Basic search functionality
|
|
- Search result display
|
|
- Navigation to search results
|
|
- Mobile responsiveness
|
|
- Performance testing
|
|
- Error handling
|
|
|
|
## Test Files
|
|
|
|
- `search.spec.ts` - Comprehensive search tests with detailed scenarios
|
|
- `search-simplified.spec.ts` - Simplified tests using helper utilities
|
|
- `utils/search-helpers.ts` - Helper functions for search testing
|
|
|
|
## Running Tests
|
|
|
|
### Local Development
|
|
|
|
1. **Start the development server:**
|
|
```bash
|
|
pnpm dev
|
|
```
|
|
|
|
2. **Run tests with UI (for debugging):**
|
|
```bash
|
|
pnpm test:ui
|
|
```
|
|
|
|
### Preview/Production Testing
|
|
|
|
1. **Test against a specific URL:**
|
|
```bash
|
|
PREVIEW_URL=https://your-preview-url.com pnpm test
|
|
```
|
|
|
|
2. **Run all tests:**
|
|
```bash
|
|
pnpm test
|
|
```
|
|
|
|
## Test Scenarios
|
|
|
|
### Basic Functionality
|
|
- ✅ Search input field is visible
|
|
- ✅ Search returns results for existing content
|
|
- ✅ Search shows "No Llamas Found" for non-existent content
|
|
- ✅ Search clears when clicking outside
|
|
- ✅ Empty search input is handled gracefully
|
|
- ✅ Multiple rapid searches work correctly
|
|
|
|
### Technical Verification
|
|
- ✅ Pagefind files are accessible (`/_next/static/pagefind/`)
|
|
- ✅ Search completes within reasonable time (< 3 seconds)
|
|
- ✅ Mobile viewport works correctly
|
|
|
|
### Performance
|
|
- ✅ Search performance is measured and reported
|
|
|
|
## GitHub Actions Integration
|
|
|
|
The tests are automatically run in GitHub Actions on:
|
|
|
|
1. **Pull Requests** - Tests run against Vercel preview deployments
|
|
2. **Manual Workflow** - Can test against any preview URL
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
- `BASE_URL` - Base URL for testing (defaults to `http://localhost:3000`)
|
|
- `PREVIEW_URL` - Preview URL for testing
|
|
|
|
### Playwright Configuration
|
|
|
|
See `playwright.config.ts` for:
|
|
- Browser configurations (Chrome)
|
|
- Test timeouts and retries
|
|
- Screenshot and video capture settings
|
|
- Report generation
|
|
|
|
## Debugging
|
|
|
|
### View Test Reports
|
|
|
|
After running tests, view the HTML report:
|
|
```bash
|
|
npx playwright show-report
|
|
```
|
|
|
|
### Debug Individual Tests
|
|
|
|
1. Add `test.only()` to run a single test
|
|
2. Use `--debug` flag for step-by-step debugging
|
|
3. Use `--headed` to see the browser in action
|
|
|
|
### Common Issues
|
|
|
|
1. **Search not working locally:**
|
|
- Ensure Pagefind index is generated: `pnpm build-local-pagefind`
|
|
- Check if `/_next/static/pagefind/` files exist
|
|
|
|
2. **Tests timing out:**
|
|
- Increase timeout in `playwright.config.ts`
|
|
- Check if the server is running and accessible
|
|
|
|
3. **Search results not appearing:**
|
|
- Verify search input selector matches the actual component
|
|
- Check if Pagefind files are being served correctly
|
|
|
|
## Test Data
|
|
|
|
The tests use predefined search terms that should exist in your documentation:
|
|
|
|
```typescript
|
|
const KNOWN_CONTENT = {
|
|
searchTerms: [
|
|
'TinaDocs',
|
|
'documentation',
|
|
'search',
|
|
'API',
|
|
'TinaCMS',
|
|
'deployment',
|
|
'theming',
|
|
'components'
|
|
]
|
|
};
|
|
```
|
|
|
|
**Important:** Update these terms based on your actual content to ensure tests pass reliably.
|
|
|
|
## Contributing
|
|
|
|
When adding new search features:
|
|
|
|
1. Add corresponding tests to `search.spec.ts`
|
|
2. Update helper functions in `search-helpers.ts` if needed
|
|
3. Update test data with relevant search terms
|
|
4. Ensure tests pass locally before committing
|
|
|
|
## Troubleshooting
|
|
|
|
### Search Index Issues
|
|
|
|
If search isn't working, check:
|
|
|
|
1. **Build process:**
|
|
```bash
|
|
pnpm build-local-pagefind
|
|
```
|
|
|
|
2. **Pagefind files:**
|
|
- `/_next/static/pagefind/pagefind.js`
|
|
- `/_next/static/pagefind/pagefind-index.json`
|
|
|
|
3. **Content indexing:**
|
|
- Ensure content has `data-pagefind-body` attributes
|
|
- Check if content is being built correctly
|
|
|
|
### Test Failures
|
|
|
|
Common test failure reasons:
|
|
|
|
1. **Selector changes** - Update selectors in tests
|
|
2. **Content changes** - Update test data with new content
|
|
3. **Timing issues** - Increase wait times or add better wait conditions
|
|
4. **Environment issues** - Check if server is running and accessible
|