forked from callumalpass/tasknotes
-
Notifications
You must be signed in to change notification settings - Fork 0
152 lines (130 loc) · 4.19 KB
/
test.yml
File metadata and controls
152 lines (130 loc) · 4.19 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
name: Test Suite
on:
push:
branches: [ main, develop, v3-maintenance ]
pull_request:
branches: [ main, develop, v3-maintenance ]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20]
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 --prefer-offline --no-audit
timeout-minutes: 5
- name: Check i18n manifest is up-to-date
run: |
echo "🔍 Checking if i18n manifest and state files are up-to-date..."
npm run i18n:sync
if [[ -n "$(git status --porcelain)" ]]; then
echo "❌ Error: i18n manifest or state files are out of date."
echo "📝 Files that need to be committed:"
git status --porcelain
echo ""
echo "🔧 Please run 'npm run i18n:sync' locally and commit the changes:"
echo " npm run i18n:sync"
echo " git add i18n.manifest.json i18n.state.json"
echo " git commit -m 'chore: update i18n manifest and state files'"
echo ""
echo "📊 Current diff:"
git diff --name-only
if git diff --quiet i18n.manifest.json; then
echo "ℹ️ No manifest changes"
else
echo "📄 Manifest changes:"
git diff i18n.manifest.json | head -20
fi
if git diff --quiet i18n.state.json; then
echo "ℹ️ No state changes"
else
echo "📄 State changes:"
git diff i18n.state.json | head -20
fi
exit 1
else
echo "✅ i18n files are up-to-date."
fi
timeout-minutes: 3
- name: Debug environment
run: |
echo "Node version: $(node --version)"
echo "NPM version: $(npm --version)"
echo "Timezone: $(date)"
echo "Jest version: $(npx jest --version)"
- name: Run linter
run: npm run lint || echo "Linting completed with warnings"
timeout-minutes: 10
- name: Generate release notes import
run: node generate-release-notes-import.mjs
timeout-minutes: 1
- name: Run type check
run: npm run typecheck
timeout-minutes: 5
- name: Run unit tests with coverage
run: npm run test:ci -- --verbose
timeout-minutes: 15
- name: Run integration tests
run: npm run test:integration
timeout-minutes: 10
- name: Upload coverage reports
uses: codecov/codecov-action@v3
with:
file: ./coverage/lcov.info
fail_ci_if_error: false
- name: Performance benchmarks
run: npm run test:performance
timeout-minutes: 10
if: matrix.node-version == '20' # Only run on latest Node
- name: Archive test results
uses: actions/upload-artifact@v4
if: failure()
with:
name: test-results-${{ matrix.node-version }}
path: |
coverage/
test-results/
build-test:
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci --prefer-offline --no-audit
timeout-minutes: 5
- name: Build plugin
env:
GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.GOOGLE_OAUTH_CLIENT_ID }}
MICROSOFT_OAUTH_CLIENT_ID: ${{ secrets.MICROSOFT_OAUTH_CLIENT_ID }}
run: |
cat <<EOF > .env
GOOGLE_OAUTH_CLIENT_ID=${GOOGLE_OAUTH_CLIENT_ID}
MICROSOFT_OAUTH_CLIENT_ID=${MICROSOFT_OAUTH_CLIENT_ID}
EOF
npm run build
timeout-minutes: 10
- name: Test built plugin
run: npm run test:build
timeout-minutes: 5
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: plugin-build
path: |
main.js
manifest.json
styles.css