Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions .github/workflows/ci-e2e.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: E2E Tests

on:
workflow_call:

jobs:
check-changes:
name: Check web module changes
runs-on: ubuntu-latest
timeout-minutes: 5
outputs:
web_changed: ${{ steps.filter.outputs.web }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
id: filter
with:
filters: |
web:
- 'gitnexus-web/**'

e2e:
name: e2e (chromium)
needs: check-changes
if: needs.check-changes.result == 'success' && needs.check-changes.outputs.web_changed == 'true'
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 20

Copilot AI Mar 24, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as the typecheck workflow: this uses node-version: 20, but the gitnexus-web lockfile includes packages that require Node ^20.19.0+. Pinning to a specific patch (e.g. 20.19.0) or moving to 22 would make E2E runs more reproducible and aligned with the dependency engines.

Suggested change
node-version: 20
node-version: 20.19.0

Copilot uses AI. Check for mistakes.
cache: npm
cache-dependency-path: gitnexus-web/package-lock.json

- name: Install frontend dependencies
run: npm ci
working-directory: gitnexus-web

- name: Install Playwright browsers
run: npx playwright install --with-deps chromium
working-directory: gitnexus-web

- name: Install backend dependencies
run: npm ci
working-directory: gitnexus

- name: Build backend
run: npm run build
working-directory: gitnexus

- name: Analyze repository (index for backend)
run: |
node gitnexus/dist/cli/index.js analyze || true
if [ ! -d ".gitnexus" ]; then
echo "::error::No .gitnexus index created"
exit 1
fi

- name: Start backend server
run: node dist/cli/index.js serve &
working-directory: gitnexus

- name: Wait for backend readiness
run: npx wait-on http://localhost:4747/api/repos --timeout 30000
working-directory: gitnexus-web

- name: Start Vite dev server
run: npm run dev &
working-directory: gitnexus-web

- name: Wait for Vite dev server
run: npx wait-on http://localhost:5173 --timeout 30000
working-directory: gitnexus-web

- name: Run E2E tests
run: npx playwright test
working-directory: gitnexus-web
env:
E2E: '1'

- name: Upload test results
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: e2e-results
path: |
gitnexus-web/test-results/
gitnexus-web/playwright-report/
retention-days: 5
15 changes: 15 additions & 0 deletions .github/workflows/ci-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,18 @@ jobs:
- uses: ./.github/actions/setup-gitnexus
- run: npx tsc --noEmit
working-directory: gitnexus

typecheck-web:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 20

Copilot AI Mar 24, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow pins node-version: 20, but gitnexus-web's current dependency tree (per package-lock.json, e.g. jsdom@29) requires Node ^20.19.0+. To avoid unexpected EBADENGINE warnings/failures as runner images change, consider pinning to 20.19.0 (or 22.x) here to match the actual minimum runtime required by the lockfile.

Suggested change
node-version: 20
node-version: 20.19.0

Copilot uses AI. Check for mistakes.
cache: npm
cache-dependency-path: gitnexus-web/package-lock.json
- run: npm ci
working-directory: gitnexus-web
- run: npx tsc -b --noEmit
working-directory: gitnexus-web
Loading
Loading