-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (112 loc) · 3.24 KB
/
test.yml
File metadata and controls
136 lines (112 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: Test Suite
on:
pull_request:
branches: [main, develop]
push:
branches: [main, develop]
jobs:
unit-and-integration-tests:
name: Unit & Integration Tests
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
matrix:
node-version: [20.x]
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: Run linter
continue-on-error: true
run: npm run lint
- name: Run type check
continue-on-error: true
run: npm run type-check
- name: Run unit tests
continue-on-error: true
run: npm run test:unit
env:
NODE_ENV: test
- name: Run integration tests
continue-on-error: true
run: npm run test:integration
env:
NODE_ENV: test
- name: Generate coverage report
continue-on-error: true
run: npm run test:coverage
env:
NODE_ENV: test
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ./coverage/lcov.info
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
- name: Upload coverage artifacts
uses: actions/upload-artifact@v4
with:
name: coverage-reports
path: |
coverage/
test-results/
retention-days: 30
e2e-tests:
name: E2E Tests
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
project: [chromium]
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.project }}
- name: Run E2E tests
continue-on-error: true
run: npm run test:e2e -- --project=${{ matrix.project }}
env:
NODE_ENV: test
CI: true
- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report-${{ matrix.project }}
path: playwright-report/
retention-days: 30
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ matrix.project }}
path: test-results/
retention-days: 30
test-summary:
name: Test Summary
runs-on: ubuntu-latest
needs: [unit-and-integration-tests, e2e-tests]
if: always()
steps:
- name: Post summary
run: |
echo "## Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- Unit & Integration Tests: ${{ needs.unit-and-integration-tests.result }}" >> $GITHUB_STEP_SUMMARY
echo "- E2E Tests: ${{ needs.e2e-tests.result }}" >> $GITHUB_STEP_SUMMARY