pokemon-showdown/.github/workflows/test.yml
TurboRx 2dfe57c13a
Bump GitHub Actions versions (#11826)
Co-authored-by: TurboRx <TurboRx@users.noreply.github.com>
2026-03-18 18:03:59 -07:00

89 lines
2.9 KiB
YAML

# This workflow will do an install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Node.js CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_call:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
# Testing multiple Node versions makes CI take forever, and basically
# never actually finds anything we care about. Testing one is enough.
#
# This number should be left at the oldest Node LTS version capable of
# running Node without errors (it doesn't matter if it's unsupported).
# Please freely bump this version (and the check in `pokemon-showdown`
# and `server/index.ts`) if you want to use features from newer versions;
# this is purely for our own reference, not to constrain programmers.
node-version: ['18.x']
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 100 # assumes PR/push to master is no larger than 100 commits. Other solutions are needlessly complex.
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- name: Determine which files to lint (if pull request)
if: ${{ github.event_name == 'pull_request' }}
id: changed-files
uses: tj-actions/changed-files@v47
with:
files: |
./config/*.ts
./data/**/*.ts
./lib/*.ts
./server/**/*.ts
./server/**/*.tsx
./sim/**/*.ts
./tools/set-import/*.ts
files_ignore: |
./logs/
./node_modules/
./dist/
./data/**/learnsets.ts
./tools/set-import/importer.js
./tools/set-import/sets
./tools/modlog/converter.js
./server/global-variables.d.ts
- name: Determine whether test/sim or test/random-battles need to run (if pull request)
if: ${{ github.event_name == 'pull_request' }}
id: changed-directories
uses: tj-actions/changed-files@v47
with:
files: |
config/formats.ts
data/**
sim/**
- name: Run selective lint & necessary tests (if pull request)
if: ${{ github.event_name == 'pull_request' }}
run: npm run full-test-ci
env:
CI: true
FILES: ${{ steps.changed-files.outputs.all_changed_and_modified_files }}
SKIPSIMTESTS: ${{ steps.changed-directories.outputs.all_changed_and_modified_files == '' }}
- name: Run full lint & test (if push to master)
run: npm run full-test
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
env:
CI: true