-
Notifications
You must be signed in to change notification settings - Fork 5
164 lines (131 loc) · 3.88 KB
/
Copy pathtests.yml
File metadata and controls
164 lines (131 loc) · 3.88 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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
name: Tests
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
cache: true
- name: Check Go formatting
run: make fmt-check
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v7
with:
version: latest
args: --timeout=5m
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install Node.js dependencies
run: npm ci
- name: Lint frontend code
run: make lint-frontend
- name: Check CodeMirror bundle is up to date
run: |
make vendor-codemirror
if ! git diff --quiet -- web/static/vendor/codemirror/codemirror.js; then
echo "::error::CodeMirror bundle is out of date. Run 'make vendor-codemirror' and commit web/static/vendor/codemirror/codemirror.js."
git diff --stat -- web/static/vendor/codemirror/codemirror.js
exit 1
fi
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
cache: true
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: make deps
- name: Build Tailwind CSS
run: make tailwind
- name: Build mock ACP server
run: make build-mock-acp
- name: Run Go unit tests
run: make test-go
- name: Run JavaScript unit tests
run: make test-js
# NOTE: Integration tests use a mock ACP server.
# UI/Playwright tests are excluded - they require a real ACP server and browser.
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
needs: [lint, unit-tests]
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
cache: true
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: make deps
- name: Build Tailwind CSS
run: make tailwind
- name: Build mock ACP server
run: make build-mock-acp
- name: Build Mitto
run: make build
- name: Run integration tests
run: make test-integration
env:
MITTO_TEST_MODE: '1'
smoke-tests:
name: Smoke Tests (Docker)
runs-on: ubuntu-latest
needs: [lint, unit-tests]
steps:
- uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
cache: true
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install Node.js dependencies
run: npm ci
- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ hashFiles('package-lock.json') }}
- name: Install Playwright browsers
run: npx playwright install --with-deps chromium
- name: Run smoke tests
continue-on-error: true # Smoke tests are informational while we stabilize CI timing
run: make smoke-test
- name: Upload test results
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: smoke-test-results
path: tests/ui/test-results/
retention-days: 7