-
Notifications
You must be signed in to change notification settings - Fork 2
141 lines (108 loc) · 3.43 KB
/
test.yml
File metadata and controls
141 lines (108 loc) · 3.43 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
name: Test
on:
push:
branches: [main]
tags: ['v*']
pull_request:
jobs:
server-test:
name: Go Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.25"
cache-dependency-path: server/go.sum
- name: Install SQLite
run: sudo apt-get install -y gcc sqlite3 libsqlite3-dev
- name: Download dependencies
working-directory: ./server
run: go mod download
- name: Install swag
run: go install github.com/swaggo/swag/cmd/swag@latest
- name: Generate Swagger docs
working-directory: ./server
run: swag init -g cmd/server/main.go -o docs --parseDependency --parseInternal
- name: Vet
working-directory: ./server
run: go vet ./...
- name: Test
working-directory: ./server
run: go test ./... -v -count=1 -coverprofile=coverage.out
- name: Build
working-directory: ./server
run: CGO_ENABLED=1 go build -o bin/bonds-server cmd/server/main.go
web-test:
name: Frontend Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.25"
cache-dependency-path: server/go.sum
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install swag
run: go install github.com/swaggo/swag/cmd/swag@latest
- name: Generate Swagger docs
working-directory: ./server
run: swag init -g cmd/server/main.go -o docs --parseDependency --parseInternal
- name: Install dependencies
working-directory: ./web
run: bun install
- name: Generate API client
working-directory: ./web
run: bun run gen:api
- name: Lint
working-directory: ./web
run: bun run lint
- name: Unit tests
working-directory: ./web
run: bun run test
- name: Build
working-directory: ./web
run: bun run build
e2e-test:
name: E2E Tests
runs-on: ubuntu-latest
needs: [server-test, web-test]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.25"
cache-dependency-path: server/go.sum
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install SQLite
run: sudo apt-get install -y gcc sqlite3 libsqlite3-dev
- name: Download Go dependencies
working-directory: ./server
run: go mod download
- name: Install swag
run: go install github.com/swaggo/swag/cmd/swag@latest
- name: Generate Swagger docs
working-directory: ./server
run: swag init -g cmd/server/main.go -o docs --parseDependency --parseInternal
- name: Build server
working-directory: ./server
run: CGO_ENABLED=1 go build -o bin/bonds-server cmd/server/main.go
- name: Install frontend deps
working-directory: ./web
run: bun install
- name: Generate API client
working-directory: ./web
run: bun run gen:api
- name: Install Playwright
working-directory: ./web
run: bunx playwright install --with-deps chromium
- name: Run E2E tests
working-directory: ./web
run: bunx playwright test
env:
CI: true
timeout-minutes: 30