Yeah, this is a footgun. The parallel job syntax creates N identical jobs and they all try to write to the same artifact path, so later ones overwrite earlier ones. GitLab should warn about this harder.
The fix is using the matrix strategy or explicit job names with different artifact paths:
test:
parallel:
matrix:
- SHARD: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
artifacts:
reports:
junit: coverage/junit-${SHARD}.xml
Then use a separate job to merge them. We hit this exact issue at scale and spent a week wondering why flaky tests weren't showing up in reports. The real problem is that CI systems assume you know this, but it's not obvious until you're running it.