# This is the configuration file for Azure Pipelines, used to run tests on # macOS. Documentation to help understand this setup: # https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema # https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers # https://docs.microsoft.com/en-us/azure/devops/pipelines/process/multiple-phases # https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates # https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables # https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/index # # In addition to this configuration file, some setup in the Azure DevOps # project is required: # - The "Build pull requests from forks of this repository" setting must be # enabled: https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/github#validate-contributions-from-forks # - Self-hosted agents for Windows 10 are used: # - 'Hosted Windows Client' is the latest Windows 10 # - 'Hosted Windows Client Next' is Windows 10 Insider Preview # Documention for the setup of these agents: # https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows jobs: # The affected tests jobs are unconditional for speed, as most PRs have one or # more affected tests: https://github.com/web-platform-tests/wpt/issues/13936. - job: affected_safari_preview displayName: 'affected tests: Safari Technology Preview' condition: eq(variables['Build.Reason'], 'PullRequest') pool: vmImage: 'macOS-10.13' steps: - template: tools/ci/azure/affected_tests.yml parameters: artifactName: 'safari-preview-affected-tests' - template: tools/ci/azure/fyi_hook.yml parameters: dependsOn: affected_safari_preview artifactName: safari-preview-affected-tests - job: affected_without_changes_safari_preview displayName: 'affected tests without changes: Safari Technology Preview' condition: eq(variables['Build.Reason'], 'PullRequest') pool: vmImage: 'macOS-10.13' steps: - template: tools/ci/azure/affected_tests.yml parameters: checkoutCommit: 'HEAD^1' affectedRange: 'HEAD@{1}' artifactName: 'safari-preview-affected-tests-without-changes' - template: tools/ci/azure/fyi_hook.yml parameters: dependsOn: affected_without_changes_safari_preview artifactName: safari-preview-affected-tests-without-changes # The decision jobs runs `./wpt test-jobs` to determine which jobs to run, # and all following jobs wait for it to finish and depend on its output. - job: decision displayName: './wpt test-jobs' condition: eq(variables['Build.Reason'], 'PullRequest') pool: vmImage: 'ubuntu-16.04' steps: - template: tools/ci/azure/checkout.yml - script: | ./wpt test-jobs | while read job; do echo "$job" echo "##vso[task.setvariable variable=$job;isOutput=true]true"; done name: test_jobs displayName: 'Run ./wpt test-jobs' - job: infrastructure_macOS displayName: 'infrastructure/ tests: macOS' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_infrastructure'] pool: vmImage: 'macOS-10.13' steps: - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/pip_install.yml parameters: packages: virtualenv - template: tools/ci/azure/install_fonts.yml - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/install_chrome.yml - template: tools/ci/azure/install_firefox.yml - template: tools/ci/azure/install_safari.yml - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml - script: no_proxy='*' ./wpt run --yes --no-manifest-update --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl - --log-tbpl-level info --channel dev chrome infrastructure/ displayName: 'Run tests (Chrome Dev)' - script: no_proxy='*' ./wpt run --yes --no-manifest-update --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl - --log-tbpl-level info --channel nightly firefox infrastructure/ displayName: 'Run tests (Firefox Nightly)' - script: no_proxy='*' ./wpt run --yes --no-manifest-update --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl - --log-tbpl-level info --channel preview safari infrastructure/ displayName: 'Run tests (Safari Technology Preview)' - task: PublishBuildArtifacts@1 displayName: 'Publish results' inputs: artifactName: 'infrastructure' condition: always() - job: tools_unittest_macOS displayName: 'tools/ unittests: macOS' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] pool: vmImage: 'macOS-10.13' steps: - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/tox_pytest.yml parameters: directory: tools/ toxenv: py27 - job: wptrunner_unittest_macOS displayName: 'tools/wptrunner/ unittests: macOS' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] pool: vmImage: 'macOS-10.13' steps: - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/tox_pytest.yml parameters: directory: tools/wptrunner/ - job: wpt_integration_macOS displayName: 'tools/wpt/ tests: macOS' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wpt_integration'] pool: vmImage: 'macOS-10.13' steps: # full checkout required - template: tools/ci/azure/install_chrome.yml - template: tools/ci/azure/install_firefox.yml - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml - template: tools/ci/azure/tox_pytest.yml parameters: directory: tools/wpt/ - job: tools_unittest_win displayName: 'tools/ unittests: Windows' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] pool: vmImage: 'windows-2019' steps: - task: UsePythonVersion@0 inputs: versionSpec: '2.7.x' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/tox_pytest.yml parameters: directory: tools/ toxenv: py27 - job: tools_unittest_win_py3 displayName: 'tools/ unittests: Windows Python 3' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.tools_unittest'] pool: vmImage: 'windows-2019' steps: - task: UsePythonVersion@0 inputs: versionSpec: '3.6.x' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/tox_pytest.yml parameters: directory: tools/ toxenv: py36 - job: wptrunner_unittest_win displayName: 'tools/wptrunner/ unittests: Windows' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest'] pool: vmImage: 'windows-2019' steps: - task: UsePythonVersion@0 inputs: versionSpec: '2.7.x' - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/tox_pytest.yml parameters: directory: tools/wptrunner/ - job: wpt_integration_win displayName: 'tools/wpt/ tests: Windows' dependsOn: decision condition: dependencies.decision.outputs['test_jobs.wpt_integration'] pool: vmImage: 'windows-2019' steps: # full checkout required - task: UsePythonVersion@0 inputs: versionSpec: '2.7.x' # currently just using the outdated Chrome/Firefox on the VM rather than # figuring out how to install Chrome Dev channel on Windows # - template: tools/ci/azure/install_chrome.yml # - template: tools/ci/azure/install_firefox.yml - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml - template: tools/ci/azure/tox_pytest.yml parameters: directory: tools/wpt/ - job: infrastructure_win10 displayName: 'infrastructure/ tests: Windows 10' # This job is only triggered manually until it has been shown to be robust. condition: and(eq(variables['Build.Reason'], 'Manual'), variables['run_infrastructure_win10']) pool: name: 'Hosted Windows Client' steps: - template: tools/ci/azure/system_info.yml - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_python.yml - template: tools/ci/azure/pip_install.yml parameters: packages: virtualenv - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/install_edge.yml - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml - script: python ./wpt run --yes --no-manifest-update --install-fonts --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl - --log-tbpl-level info --channel dev edgechromium infrastructure/ displayName: 'Run tests (Edge Dev)' - task: PublishBuildArtifacts@1 displayName: 'Publish results' inputs: artifactName: 'infrastructure' condition: always() - template: tools/ci/azure/cleanup_win10.yml - job: results_edge_dev displayName: 'all tests: Edge Dev' condition: | or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/six_hourly'), and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_dev'])) strategy: parallel: 10 # chosen to make runtime ~2h timeoutInMinutes: 360 pool: name: 'Hosted Windows Client' steps: - template: tools/ci/azure/system_info.yml - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_python.yml - template: tools/ci/azure/pip_install.yml parameters: packages: virtualenv - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/install_edge.yml parameters: channel: dev - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml - 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-tbpl - --log-tbpl-level info --channel dev edgechromium displayName: 'Run tests (Edge Dev)' - task: PublishBuildArtifacts@1 displayName: 'Publish results' inputs: artifactName: 'edge-dev-results' - template: tools/ci/azure/cleanup_win10.yml - template: tools/ci/azure/fyi_hook.yml parameters: dependsOn: results_edge_dev artifactName: edge-dev-results - job: results_edge_canary displayName: 'all tests: Edge Canary' condition: | or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/six_hourly'), and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_canary'])) strategy: parallel: 10 # chosen to make runtime ~2h timeoutInMinutes: 360 pool: name: 'Hosted Windows Client' steps: - template: tools/ci/azure/system_info.yml - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/install_python.yml - template: tools/ci/azure/pip_install.yml parameters: packages: virtualenv - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/install_edge.yml parameters: channel: canary - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml - 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-tbpl - --log-tbpl-level info --channel canary edgechromium displayName: 'Run tests (Edge Canary)' - task: PublishBuildArtifacts@1 displayName: 'Publish results' inputs: artifactName: 'edge-canary-results' - template: tools/ci/azure/cleanup_win10.yml - template: tools/ci/azure/fyi_hook.yml parameters: dependsOn: results_edge_canary artifactName: edge-canary-results - job: results_safari displayName: 'all tests: Safari' condition: | or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/daily'), and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_safari'])) strategy: parallel: 5 # chosen to make runtime ~2h timeoutInMinutes: 360 pool: vmImage: 'macOS-10.13' steps: - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/pip_install.yml parameters: packages: virtualenv - template: tools/ci/azure/install_fonts.yml - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/install_safari.yml parameters: channel: stable - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml # --exclude is a workaround for https://github.com/web-platform-tests/wpt/issues/16229 - script: no_proxy='*' ./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-tbpl - --log-tbpl-level info safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html displayName: 'Run tests' - task: PublishBuildArtifacts@1 displayName: 'Publish results' inputs: artifactName: 'safari-results' - template: tools/ci/azure/fyi_hook.yml parameters: dependsOn: results_safari artifactName: safari-results - job: results_safari_preview displayName: 'all tests: Safari Technology Preview' condition: | or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/six_hourly'), and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_safari_preview'])) strategy: parallel: 5 # chosen to make runtime ~2h timeoutInMinutes: 360 pool: vmImage: 'macOS-10.13' steps: - template: tools/ci/azure/checkout.yml - template: tools/ci/azure/pip_install.yml parameters: packages: virtualenv - template: tools/ci/azure/install_fonts.yml - template: tools/ci/azure/install_certs.yml - template: tools/ci/azure/install_safari.yml - template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_manifest.yml # --exclude is a workaround for https://github.com/web-platform-tests/wpt/issues/16229 - script: no_proxy='*' ./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-tbpl - --log-tbpl-level info --channel preview safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html --exclude /payment-request/ displayName: 'Run tests' - task: PublishBuildArtifacts@1 displayName: 'Publish results' inputs: artifactName: 'safari-preview-results' - template: tools/ci/azure/fyi_hook.yml parameters: dependsOn: results_safari_preview artifactName: safari-preview-results