# 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