Keep fresh coverage and both real mutation preflights required in every CI tier. Run complete canonical sweeps daily or manually in isolated jobs with distinct reports, retained failure diagnostics, and explicit report-presence checks. Preserve regression inventories, release qualification and mutation settings; remove the superseded duplicate gate test. Related: #3281.
63 lines
1.8 KiB
YAML
63 lines
1.8 KiB
YAML
name: Mutation sweep
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "47 4 * * *"
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: mutation-${{ github.ref }}
|
|
cancel-in-progress: false
|
|
|
|
env:
|
|
HUSKY: "0"
|
|
|
|
jobs:
|
|
mutation:
|
|
name: Mutation sweep (${{ matrix.suite }})
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 60
|
|
strategy:
|
|
fail-fast: false
|
|
max-parallel: 2
|
|
matrix:
|
|
include:
|
|
- suite: reverse-tools
|
|
config: stryker.config.mjs
|
|
- suite: reverse-tools-semantics
|
|
config: stryker.semantics.config.mjs
|
|
steps:
|
|
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
|
with:
|
|
node-version-file: .nvmrc
|
|
- name: Cache npm package downloads
|
|
uses: ./.github/actions/npm-cache
|
|
- run: npm ci
|
|
- run: npm run test:prepare
|
|
- name: Run the complete configuration
|
|
env:
|
|
MUTATION_CONFIG: ${{ matrix.config }}
|
|
run: |
|
|
node scripts/prepare-reverse-tools-mutation.mjs
|
|
npx --no-install stryker run "${MUTATION_CONFIG}"
|
|
- name: Require both reports from the completed sweep
|
|
env:
|
|
REPORT_BASE: reports/mutation/${{ matrix.suite }}
|
|
run: |
|
|
test -s "${REPORT_BASE}.json"
|
|
test -s "${REPORT_BASE}.html"
|
|
- name: Retain available mutation diagnostics
|
|
if: ${{ !cancelled() }}
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: mutation-${{ matrix.suite }}-${{ github.run_attempt }}
|
|
path: |
|
|
reports/mutation/${{ matrix.suite }}.json
|
|
reports/mutation/${{ matrix.suite }}.html
|
|
if-no-files-found: warn
|
|
retention-days: 7
|