98 lines
2.6 KiB
Markdown
98 lines
2.6 KiB
Markdown
# Resume Site Tests
|
|
|
|
This directory contains tests for the resume site.
|
|
|
|
## Directory Structure
|
|
|
|
- `unit/`: Unit tests for JavaScript files and other components
|
|
- `integration/`: Integration tests that test components working together
|
|
- `e2e/`: End-to-end tests that simulate user interactions
|
|
- `*.test.js`, `*.spec.js`: Playwright test files
|
|
- `lighthouse.js`: Lighthouse performance and accessibility tests
|
|
- `serve.js`: Simple Node.js server for testing
|
|
- `server.js`: Alternative server implementation
|
|
- `pre-test-setup.sh`: Script to set up the test environment, including updating CSP hashes
|
|
|
|
## Running Tests
|
|
|
|
To run all tests:
|
|
|
|
```bash
|
|
./run-all-tests.sh
|
|
```
|
|
|
|
Or using npm:
|
|
|
|
```bash
|
|
npm test
|
|
```
|
|
|
|
This will:
|
|
1. Run the pre-test setup script to update CSP hashes
|
|
2. Check if the server is running
|
|
3. Run all shell script tests
|
|
4. Run Playwright tests if available
|
|
5. Run Lighthouse tests
|
|
|
|
## Content Security Policy (CSP) Testing
|
|
|
|
The CSP hash update process is an important part of the testing framework. It ensures that:
|
|
|
|
1. All JavaScript and CSS files have integrity hashes
|
|
2. All inline styles have proper CSP hashes
|
|
3. The Caddyfile and HTML files have the correct CSP headers/meta tags
|
|
|
|
The `pre-test-setup.sh` script runs the `update-csp-hashes.sh` script to update all CSP hashes before running the tests. This ensures that any changes to the website are properly reflected in the CSP hashes.
|
|
|
|
The `csp-hash-test.sh` integration test checks if the CSP hash update process is working properly by verifying that:
|
|
|
|
- CSP headers are present in the response
|
|
- CSP headers contain the required directives
|
|
- JavaScript and CSS files have integrity attributes
|
|
- HTML files have CSP meta tags
|
|
|
|
## Running Specific Tests
|
|
|
|
### JavaScript Tests
|
|
|
|
```bash
|
|
npm run test:js
|
|
```
|
|
|
|
### Lighthouse Tests
|
|
|
|
```bash
|
|
npm run test:lighthouse
|
|
```
|
|
|
|
### Starting the Test Server
|
|
|
|
```bash
|
|
npm run serve
|
|
```
|
|
|
|
## Adding New Tests
|
|
|
|
### Shell Script Tests
|
|
|
|
Add new test scripts to the appropriate directory:
|
|
- `unit/`: For unit tests
|
|
- `integration/`: For integration tests
|
|
- `e2e/`: For end-to-end tests
|
|
|
|
Shell script tests should:
|
|
- Be executable bash scripts
|
|
- Return exit code 0 for success, non-zero for failure
|
|
- For integration and e2e tests, accept a base URL as the first argument
|
|
|
|
### Playwright Tests
|
|
|
|
Add new Playwright tests with the `.test.js` or `.spec.js` extension in the tests directory.
|
|
|
|
## Test Requirements
|
|
|
|
As per the project guidelines, all tests must:
|
|
- Pass for both mobile and desktop viewports
|
|
- Maintain Lighthouse scores: 100/100 for accessibility and SEO
|
|
- Include meaningful assertions, not placeholders
|