diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..0bbbc6ca --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,79 @@ +name: run-checks + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + checks: + runs-on: ubuntu-latest + strategy: + matrix: + # Include all major maintenance + active LTS Node.js versions. + # https://github.com/nodejs/Release#release-schedule + node: [10, 12, 14] + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 2 + ref: ${{ github.head_ref }} + + - name: Set up Node.js + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + + - name: Install dependencies + run: | + sudo apt-get install xvfb + # Ensure both a Chromium and a Firefox binary are available. + PUPPETEER_PRODUCT=firefox npm install + npm install + ls .local-chromium .local-firefox + + - name: Build + run: | + npm run build + + - name: Run code checks + run: | + npm run lint + npm run generate-docs + npm run ensure-correct-devtools-protocol-revision + + - name: Run unit tests + env: + CHROMIUM: true + run: | + xvfb-run --auto-servernum npm run unit + + - name: Run unit tests with coverage + env: + CHROMIUM: true + run: | + xvfb-run --auto-servernum npm run unit-with-coverage + xvfb-run --auto-servernum npm run assert-unit-coverage + + - name: Run unit tests on Firefox + env: + FIREFOX: true + run: | + xvfb-run --auto-servernum npm run funit + + - name: Run browser tests + run: | + npm run test-browser + + - name: Test bundling and installation + env: + CHROMIUM: true + run: | + # Note: this modifies package.json to test puppeteer-core. + npm run test-install + # Undo those changes. + git checkout --force