Skip to content

Commit

Permalink
ci: Adding the same logic between workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
rolljee committed Nov 6, 2024
1 parent c24ee64 commit c62ec80
Showing 1 changed file with 128 additions and 10 deletions.
138 changes: 128 additions & 10 deletions .github/workflows/push_dev.workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,29 +27,147 @@ jobs:
uses: ./.github/actions/lint

e2e-tests:
name: E2E Cypress tests
name: E2E Test - ${{ matrix.spec }}
needs: ['lint']
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
spec:
- login
- users
- roles
- profiles
- resetpassword
- JSONEditor
- chartView
- formView
- treeview
- '404'
- api-actions
- collections
- docs
- environments
- indexes
- search
- watch

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Start Kuzzle
run: docker compose up --wait
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Cypress run
uses: cypress-io/github-action@v6
- name: Cache Cypress binary
uses: actions/cache@v3
with:
build: npm run build
start: npm run preview
browser: chrome
path: ~/.cache/Cypress
key: cypress-binary-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}

- name: Install dependencies
run: npm ci

- name: Start Kuzzle
run: |
docker compose up --wait
docker ps
curl -v http://localhost:7512/_healthcheck
- name: Build
run: npm run build

- name: Start preview server
run: |
npx vite preview --host 0.0.0.0 --port 8080 &
echo $! > preview.pid
echo "Waiting for preview server..."
timeout=30
until curl -s http://localhost:8080 > /dev/null; do
sleep 1
timeout=$((timeout-1))
if [ $timeout -eq 0 ]; then
echo "Preview server failed to start"
exit 1
fi
done
echo "Preview server is ready!"
- name: Run Cypress test
id: cypress
run: |
START_TIME=$(date +%s)
- name: Upload screenshots
npx cypress run \
--spec "test/e2e/cypress/integration/single-backend/${{ matrix.spec }}.spec.js" \
--browser chrome \
--config baseUrl=http://localhost:8080,retries=2
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
echo "duration=$DURATION" >> $GITHUB_OUTPUT
- name: Cleanup
if: always()
run: |
if [ -f preview.pid ]; then
kill $(cat preview.pid) || true
fi
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: cypress-results-${{ matrix.spec }}
path: |
cypress/videos
cypress/screenshots
cypress/results
retention-days: 5

- name: Upload failure screenshots
if: failure()
uses: actions/upload-artifact@v4
with:
name: cypress-snapshots
name: cypress-snapshots-${{ matrix.spec }}
path: test/e2e/failed-test
retention-days: 5

test-summary:
name: Tests Summary
needs: [lint, e2e-tests]
if: always()
runs-on: ubuntu-24.04
steps:
- name: Create Summary
run: |
echo "# Test Results Summary 📊" >> $GITHUB_STEP_SUMMARY
echo "## Status" >> $GITHUB_STEP_SUMMARY
if [ "${{ needs.e2e-tests.result }}" = "success" ] && [ "${{ needs.lint.result }}" = "success" ]; then
echo "✅ All tests passed successfully!" >> $GITHUB_STEP_SUMMARY
else
echo "❌ Some tests failed" >> $GITHUB_STEP_SUMMARY
fi
echo "## Details" >> $GITHUB_STEP_SUMMARY
echo "- Lint: ${{ needs.lint.result }}" >> $GITHUB_STEP_SUMMARY
echo "- E2E Tests: ${{ needs.e2e-tests.result }}" >> $GITHUB_STEP_SUMMARY
# Set exit code based on test results
if [ "${{ needs.e2e-tests.result }}" = "failure" ]; then
echo "❌ E2E tests failed"
exit 1
elif [ "${{ needs.lint.result }}" = "failure" ]; then
echo "❌ Lint failed"
exit 1
else
echo "✅ All tests passed!"
fi
deploy-staging:
name: Deploy Admin Console to staging - next-console.kuzzle.io
Expand Down

0 comments on commit c62ec80

Please sign in to comment.