Background
Two small infra-only fixes that have no functional impact on the pipeline but reduce reviewer friction.
-
The pipeline's nf-test workflows in .github/workflows/ use three different actions/checkout versions. The nf-test.yml workflow is template-derived (matches the nf-core/tools template at actions/checkout@v6), but our two pipeline-specific extensions — nf-test-arm.yml and nf-test-gpu.yml — have drifted to @v5 and @v4 respectively.
-
Every entry in tests/*.nf.test.snap carries a wall-clock timestamp field that rotates on each re-snapshot. nf-test does not compare these for snapshot equality (otherwise CI would never pass twice), but they show up as noise in every PR diff that regenerates snapshots.
Both items are pipeline-owned (not template content). Task 1 is straightforward; Task 2 turns out to be blocked on upstream nf-test (see status note below), so this issue ships Task 1 only.
Task 1 — bump actions/checkout in pipeline-specific nf-test workflows
The nf-core/tools template uses actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 in .github/workflows/nf-test.yml. Our nf-test.yml already matches.
Bump the two pipeline-specific extensions to the same SHA-pinned v6:
.github/workflows/nf-test-arm.yml lines 43 and 93: change actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 → actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
.github/workflows/nf-test-gpu.yml lines 40 and 85: change actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 → actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
Do not touch nf-test.yml — already on v6 from the template.
While there, scan the same two workflow files for any other action references that have drifted from nf-test.yml (for example nf-core/setup-nextflow, actions/setup-python, nf-core/setup-nf-test). Record any drift in the PR description but only fix the checkout version in this PR — keep the diff focused.
Task 2 — strip timestamp from saved nf-test snapshots (deferred, upstream-blocked)
Every tests/*.nf.test.snap file has metadata of the form:
"timestamp": "2026-05-01T16:24:18.873464265",
"meta": {
"nf-test": "0.9.5",
"nextflow": "26.04.0"
}
nf-test does not compare these timestamps, so they don't break CI — but every snapshot regen rotates them, generating diff churn for the reviewer.
Status: Investigated against askimed/nf-test 0.9.5 and confirmed there is no clean way to strip this field from saved snapshots today:
SnapshotFileItem hardcodes the timestamp via DateTimeFormatter.ISO_DATE_TIME.format(LocalDateTime.now()) in its default constructor.
SnapshotFile#createJsonGenerator only excludes mapping from the JSON output; there is no config hook for additional excluded fields.
- nf-test's documented config options (
testsDir, workDir, configFile, libDir, profile, withTrace, autoSort, options, ignore, triggers, requires) do not include any snapshot-field filter.
- A post-write
jq/python strip in CI or pre-commit would diverge from what nf-test itself writes on every regen and adds maintenance burden, so it is not being pursued.
This task is deferred pending an upstream feature request against askimed/nf-test for a snapshot-field exclude option. Re-file as a separate issue here once that upstream tracker exists.
Verification
For Task 1:
- Run any of the changed workflows manually via
gh workflow run nf-test-arm.yml (on a feature branch) and confirm CI passes.
- Confirm the
actions/checkout SHA in the rendered workflow run UI matches de0fac2e4500dabe0009e67214ff5f5447ce83dd.
Acceptance criteria
Notes for the implementer
- Do not touch the
nf-test.yml workflow itself — it's template-derived, and we want to keep it aligned with the template so nf-core sync doesn't generate conflicts.
- The
paths input declared as required in .github/actions/nf-test/action.yml is also unused, but that file is template content; do not "fix" it here. If it bothers you, raise an issue against nf-core/tools.
Background
Two small infra-only fixes that have no functional impact on the pipeline but reduce reviewer friction.
The pipeline's nf-test workflows in
.github/workflows/use three differentactions/checkoutversions. Thenf-test.ymlworkflow is template-derived (matches the nf-core/tools template atactions/checkout@v6), but our two pipeline-specific extensions —nf-test-arm.ymlandnf-test-gpu.yml— have drifted to@v5and@v4respectively.Every entry in
tests/*.nf.test.snapcarries a wall-clocktimestampfield that rotates on each re-snapshot. nf-test does not compare these for snapshot equality (otherwise CI would never pass twice), but they show up as noise in every PR diff that regenerates snapshots.Both items are pipeline-owned (not template content). Task 1 is straightforward; Task 2 turns out to be blocked on upstream nf-test (see status note below), so this issue ships Task 1 only.
Task 1 — bump
actions/checkoutin pipeline-specific nf-test workflowsThe nf-core/tools template uses
actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6in.github/workflows/nf-test.yml. Ournf-test.ymlalready matches.Bump the two pipeline-specific extensions to the same SHA-pinned
v6:.github/workflows/nf-test-arm.ymllines 43 and 93: changeactions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5→actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.github/workflows/nf-test-gpu.ymllines 40 and 85: changeactions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4→actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6Do not touch
nf-test.yml— already on v6 from the template.While there, scan the same two workflow files for any other action references that have drifted from
nf-test.yml(for examplenf-core/setup-nextflow,actions/setup-python,nf-core/setup-nf-test). Record any drift in the PR description but only fix the checkout version in this PR — keep the diff focused.Task 2 — strip
timestampfrom saved nf-test snapshots (deferred, upstream-blocked)Every
tests/*.nf.test.snapfile has metadata of the form:nf-test does not compare these timestamps, so they don't break CI — but every snapshot regen rotates them, generating diff churn for the reviewer.
Status: Investigated against
askimed/nf-test0.9.5 and confirmed there is no clean way to strip this field from saved snapshots today:SnapshotFileItemhardcodes the timestamp viaDateTimeFormatter.ISO_DATE_TIME.format(LocalDateTime.now())in its default constructor.SnapshotFile#createJsonGeneratoronly excludesmappingfrom the JSON output; there is no config hook for additional excluded fields.testsDir,workDir,configFile,libDir,profile,withTrace,autoSort,options,ignore,triggers,requires) do not include any snapshot-field filter.jq/python strip in CI or pre-commit would diverge from what nf-test itself writes on every regen and adds maintenance burden, so it is not being pursued.This task is deferred pending an upstream feature request against
askimed/nf-testfor a snapshot-field exclude option. Re-file as a separate issue here once that upstream tracker exists.Verification
For Task 1:
gh workflow run nf-test-arm.yml(on a feature branch) and confirm CI passes.actions/checkoutSHA in the rendered workflow run UI matchesde0fac2e4500dabe0009e67214ff5f5447ce83dd.Acceptance criteria
.github/workflows/nf-test-arm.ymlandnf-test-gpu.ymluse the sameactions/checkoutSHA as the template (de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6)nf-test.ymlis unchangedNotes for the implementer
nf-test.ymlworkflow itself — it's template-derived, and we want to keep it aligned with the template sonf-core syncdoesn't generate conflicts.pathsinput declared as required in.github/actions/nf-test/action.ymlis also unused, but that file is template content; do not "fix" it here. If it bothers you, raise an issue againstnf-core/tools.