refactor(test): replaces mocha with node:test #680
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
name: ci | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
workflow_dispatch: | |
env: | |
NODE_LATEST: 20.x | |
PLATFORM: ubuntu-latest | |
CI: true | |
# the LANG (used by the Intl API, which we use for some of the number | |
# formatting) is set in the run scripts. This works everywhere, except on | |
# windows. So, especially for windows ... | |
LANG: en_US.UTF-8 | |
# Same for NODE_OPTIONS, just for windows: | |
NODE_OPTIONS: --no-warnings | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
check-linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: [16.x, 20.x] | |
platform: [ubuntu-latest] | |
runs-on: ${{matrix.platform}} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
if: github.event_name == 'pull_request' && matrix.node-version == env.NODE_LATEST | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
if: github.event_name != 'pull_request' || matrix.node-version != env.NODE_LATEST | |
- uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: ${{matrix.node-version}}@${{matrix.platform}}-build-${{hashFiles('package.json')}} | |
restore-keys: | | |
${{matrix.node-version}}@${{matrix.platform}}-build- | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{matrix.node-version}} | |
- name: install & build | |
run: | | |
npm install | |
npm run build | |
- name: lint (run on node ${{env.NODE_LATEST}} only) | |
if: matrix.node-version == env.NODE_LATEST | |
run: npm run lint | |
- name: forbidden dependency check | |
run: npm run depcruise | |
- name: test coverage (run on node ${{env.NODE_LATEST}} only) | |
if: matrix.node-version == env.NODE_LATEST | |
run: npm run test:cover | |
- name: emit coverage results & depcruise result to step summary | |
if: always() && matrix.node-version == env.NODE_LATEST | |
run: | | |
echo '## Code coverage' >> $GITHUB_STEP_SUMMARY | |
node tools/istanbul-json-summary-to-markdown.mjs < coverage/coverage-summary.json >> $GITHUB_STEP_SUMMARY | |
yarn --silent depcruise --output-type markdown >> $GITHUB_STEP_SUMMARY | |
- name: on pushes to the default branch emit graph to the step summary | |
if: always() && matrix.node-version == env.NODE_LATEST && github.event_name == 'push' && github.ref_name == github.event.repository.default_branch | |
run: | | |
echo '## Visual overview' >> $GITHUB_STEP_SUMMARY | |
echo '```mermaid' >> $GITHUB_STEP_SUMMARY | |
yarn --silent depcruise:graph:mermaid >> $GITHUB_STEP_SUMMARY | |
echo '' >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
- name: on pull requests emit depcruise graph to step summary with changed modules highlighted | |
if: always() && matrix.node-version == env.NODE_LATEST && github.event_name == 'pull_request' && github.ref_name != github.event.repository.default_branch | |
run: | | |
echo '## Visual diff' >> $GITHUB_STEP_SUMMARY | |
echo Modules changed in this PR have a fluorescent green color. All other modules in the graph are those directly or indirectly affected by changes in the green modules. >> $GITHUB_STEP_SUMMARY | |
echo '```mermaid' >> $GITHUB_STEP_SUMMARY | |
SHA=${{github.event.pull_request.base.sha}} yarn --silent depcruise:graph:mermaid:diff >> $GITHUB_STEP_SUMMARY | |
echo '' >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
- name: regular test (run on node != ${{env.NODE_LATEST}} only) | |
if: matrix.node-version != env.NODE_LATEST | |
# we could've used npm test, but on node 16 --test-reporter isn't supported yet. So until | |
# then we'll just run the test files directly | |
run: node --test test/*.test.mjs test/*/*.test.mjs test/*/*/*.test.mjs test/*/*/*/*.test.mjs | |
check-windows: | |
env: | |
PLATFORM: windows-latest | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
with: | |
path: node_modules | |
key: ${{env.NODE_LATEST}}@${{env.PLATFORM}}-build-${{hashFiles('package.json')}} | |
restore-keys: | | |
${{env.NODE_LATEST}}@${{env.PLATFORM}}-build- | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{env.NODE_LATEST}} | |
- name: install & build | |
run: | | |
npm install | |
npm run build | |
- run: npm run depcruise | |
- run: node --test --test-reporter ./tools/custom-reporter.mjs test/*.test.mjs test/*/*.test.mjs test/*/*/*.test.mjs test/*/*/*/*.test.mjs | |
check-berry-integration: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
.yarn | |
.yarnrc.yml | |
.pnp.js | |
yarn.lock | |
key: ${{env.NODE_LATEST}}@${{env.PLATFORM}}-build-${{hashFiles('package.json')}} | |
restore-keys: | | |
${{env.NODE_LATEST}}@${{env.PLATFORM}}-build- | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{env.NODE_LATEST}} | |
- name: install & build | |
run: | | |
rm -f .npmrc | |
yarn set version berry | |
YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn | |
- name: forbidden dependency check | |
run: | | |
yarn --version | |
yarn depcruise | |
# testing doesn't work as the tests are esm and berry, with pnp enabled, | |
# doesn't support esm yet. | |
# - name: test coverage | |
# run: | | |
# node --version | |
# yarn --version | |
# yarn test:cover |