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
1 change: 1 addition & 0 deletions contracts/lib/self
Submodule self added at 03e471
211 changes: 211 additions & 0 deletions next-frontend/.github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
name: E2E Tests

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]

jobs:
e2e-tests:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [18.x, 20.x]
browser: [chromium, firefox, webkit]

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

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Install Playwright browsers
run: npx playwright install --with-deps ${{ matrix.browser }}

- name: Build application
run: npm run build
env:
NEXT_PUBLIC_TEST_MODE: true
NEXT_PUBLIC_MOCK_CONTRACTS: true

- name: Run Playwright tests
run: npx playwright test --project=${{ matrix.browser }}
env:
CI: true
NEXT_PUBLIC_TEST_MODE: true
NEXT_PUBLIC_E2E_TESTING: true

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-results-${{ matrix.browser }}-node-${{ matrix.node-version }}
path: |
test-results/
playwright-report/
playbackwright-report/
retention-days: 30

security-tests:
runs-on: ubuntu-latest
needs: e2e-tests

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Run security-focused E2E tests
run: npx playwright test tests/security/
env:
CI: true
NEXT_PUBLIC_TEST_MODE: true

performance-tests:
runs-on: ubuntu-latest
needs: e2e-tests

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Install Playwright browsers
run: npx playwright install --with-deps

- name: Run performance E2E tests
run: npx playwright test --project=chromium --grep="performance|load"
env:
CI: true
NEXT_PUBLIC_TEST_MODE: true

- name: Upload performance results
uses: actions/upload-artifact@v4
if: always()
with:
name: performance-results
path: |
test-results/
playwright-report/
retention-days: 7

mobile-tests:
runs-on: ubuntu-latest
needs: e2e-tests

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Install Playwright browsers
run: npx playwright install --with-deps

- name: Run mobile E2E tests
run: npx playwright test --project="Mobile Chrome" --project="Mobile Safari"
env:
CI: true
NEXT_PUBLIC_TEST_MODE: true

cross-browser-tests:
runs-on: ubuntu-latest
needs: e2e-tests

strategy:
matrix:
browser: [chromium, firefox, webkit]

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

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Install Playwright browsers
run: npx playwright install --with-deps ${{ matrix.browser }}

- name: Run cross-browser compatibility tests
run: npx playwright test --project=${{ matrix.browser }} --grep="cross-browser|compatibility"
env:
CI: true
NEXT_PUBLIC_TEST_MODE: true

test-summary:
runs-on: ubuntu-latest
needs: [e2e-tests, security-tests, performance-tests, mobile-tests, cross-browser-tests]
if: always()

steps:
- name: Download all test results
uses: actions/download-artifact@v4
with:
path: all-results/

- name: Generate test summary
run: |
echo "# E2E Test Results Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

# Check if tests passed
if [ -f "all-results/playwright-report/index.html" ]; then
echo "✅ E2E tests completed successfully" >> $GITHUB_STEP_SUMMARY
echo "- Cross-browser testing passed" >> $GITHUB_STEP_SUMMARY
echo "- Security tests completed" >> $GITHUB_STEP_SUMMARY
echo "- Performance tests executed" >> $GITHUB_STEP_SUMMARY
echo "- Mobile compatibility verified" >> $GITHUB_STEP_SUMMARY
else
echo "❌ E2E tests failed" >> $GITHUB_STEP_SUMMARY
echo "Please check the test artifacts for detailed failure information." >> $GITHUB_STEP_SUMMARY
fi

echo "" >> $GITHUB_STEP_SUMMARY
echo "## Test Artifacts" >> $GITHUB_STEP_SUMMARY
echo "- [Playwright Report](./artifacts)" >> $GITHUB_STEP_SUMMARY
echo "- [Test Results](./test-results/)" >> $GITHUB_STEP_SUMMARY

- name: Upload all artifacts
uses: actions/upload-artifact@v4
with:
name: all-test-results
path: all-results/
retention-days: 30
Loading