2323 run-jekyll-build : ${{ steps.filter.outputs.jekyll }}
2424 is-data-only : ${{ steps.filter.outputs.data-only }}
2525 test-strategy : ${{ steps.strategy.outputs.strategy }}
26-
26+
2727 steps :
2828 - name : 📂 Checkout repository
2929 uses : actions/checkout@v5
4343 - 'package.json'
4444 - 'package-lock.json'
4545 - 'jest.config.js'
46-
46+
4747 # Changes requiring E2E tests
4848 e2e:
4949 - 'static/js/**/*.js'
@@ -52,15 +52,15 @@ jobs:
5252 - '_pages/**'
5353 - 'tests/e2e/**'
5454 - 'playwright.config.js'
55-
55+
5656 # Python utility changes
5757 python:
5858 - 'utils/**/*.py'
5959 - 'tests/python/**'
6060 - 'pixi.toml'
6161 - 'pyproject.toml'
6262 - 'requirements*.txt'
63-
63+
6464 # Jekyll/Ruby changes
6565 jekyll:
6666 - '_config*.yml'
6969 - '_includes/**'
7070 - '_sass/**'
7171 - 'Gemfile*'
72-
72+
7373 # Data-only changes (no tests needed)
7474 data-only:
7575 - '_data/conferences.yml'
@@ -116,25 +116,25 @@ jobs:
116116 script : |
117117 const strategy = '${{ steps.strategy.outputs.strategy }}';
118118 let comment = '## 🧪 Test Strategy Analysis\n\n';
119-
119+
120120 const changes = {
121121 frontend: ${{ steps.filter.outputs.frontend }},
122122 e2e: ${{ steps.filter.outputs.e2e }},
123123 python: ${{ steps.filter.outputs.python }},
124124 jekyll: ${{ steps.filter.outputs.jekyll }},
125125 dataOnly: ${{ steps.filter.outputs.data-only }}
126126 };
127-
127+
128128 comment += '### 📊 Detected Changes:\n';
129129 comment += `- Frontend JS: ${changes.frontend ? '✅ Yes' : '❌ No'}\n`;
130130 comment += `- E2E Required: ${changes.e2e ? '✅ Yes' : '❌ No'}\n`;
131131 comment += `- Python Utils: ${changes.python ? '✅ Yes' : '❌ No'}\n`;
132132 comment += `- Jekyll Config: ${changes.jekyll ? '✅ Yes' : '❌ No'}\n`;
133133 comment += `- Data Only: ${changes.dataOnly ? '✅ Yes' : '❌ No'}\n`;
134134 comment += '\n';
135-
135+
136136 comment += '### 🎯 Test Strategy: `' + strategy + '`\n\n';
137-
137+
138138 switch(strategy) {
139139 case 'data-validation-only':
140140 comment += '✨ **Optimized Run**: Only conference data validation will run.\n';
@@ -152,21 +152,21 @@ jobs:
152152 default:
153153 comment += '✅ **Minimal Checks**: Running basic validation only.\n';
154154 }
155-
155+
156156 comment += '\n💰 **Cost Savings**: This intelligent test selection reduces unnecessary CI runs.';
157-
157+
158158 // Find and update or create comment
159159 const { data: comments } = await github.rest.issues.listComments({
160160 owner: context.repo.owner,
161161 repo: context.repo.repo,
162162 issue_number: context.issue.number,
163163 });
164-
164+
165165 const botComment = comments.find(comment =>
166166 comment.user.type === 'Bot' &&
167167 comment.body.includes('Test Strategy Analysis')
168168 );
169-
169+
170170 if (botComment) {
171171 await github.rest.issues.updateComment({
172172 owner: context.repo.owner,
@@ -189,23 +189,23 @@ jobs:
189189 needs : analyze-changes
190190 if : always() # Always run data validation
191191 runs-on : ubuntu-latest
192-
192+
193193 steps :
194194 - name : 📂 Checkout repository
195195 uses : actions/checkout@v5
196-
196+
197197 - name : 🐍 Setup Pixi
198198 uses :
prefix-dev/[email protected] 199-
199+
200200 - name : ✅ Validate conference data
201201 run : |
202202 pixi run sort --check
203203 pixi run validate
204-
204+
205205 - name : 📊 Check for duplicates
206206 run : |
207207 python utils/check_duplicates.py || true
208-
208+
209209 - name : 🔗 Validate URLs (sample)
210210 if : needs.analyze-changes.outputs.is-data-only == 'true'
211211 run : |
@@ -234,14 +234,14 @@ jobs:
234234 needs : analyze-changes
235235 if : needs.analyze-changes.outputs.run-python-tests == 'true'
236236 runs-on : ubuntu-latest
237-
237+
238238 steps :
239239 - name : 📂 Checkout repository
240240 uses : actions/checkout@v5
241-
241+
242242 - name : 🐍 Setup Pixi
243243 uses :
prefix-dev/[email protected] 244-
244+
245245 - name : 🧪 Run Python tests
246246 run : |
247247 pixi run test
@@ -252,17 +252,17 @@ jobs:
252252 needs : analyze-changes
253253 if : needs.analyze-changes.outputs.run-jekyll-build == 'true'
254254 runs-on : ubuntu-latest
255-
255+
256256 steps :
257257 - name : 📂 Checkout repository
258258 uses : actions/checkout@v5
259-
259+
260260 - name : 💎 Setup Ruby
261261 uses : ruby/setup-ruby@v1
262262 with :
263263 ruby-version : ' 3.3'
264264 bundler-cache : true
265-
265+
266266 - name : 🏗️ Test Jekyll build
267267 run : |
268268 bundle exec jekyll build
@@ -275,7 +275,7 @@ jobs:
275275 runs-on : ubuntu-latest
276276 needs : [data-validation, frontend-tests, e2e-tests, python-tests, jekyll-build-test]
277277 if : always()
278-
278+
279279 steps :
280280 - name : ✅ All tests passed
281281 if : |
@@ -287,7 +287,7 @@ jobs:
287287 run : |
288288 echo "✅ All required tests passed!"
289289 echo "Test strategy successfully reduced unnecessary runs."
290-
290+
291291 - name : ❌ Some tests failed
292292 if : |
293293 needs.data-validation.result == 'failure' ||
0 commit comments