Files
CommunitySolidServer/.github/workflows/npm-test.yml
Joachim Van Herwegen 6248ed0938 refactor: Replace linting configurations
The previous package was outdated, preventing us from updating TS.
This one also lints YAML and JSON,
and applies many more rules to the test files,
explaining all the changes in this PR.
2023-11-02 09:49:17 +01:00

142 lines
3.8 KiB
YAML

name: NPM test
on:
workflow_call:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1
- uses: actions/setup-node@v4
with:
node-version: 16.x
- run: npm ci --ignore-scripts
- run: npm run lint
test-unit:
# Run unit tests on windows and linux
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
operating-system:
- ubuntu-latest
- windows-latest
node-version:
- '18.0'
- 18.x
- '20.0'
- 20.x
timeout-minutes: 15
steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Ensure line endings are consistent
run: git config --global core.autocrlf input
- name: Check out repository
uses: actions/checkout@v4.1.1
- name: Install dependencies and run build scripts
run: npm ci
- name: Type-check tests
run: npm run test:ts
- name: Run unit tests
run: npm run test:unit
- name: Submit unit test coverage
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
flag-name: test-unit-${{ matrix.node-version }}-${{ matrix.operating-system }}
parallel: true
test-integration:
# Run integration tests on linux (full suite, with external dependencies)
runs-on: ubuntu-latest
strategy:
matrix:
node-version:
- 18.x
- 20.x
env:
TEST_DOCKER: true
services:
sparql-endpoint:
image: tenforce/virtuoso
env:
SPARQL_UPDATE: true
ports:
- 4000:8890
redis:
image: redis
ports:
- 6379:6379
timeout-minutes: 20
steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Check out repository
uses: actions/checkout@v4.1.1
- name: Install dependencies and run build scripts
run: npm ci
- name: Run integration tests
run: npm run test:integration
test-integration-windows:
# Run integration tests on windows (no external dependencies)
runs-on: windows-latest
strategy:
matrix:
node-version:
- 18.x
- 20.x
timeout-minutes: 20
steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Ensure line endings are consistent
run: git config --global core.autocrlf input
- name: Check out repository
uses: actions/checkout@v4.1.1
- name: Install dependencies and run build scripts
run: npm ci
- name: Run integration tests
run: npm run test:integration
test-configs:
# Test startup of CSS with all configs inside the config/ folder
runs-on: ubuntu-latest
services:
sparql-endpoint:
image: tenforce/virtuoso
env:
SPARQL_UPDATE: true
ports:
- 4000:8890
steps:
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 16.x
- name: Check out repository
uses: actions/checkout@v4.1.1
- name: Install dependencies and run build scripts
run: npm ci
- name: Run deploy tests
run: npm run test:deploy
coveralls:
# Consolidate test coverage reports from all unit tests
needs: test-unit
runs-on: ubuntu-latest
steps:
- name: Consolidate test coverage from different jobs
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true