name: CI

on: [push, pull_request]

jobs:
  build_latest_browserstack:
    name: Node latest with browserstack
    runs-on: ubuntu-latest
    container: node:latest
    steps:
      - uses: actions/checkout@v1
      - name: install system dependencies
        run: apt-get update && apt-get install -y gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
      - name: install dependencies
        run: yarn
      - name: patch packages
        run: yarn patch-package
      - name: run tests with browserstack
        env: # Or as an environment variable
          BROWSERSTACK_KEY: ${{ secrets.BROWSERSTACK_KEY }}
          BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
        run: yarn test:javascript:browserstack

  build_latest:
    name: Node latest
    runs-on: ubuntu-latest
    container: node:current
    steps:
      - uses: actions/checkout@v1
      - name: install system dependencies
        run: apt-get update && apt-get install -y gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
      - name: install dependencies
        run: yarn
      - name: patch packages
        run: yarn patch-package
      - name: run tests
        run: yarn test:single-process

  build:
    strategy:
      matrix:
        platform: [ubuntu-latest, macos-latest, windows-latest]
        node: [ '12', '10', '8' ]
    name: Node ${{ matrix.node }} (${{ matrix.platform }})
    runs-on: ${{ matrix.platform }}
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node }}
      - name: install dependencies
        run: yarn
      - name: patch packages
        run: yarn patch-package
      - name: run tests
        run: yarn test
