steps: - bash: | curl --retry 5 -LO https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz tar xf geckodriver-v0.21.0-linux64.tar.gz echo "##vso[task.setvariable variable=GECKODRIVER;]$PWD/geckodriver" displayName: "Download Geckodriver (Linux)" condition: eq( variables['Agent.OS'], 'Linux' ) - powershell: | Invoke-WebRequest https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-win64.zip -OutFile gecko.zip unzip gecko.zip Write-Host "##vso[task.setvariable variable=GECKODRIVER;]$pwd\geckodriver.exe" displayName: "Download Geckodriver (Windows)" condition: eq( variables['Agent.OS'], 'Windows_NT' ) # It turns out that geckodriver.exe will fail if firefox takes too long to # start, and for whatever reason the first execution of `firefox.exe` can # take upwards of a mimute. It seems that subsequent executions are much # faster, so have a dedicated step to run Firefox once which should I # guess warm some cache somewhere so the headless tests later on all # finish successfully - script: | "C:\Program Files\Mozilla Firefox\firefox.exe" --version displayName: "Load firefox.exe into cache (presumably?)" condition: eq( variables['Agent.OS'], 'Windows_NT' )