diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..070d815 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,54 @@ +name: Build + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 5 + + strategy: + matrix: + node-version: ['16.x', '18.x', '20.x'] + + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - name: Install + run: npm ci + - name: Lint + if: matrix.node-version == '20.x' + run: npm run lint + - name: Types + if: matrix.node-version == '20.x' + run: tsc + - name: Prettier + if: matrix.node-version == '20.x' + run: npm run prettier:check + - name: Test + run: npm test + # N.B.: The selenium server cannot run as a GitHub Actions "service" as + # the tests need to mount local data into the container. + - name: Start Selenium Server + run: | + docker run -d -p 4444:4444 \ + --shm-size="2g" \ + --name selenium_server \ + -v ${PWD}:${PWD} \ + selenium/standalone-firefox:4.16.1-20231219 + - name: Integration + run: npm run test:integration + - name: Stop Selenium Server + if: always() + run: docker stop selenium_server && docker rm selenium_server diff --git a/package.json b/package.json index b17c187..5486cb5 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "postversion": "git push --follow-tags && npm publish", "prettier:check": "prettier --check '**/*.{js,json,md}'", "prettier:write": "prettier --write '**/*.{js,json,md}'", - "prepare": "husky install" + "prepare": "husky install && playwright install" }, "keywords": [ "mocha",