# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: Node.js CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [12.x, 14.x, 16.x]
        build-how: ["node", "browser", "browser -n", "cdn :common"]

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm install
    - run: node ./tools/build.js -t ${{ matrix.build-how }}
    # normal browser build
    - if: contains(matrix.build-how, 'browser') || contains(matrix.build-how, 'cdn')
      name: Test browser/CDN build
      run: |
        npm run test-browser
        node test/builds/browser_build_as_commonjs.js
    # CDN build should be easily importable
    - if: contains(matrix.build-how, 'cdn')
      name: Test that we can import CDN esm build
      run: |
        node test/builds/cdn_build_as_esm.mjs

    - if: contains(matrix.build-how, 'node')
      name: Test Node.js build
      run: |
        npm test

    # test that our build is "use strict" safe for use with packaging
    # systems importing our source thru ES6 modules (rollup, etc.)
    - if: contains(matrix.build-how, 'node')
      name: Test Node.js build is "use strict" safe
      run: |
        ./node_modules/.bin/rollup -c test/builds/rollup_import_via_commonjs.js
        node build/bundle.js