language: node_js
services: xvfb

jobs:
  include:
    - os: "osx"
      name: 'Unit tests: macOS/Chromium'
      node_js: "10.19.0"
      osx_image: xcode11.4
      env:
        - CHROMIUM=true
      before_install:
        - PUPPETEER_PRODUCT=firefox npm install
      script:
        - ls .local-chromium .local-firefox
        - npm run tsc
        - travis_retry npm run unit

    - os: "windows"
      name: 'Unit tests: Windows/Chromium'
      node_js: "10.19.0"
      env:
        - CHROMIUM=true
      before_install:
        - PUPPETEER_PRODUCT=firefox npm install
      script:
        - ls .local-chromium .local-firefox
        - npm run tsc
        - travis_retry npm run unit

    # Runs unit tests on Linux + Chromium
    - node_js: "10.19.0"
      name: 'Unit tests [with coverage]: Linux/Chromium'
      env:
        - CHROMIUM=true
      before_install:
        - PUPPETEER_PRODUCT=firefox npm install
      script:
        - travis_retry npm run unit-with-coverage
        - npm run assert-unit-coverage

    - node_js: "12.16.3"
      name: 'Unit tests [Node 12]: Linux/Chromium'
      env:
        - CHROMIUM=true
      before_install:
        - PUPPETEER_PRODUCT=firefox npm install
      script:
        - travis_retry npm run unit

    - node_js: "14.2.0"
      name: 'Unit tests [Node 14]: Linux/Chromium'
      env:
        - CHROMIUM=true
      before_install:
        - PUPPETEER_PRODUCT=firefox npm install
      script:
        - travis_retry npm run unit

    - node_js: "12.16.3"
      name: 'Browser tests: Linux/Chromium'
      env:
        - CHROMIUM=true
      script:
        - travis_retry npm run test-browser

    # This bot runs all the extra checks that aren't the main Puppeteer unit tests
    - node_js: "10.19.0"
      name: 'Extra tests: Linux/Chromium'
      env:
        - CHROMIUM=true
      script:
        - npm run lint
        - npm run ensure-new-docs-up-to-date
        - npm run ensure-correct-devtools-protocol-revision

    # This bot runs separately as it changes package.json to test puppeteer-core
    # and we don't want that leaking into other bots and causing issues.
    - node_js: "10.19.0"
      name: 'Test bundling and install of packages'
      env:
        - CHROMIUM=true
      script:
        - npm run test-install

    # Runs unit tests on Linux + Firefox
    - node_js: "10.19.0"
      name: 'Unit tests: Linux/Firefox'
      env:
        - FIREFOX=true
      before_install:
        - PUPPETEER_PRODUCT=firefox npm install
      script:
        - travis_retry npm run funit

notifications:
  email: false