ci: add lock file sync validation to prevent confusing npm install failures #910
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: E2E Test | |
| on: | |
| pull_request: | |
| types: | |
| - opened | |
| - synchronize | |
| push: | |
| branches: | |
| - master | |
| jobs: | |
| e2e: | |
| name: Run Cypress E2E Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| - name: Validate lock file sync | |
| run: | | |
| echo "Validating package-lock.json is in sync with package.json..." | |
| if ! npm ci --dry-run > /dev/null 2>&1; then | |
| echo "" | |
| echo "ERROR: package-lock.json is out of sync with package.json" | |
| echo "" | |
| echo "This usually means package.json was modified but package-lock.json was not updated." | |
| echo "" | |
| echo "To fix this, run the following commands locally and commit the changes:" | |
| echo " 1. npm install" | |
| echo " 2. git add package-lock.json" | |
| echo " 3. git commit -m 'chore: update lock file'" | |
| echo " 4. git push" | |
| echo "" | |
| exit 1 | |
| fi | |
| echo "Lock file is in sync. Proceeding with E2E tests..." | |
| - name: Run Cypress E2E Tests | |
| uses: cypress-io/github-action@v6 | |
| with: | |
| install-command: npm ci | |
| start: npm start | |
| wait-on: 'http://127.0.0.1:3000' | |
| wait-on-timeout: 120 | |
| browser: chrome | |
| config: video=false | |
| - name: Upload Cypress Screenshots on Failure | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cypress-screenshots | |
| path: cypress/screenshots | |
| if-no-files-found: ignore |