.azure-pipelines.yml (14484B)
1 # This is the configuration file for Azure Pipelines, used to run tests on 2 # macOS and Windows. Documentation to help understand this setup: 3 # https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema 4 # https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers 5 # https://docs.microsoft.com/en-us/azure/devops/pipelines/process/multiple-phases 6 # https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates 7 # https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables 8 # https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/index 9 # 10 # In addition to this configuration file, some setup in the Azure DevOps 11 # project is required: 12 # - The "Build pull requests from forks of this repository" setting must be 13 # enabled: https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/github#validate-contributions-from-forks 14 15 trigger: 16 # These are all the branches referenced in the jobs that follow. 17 - epochs/daily 18 - epochs/three_hourly 19 - triggers/edge_stable 20 - triggers/edge_dev 21 - triggers/edge_canary 22 - triggers/wktr_preview 23 24 # Set safaridriver_diagnose to true to enable safaridriver diagnostics. The 25 # logs won't appear in `./wpt run` output but will be uploaded as an artifact. 26 variables: 27 safaridriver_diagnose: false 28 29 jobs: 30 # The decision jobs runs `./wpt test-jobs` to determine which jobs to run, 31 # and all following jobs wait for it to finish and depend on its output. 32 - job: decision 33 displayName: './wpt test-jobs' 34 condition: eq(variables['Build.Reason'], 'PullRequest') 35 pool: 36 vmImage: 'ubuntu-24.04' 37 steps: 38 - task: UsePythonVersion@0 39 inputs: 40 versionSpec: '3.14' 41 - template: tools/ci/azure/checkout.yml 42 - script: | 43 set -eux -o pipefail 44 git fetch --depth 50 --quiet origin master 45 ./wpt test-jobs | while read job; do 46 echo "$job" 47 echo "##vso[task.setvariable variable=$job;isOutput=true]true"; 48 done 49 name: test_jobs 50 displayName: 'Run ./wpt test-jobs' 51 52 - job: tools_unittest_mac_py38 53 displayName: 'tools/ unittests: macOS + Python 3.8' 54 dependsOn: decision 55 condition: dependencies.decision.outputs['test_jobs.tools_unittest'] 56 pool: 57 vmImage: 'macOS-14' 58 steps: 59 - task: UsePythonVersion@0 60 inputs: 61 versionSpec: '3.8' 62 - template: tools/ci/azure/checkout.yml 63 - template: tools/ci/azure/tox_pytest.yml 64 parameters: 65 directory: tools/ 66 toxenv: py38 67 68 - job: tools_unittest_mac_py314 69 displayName: 'tools/ unittests: macOS + Python 3.14' 70 dependsOn: decision 71 condition: dependencies.decision.outputs['test_jobs.tools_unittest'] 72 pool: 73 vmImage: 'macOS-14' 74 steps: 75 - task: UsePythonVersion@0 76 inputs: 77 versionSpec: '3.14' 78 - template: tools/ci/azure/checkout.yml 79 - template: tools/ci/azure/tox_pytest.yml 80 parameters: 81 directory: tools/ 82 toxenv: py314 83 84 - job: wptrunner_unittest_mac_py38 85 displayName: 'tools/wptrunner/ unittests: macOS + Python 3.8' 86 dependsOn: decision 87 condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] 88 pool: 89 vmImage: 'macOS-14' 90 steps: 91 - task: UsePythonVersion@0 92 inputs: 93 versionSpec: '3.8' 94 - template: tools/ci/azure/checkout.yml 95 - template: tools/ci/azure/tox_pytest.yml 96 parameters: 97 directory: tools/wptrunner/ 98 toxenv: py38 99 100 - job: wptrunner_unittest_mac_py314 101 displayName: 'tools/wptrunner/ unittests: macOS + Python 3.14' 102 dependsOn: decision 103 condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] 104 pool: 105 vmImage: 'macOS-14' 106 steps: 107 - task: UsePythonVersion@0 108 inputs: 109 versionSpec: '3.14' 110 - template: tools/ci/azure/checkout.yml 111 - template: tools/ci/azure/tox_pytest.yml 112 parameters: 113 directory: tools/wptrunner/ 114 toxenv: py314 115 116 - job: wpt_integration_mac_py38 117 displayName: 'tools/wpt/ tests: macOS + Python 3.8' 118 dependsOn: decision 119 condition: dependencies.decision.outputs['test_jobs.wpt_integration'] 120 pool: 121 vmImage: 'macOS-14' 122 steps: 123 # full checkout required 124 - task: UsePythonVersion@0 125 inputs: 126 versionSpec: '3.8' 127 - template: tools/ci/azure/update_hosts.yml 128 - template: tools/ci/azure/update_manifest.yml 129 - template: tools/ci/azure/tox_pytest.yml 130 parameters: 131 directory: tools/wpt/ 132 toxenv: py38 133 134 - job: wpt_integration_mac_py314 135 displayName: 'tools/wpt/ tests: macOS + Python 3.14' 136 dependsOn: decision 137 condition: dependencies.decision.outputs['test_jobs.wpt_integration'] 138 pool: 139 vmImage: 'macOS-14' 140 steps: 141 # full checkout required 142 - task: UsePythonVersion@0 143 inputs: 144 versionSpec: '3.14' 145 - template: tools/ci/azure/update_hosts.yml 146 - template: tools/ci/azure/update_manifest.yml 147 - template: tools/ci/azure/tox_pytest.yml 148 parameters: 149 directory: tools/wpt/ 150 toxenv: py314 151 152 - job: tools_unittest_win_py38 153 displayName: 'tools/ unittests: Windows + Python 3.8' 154 dependsOn: decision 155 condition: dependencies.decision.outputs['test_jobs.tools_unittest'] 156 pool: 157 vmImage: 'windows-latest' 158 variables: 159 HYPOTHESIS_PROFILE: ci 160 steps: 161 - task: UsePythonVersion@0 162 inputs: 163 versionSpec: '3.8' 164 addToPath: false 165 - template: tools/ci/azure/checkout.yml 166 - template: tools/ci/azure/tox_pytest.yml 167 parameters: 168 directory: tools/ 169 toxenv: py38 170 171 - job: tools_unittest_win_py314 172 displayName: 'tools/ unittests: Windows + Python 3.14' 173 dependsOn: decision 174 condition: dependencies.decision.outputs['test_jobs.tools_unittest'] 175 pool: 176 vmImage: 'windows-latest' 177 steps: 178 - task: UsePythonVersion@0 179 inputs: 180 versionSpec: '3.14' 181 addToPath: false 182 - template: tools/ci/azure/checkout.yml 183 - template: tools/ci/azure/tox_pytest.yml 184 parameters: 185 directory: tools/ 186 toxenv: py314 187 188 - job: wptrunner_unittest_win_py38 189 displayName: 'tools/wptrunner/ unittests: Windows + Python 3.8' 190 dependsOn: decision 191 condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] 192 pool: 193 vmImage: 'windows-latest' 194 steps: 195 - task: UsePythonVersion@0 196 inputs: 197 versionSpec: '3.8' 198 addToPath: false 199 - template: tools/ci/azure/checkout.yml 200 - template: tools/ci/azure/tox_pytest.yml 201 parameters: 202 directory: tools/wptrunner/ 203 toxenv: py38 204 205 - job: wptrunner_unittest_win_py314 206 displayName: 'tools/wptrunner/ unittests: Windows + Python 3.14' 207 dependsOn: decision 208 condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] 209 pool: 210 vmImage: 'windows-latest' 211 steps: 212 - task: UsePythonVersion@0 213 inputs: 214 versionSpec: '3.14' 215 addToPath: false 216 - template: tools/ci/azure/checkout.yml 217 - template: tools/ci/azure/tox_pytest.yml 218 parameters: 219 directory: tools/wptrunner/ 220 toxenv: py314 221 222 - job: wpt_integration_win_py38 223 displayName: 'tools/wpt/ tests: Windows + Python 3.8' 224 dependsOn: decision 225 condition: dependencies.decision.outputs['test_jobs.wpt_integration'] 226 pool: 227 vmImage: 'windows-latest' 228 steps: 229 # full checkout required 230 - task: UsePythonVersion@0 231 inputs: 232 versionSpec: '3.8' 233 - template: tools/ci/azure/update_hosts.yml 234 - template: tools/ci/azure/update_manifest.yml 235 - template: tools/ci/azure/tox_pytest.yml 236 parameters: 237 directory: tools/wpt/ 238 toxenv: py38 239 240 - job: wpt_integration_win_py314 241 displayName: 'tools/wpt/ tests: Windows + Python 3.14' 242 dependsOn: decision 243 condition: dependencies.decision.outputs['test_jobs.wpt_integration'] 244 pool: 245 vmImage: 'windows-latest' 246 steps: 247 # full checkout required 248 - task: UsePythonVersion@0 249 inputs: 250 versionSpec: '3.14' 251 - template: tools/ci/azure/update_hosts.yml 252 - template: tools/ci/azure/update_manifest.yml 253 - template: tools/ci/azure/tox_pytest.yml 254 parameters: 255 directory: tools/wpt/ 256 toxenv: py314 257 258 - job: results_edge_stable 259 displayName: 'all tests: Edge Stable' 260 condition: | 261 or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/daily'), 262 eq(variables['Build.SourceBranch'], 'refs/heads/triggers/edge_stable'), 263 and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_stable'])) 264 strategy: 265 parallel: 10 # chosen to make runtime ~2h 266 timeoutInMinutes: 180 267 pool: 268 vmImage: 'windows-latest' 269 steps: 270 - task: UsePythonVersion@0 271 inputs: 272 versionSpec: '3.14' 273 - template: tools/ci/azure/system_info.yml 274 - template: tools/ci/azure/checkout.yml 275 - template: tools/ci/azure/install_certs.yml 276 - template: tools/ci/azure/install_edge.yml 277 parameters: 278 channel: stable 279 - template: tools/ci/azure/update_hosts.yml 280 - template: tools/ci/azure/update_manifest.yml 281 - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel stable edge 282 displayName: 'Run tests (Edge Stable)' 283 - task: PublishBuildArtifacts@1 284 displayName: 'Publish results' 285 inputs: 286 artifactName: 'edge-stable-results' 287 - template: tools/ci/azure/publish_logs.yml 288 - template: tools/ci/azure/sysdiagnose.yml 289 - template: tools/ci/azure/fyi_hook.yml 290 parameters: 291 dependsOn: results_edge_stable 292 artifactName: edge-stable-results 293 294 - job: results_edge_dev 295 displayName: 'all tests: Edge Dev' 296 condition: | 297 or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/three_hourly'), 298 eq(variables['Build.SourceBranch'], 'refs/heads/triggers/edge_dev'), 299 and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_dev'])) 300 strategy: 301 parallel: 10 # chosen to make runtime ~2h 302 timeoutInMinutes: 180 303 pool: 304 vmImage: 'windows-latest' 305 steps: 306 - task: UsePythonVersion@0 307 inputs: 308 versionSpec: '3.14' 309 - template: tools/ci/azure/system_info.yml 310 - template: tools/ci/azure/checkout.yml 311 - template: tools/ci/azure/install_certs.yml 312 - template: tools/ci/azure/install_edge.yml 313 parameters: 314 channel: dev 315 - template: tools/ci/azure/configure_watson.yml 316 - template: tools/ci/azure/update_hosts.yml 317 - template: tools/ci/azure/update_manifest.yml 318 - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel dev edge 319 displayName: 'Run tests (Edge Dev)' 320 - task: PublishBuildArtifacts@1 321 displayName: 'Publish results' 322 inputs: 323 artifactName: 'edge-dev-results' 324 - template: tools/ci/azure/publish_logs.yml 325 - template: tools/ci/azure/sysdiagnose.yml 326 - template: tools/ci/azure/fyi_hook.yml 327 parameters: 328 dependsOn: results_edge_dev 329 artifactName: edge-dev-results 330 331 - job: results_edge_canary 332 displayName: 'all tests: Edge Canary' 333 condition: | 334 or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/weekly'), 335 eq(variables['Build.SourceBranch'], 'refs/heads/triggers/edge_canary'), 336 and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_canary'])) 337 strategy: 338 parallel: 10 # chosen to make runtime ~2h 339 timeoutInMinutes: 180 340 pool: 341 vmImage: 'windows-latest' 342 steps: 343 - task: UsePythonVersion@0 344 inputs: 345 versionSpec: '3.14' 346 - template: tools/ci/azure/checkout.yml 347 - template: tools/ci/azure/install_certs.yml 348 - template: tools/ci/azure/install_edge.yml 349 parameters: 350 channel: canary 351 - template: tools/ci/azure/update_hosts.yml 352 - template: tools/ci/azure/update_manifest.yml 353 - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel canary edge 354 displayName: 'Run tests (Edge Canary)' 355 - task: PublishBuildArtifacts@1 356 displayName: 'Publish results' 357 inputs: 358 artifactName: 'edge-canary-results' 359 - template: tools/ci/azure/publish_logs.yml 360 - template: tools/ci/azure/sysdiagnose.yml 361 - template: tools/ci/azure/fyi_hook.yml 362 parameters: 363 dependsOn: results_edge_canary 364 artifactName: edge-canary-results 365 366 - job: results_wktr_preview 367 displayName: 'all tests: WebKitTestRunner' 368 condition: | 369 or(eq(variables['Build.SourceBranch'], 'refs/heads/triggers/wktr_preview'), 370 and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_wktr_preview'])) 371 strategy: 372 parallel: 8 # chosen to make runtime ~2h 373 timeoutInMinutes: 180 374 pool: 375 vmImage: 'macOS-14' 376 steps: 377 - task: UsePythonVersion@0 378 inputs: 379 versionSpec: '3.14' 380 - template: tools/ci/azure/checkout.yml 381 - template: tools/ci/azure/install_certs.yml 382 - template: tools/ci/azure/color_profile.yml 383 - template: tools/ci/azure/update_hosts.yml 384 - template: tools/ci/azure/update_manifest.yml 385 - script: | 386 set -eux -o pipefail 387 export SYSTEM_VERSION_COMPAT=0 388 ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel experimental --install-browser --yes wktr 389 displayName: 'Run tests' 390 - task: PublishBuildArtifacts@1 391 displayName: 'Publish results' 392 inputs: 393 artifactName: 'wktr-preview-results' 394 - template: tools/ci/azure/publish_logs.yml 395 - template: tools/ci/azure/sysdiagnose.yml 396 - template: tools/ci/azure/fyi_hook.yml 397 parameters: 398 dependsOn: results_wktr_preview 399 artifactName: wktr-preview-results