-
Notifications
You must be signed in to change notification settings - Fork 1
140 lines (111 loc) · 3.41 KB
/
Copy pathci.yml
File metadata and controls
140 lines (111 loc) · 3.41 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: CI
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
workflow:
name: Workflow lint
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Run actionlint
env:
ACTIONLINT_VERSION: "1.7.12"
run: |
curl -fsSL "https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz" -o actionlint.tar.gz
tar -xzf actionlint.tar.gz actionlint
./actionlint
backend:
name: Backend tests
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
cache-dependency-path: requirements.txt
- name: Install backend dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pip install ruff==0.15.20
- name: Run Ruff
run: python -m ruff check backend tests
- name: Run backend unit tests
env:
PYTHONPATH: .
run: python -m pytest -q
- name: Verify native SeekDB retrieval
run: timeout 120s python scripts/verify_seekdb_native.py
- name: Compile backend modules
run: python -m compileall -q backend
frontend:
name: Frontend tests and build
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Install frontend dependencies
working-directory: frontend
run: npm ci
- name: Run frontend lint
working-directory: frontend
run: npm run lint
- name: Run frontend unit tests
working-directory: frontend
run: npm test -- --run
- name: Run frontend typecheck
working-directory: frontend
run: npm run typecheck
- name: Build frontend
working-directory: frontend
run: npm run build
frontend-e2e:
name: Frontend Playwright smoke
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Install frontend dependencies
working-directory: frontend
run: npm ci
- name: Install Playwright browser
working-directory: frontend
run: npx playwright install --with-deps chromium
- name: Run Playwright smoke tests
working-directory: frontend
run: npm run test:e2e -- interactive-artifacts.spec.ts
- name: Upload Playwright report
if: always()
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: frontend/playwright-report/
if-no-files-found: ignore