steps:
  - label: ":eslint: JS Lint"
    command:
      # We fetch the develop js-sdk to get our latest eslint rules
      - "echo '--- Install js-sdk'"
      - "./scripts/ci/install-deps.sh --ignore-scripts"
      - "echo '+++ Lint'"
      - "yarn lint:js"
    plugins:
      - docker#v3.0.1:
          image: "node:12"

  - label: ":eslint: TS Lint"
    command:
      - "echo '--- Install'"
      - "yarn install --ignore-scripts"
      - "echo '+++ Lint'"
      - "yarn lint:ts"
    plugins:
      - docker#v3.0.1:
          image: "node:12"

  - label: ":eslint: Types Lint"
    command:
      - "echo '--- Install'"
      - "yarn install --ignore-scripts"
      - "echo '+++ Lint'"
      - "yarn lint:types"
    plugins:
      - docker#v3.0.1:
          image: "node:12"
  - label: ":stylelint: Style Lint"
    command:
      - "echo '--- Install'"
      - "yarn install --ignore-scripts"
      - "yarn lint:style"
    plugins:
      - docker#v3.0.1:
          image: "node:12"

  - label: ":jest: Tests"
    agents:
      # We use a medium sized instance instead of the normal small ones because
      # webpack loves to gorge itself on resources.
      queue: "medium"
    command:
      - "echo '--- Install js-sdk'"
      # We don't use the babel-ed output for anything so we can --ignore-scripts
      # to save transpiling the files. We run the transpile step explicitly in
      # the 'build' job.
      - "./scripts/ci/install-deps.sh --ignore-scripts"
      - "yarn run reskindex"
      - "echo '+++ Running Tests'"
      - "yarn test"
    plugins:
      - docker#v3.0.1:
          image: "node:12"

  - label: "🛠 Build"
    command:
      - "echo '+++ Install & Build'"
      - "yarn install"
    plugins:
      - docker#v3.0.1:
          image: "node:12"

  - label: ":chains: End-to-End Tests"
    agents:
      # We use a xlarge sized instance instead of the normal small ones because
      # e2e tests otherwise take +-8min
      queue: "xlarge"
    command:
      - "echo '--- Install js-sdk'"
      - "./scripts/ci/install-deps.sh --ignore-scripts"
      - "echo '+++ Running Tests'"
      - "./scripts/ci/end-to-end-tests.sh"
    plugins:
      - docker#v3.0.1:
          image: "matrixdotorg/riotweb-ci-e2etests-env:latest"
          propagate-environment: true
          workdir: "/workdir/matrix-react-sdk"
    retry:
      automatic:
        - exit_status: 1 # retry end-to-end tests once as Puppeteer sometimes fails
          limit: 1

  - label: "🔧 Riot Tests"
    agents:
      # We use a medium sized instance instead of the normal small ones because
      # webpack loves to gorge itself on resources.
      queue: "medium"
    command:
      - "echo '+++ Running Tests'"
      - "./scripts/ci/riot-unit-tests.sh"
    plugins:
      - docker#v3.0.1:
          image: "node:10"
          propagate-environment: true
          workdir: "/workdir/matrix-react-sdk"

  - label: "🌐 i18n"
    command:
      - "echo '--- Fetching Dependencies'"
      - "yarn install --ignore-scripts"
      - "echo '+++ Testing i18n output'"
      - "yarn diff-i18n"
    plugins:
      - docker#v3.0.1:
          image: "node:10"

  - wait

  - label: "🐴 Trigger riot-web"
    trigger: "riot-web"
    branches: "develop"
    build:
        branch: "develop"
        message: "[react-sdk] ${BUILDKITE_MESSAGE}"
    async: true