ci: enhance our test environment setup #267
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Github actions workflow name | ||
name: CI | ||
# Triggers the workflow on push or pull request events | ||
on: | ||
push: | ||
branches: [main, master] | ||
pull_request: | ||
branches: [main, master] | ||
jobs: | ||
basic_node_test: | ||
name: 'Basic tests on ${{matrix.os}} with node${{matrix.node}}' | ||
needs: early_testing_for_node23 | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest] | ||
node: [22] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v2 | ||
with: | ||
node-version: ${{ matrix.node }} | ||
- name: Install npm dependencies | ||
run: npm install | ||
- name: Print put node & npm version | ||
run: node --version && npm --version | ||
- name: Install chromium | ||
run: npx playwright install chromium | ||
- name: Run unit test | ||
run: npm run test | ||
windows_and_macos_test: | ||
name: 'Platform tests on ${{matrix.os}} with nodejs v${{matrix.node}}' | ||
needs: basic_node_test | ||
strategy: | ||
matrix: | ||
# Test all mainstream operating system | ||
os: [macos-latest, windows-latest] | ||
node: [22] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
# Pull repo to test machine | ||
- uses: actions/checkout@v2 | ||
# Configures the node version used on GitHub-hosted runners | ||
- uses: actions/setup-node@v2 | ||
with: | ||
# The Node.js version to configure | ||
node-version: ${{ matrix.node }} | ||
- name: Install npm dependencies | ||
run: npm install | ||
- name: Print put node & npm version | ||
# Output useful info for debugging. | ||
run: node --version && npm --version | ||
- name: Install chromium | ||
run: npx playwright install chromium | ||
- name: Run unit test | ||
run: npm run test | ||
historical_versions_node_test: | ||
name: 'Historical version nodejs v${{matrix.node}} test' | ||
needs: basic_node_test | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest] | ||
node: [14, 16, 18, 20] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v2 | ||
with: | ||
node-version: ${{ matrix.node }} | ||
- name: Install npm dependencies | ||
run: npm install | ||
- name: Print put node & npm version | ||
run: node --version && npm --version | ||
- name: Install chromium | ||
run: npx playwright install chromium | ||
- name: Run unit test | ||
run: npm run test | ||
early_testing_for_node23: | ||
name: 'Early testing for nodejs v23' | ||
id: early_testing_for_node23 | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v2 | ||
with: | ||
node-version: 23 | ||
- name: Install npm dependencies | ||
run: npm install | ||
- name: Print put node & npm version | ||
run: node --version && npm --version | ||
- name: Install chromium | ||
run: npx playwright install chromium | ||
- name: Run unit test | ||
run: | | ||
status=0 | ||
npm run test || status=$? | ||
if [ ${status} -ne 0 ]; then | ||
echo "::error:: Early testing for node23 job failed." | ||
echo "nodejs_v23_fail=true" >> "${GITHUB_OUTPUT}" | ||
exit 0 # Ignore error here to keep the green checkmark going | ||
fi; | ||
exit ${status} | ||
- name: workflow status | ||
if: ${{ steps.early_testing_for_node23.outputs.nodejs_v23_fail != 'true' }} | ||
run: | | ||
echo "::notice:: nodejs v23 test passed" |