fix: unset NODE_ENV in e2e job so devDependencies install
npm treats NODE_ENV=production as --omit=dev, so `npm install` in the frontend-e2e job skipped typescript and the build died on `tsc: not found`. The same env var would have stripped vite and @playwright/test from the frontend install, and flipped the session cookie to Secure on a run served over plain http. The reported summarize crash was a symptom: the job aborted before Playwright ran, but Summarize is `if: always()` and threw ENOENT on the missing JSON, burying the real failure. Both summarize scripts now report the missing file and exit 0 -- the job still fails via its own step. Also split build from start, replaced `sleep 3` with a readiness poll against /api/config, and dump the backend log when e2e fails. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -107,7 +107,10 @@ jobs:
|
||||
PORT: 3000
|
||||
DEMO_MODE: 'true'
|
||||
UPLOADS_DIR: /tmp/redefined-uploads
|
||||
NODE_ENV: production
|
||||
# NODE_ENV is deliberately unset: `npm install` omits devDependencies when
|
||||
# NODE_ENV=production, which strips tsc/vite/@playwright/test and breaks the
|
||||
# build. It would also flip the session cookie to Secure, which the e2e run
|
||||
# serves over plain http.
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
@@ -125,12 +128,24 @@ jobs:
|
||||
run: node migrate.js up
|
||||
working-directory: backend
|
||||
|
||||
- name: Build and start backend
|
||||
- name: Build backend
|
||||
run: npm run build
|
||||
working-directory: backend
|
||||
|
||||
- name: Start backend
|
||||
run: |
|
||||
mkdir -p /tmp/redefined-uploads
|
||||
npm run build
|
||||
node dist/server.js &
|
||||
sleep 3
|
||||
node dist/server.js > /tmp/backend.log 2>&1 &
|
||||
for i in $(seq 1 30); do
|
||||
if node -e "require('http').get('http://localhost:3000/api/config', r => process.exit(r.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))"; then
|
||||
echo "Backend ready after ${i}s"
|
||||
exit 0
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
echo "Backend did not become ready within 30s:"
|
||||
cat /tmp/backend.log
|
||||
exit 1
|
||||
working-directory: backend
|
||||
|
||||
- name: Install frontend deps
|
||||
@@ -149,6 +164,10 @@ jobs:
|
||||
run: npx playwright test --reporter=json
|
||||
working-directory: frontend
|
||||
|
||||
- name: Backend log
|
||||
if: steps.e2e.outcome == 'failure'
|
||||
run: cat /tmp/backend.log
|
||||
|
||||
- name: Summarize
|
||||
if: always()
|
||||
run: node scripts/summarize-playwright.js frontend/playwright-results.json
|
||||
|
||||
Reference in New Issue
Block a user