Define the frontend mutation-testing merge policy from measured evidence
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Documentation
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript
- Domain
- frontend, testing-qa
Research direction
Begin after prerequisites #8812 and #8813, then read the baseline mutation report and review full-run time, surviving-mutant categories, CI reliability, frontend change frequency, and Stryker incremental-mode results with Vitest. Done means documenting the measured quality gate, handling of surviving and equivalent mutants, tool failures versus score regressions, the incremental PR decision, and the focused follow-up policy.
Written by the indexing model from the issue text.
Description
Goal
Define how frontend mutation testing should protect LibreSign pull requests after the complete baseline, incremental benchmark and observational pull-request workflow have produced real project data.
Use measured LibreSign evidence together with current StrykerJS guidance and mutation-testing literature.
Do not choose a score threshold only because another project uses it.
Inputs
Review:
- complete frontend baseline results;
- incremental benchmark results;
- real observational PR workflow runs;
- full-run execution time;
- normal PR mutation-test latency;
- recurring surviving-mutant categories;
- CI reliability;
- incremental-state invalidation behavior;
- normal frontend change frequency.
Decisions
Document explicit answers for:
- whether mutation score, covered-code mutation score or another signal should be the blocking score;
- what threshold, if any, is justified for changed code;
- whether individual surviving mutants should block independently of a score threshold;
- how no-coverage changed code should be treated;
- how equivalent or non-actionable mutants should be documented;
- how test-only pull requests should be evaluated;
- which changes must invalidate incremental state or trigger the broader safety mode;
- what normal PR mutation-test latency is acceptable;
- how operational failures differ from mutation-score regressions.
Incremental safety
StrykerJS incremental mode can detect mutated source and test changes, and the Vitest runner reports exact test locations.
However, incremental mode does not automatically detect all environment and support-file changes.
The policy must explicitly define broader execution for changes that invalidate incremental assumptions, including relevant dependency, configuration, environment, snapshot or shared-test-infrastructure changes.
Fixed safety requirements
The policy must preserve these requirements unless later evidence demonstrates a safer equivalent:
- mutation testing runs before merge for mutation-relevant frontend pull requests;
- operational Stryker/Vitest failures fail the mutation check;
- the complete mutation suite is not required on every normal pull request when a validated incremental strategy provides reliable merge protection;
- untrusted or incompatible incremental state is not silently reused.
Score changes
Do not lower an established threshold simply because a new change fails it.
Investigate the regression first.
If an established threshold later becomes technically unrepresentative, change it in a dedicated PR with evidence explaining why.
Follow-up policy
Mutation testing will continue to identify historical test weaknesses after this epic closes.
Create focused issues when a surviving mutant exposes a meaningful unprotected behavior.
Do not reopen or extend this infrastructure epic as a permanent mutant backlog.
Done when
- LibreSign has a documented frontend mutation-testing merge policy.
- Any blocking score is justified by measured project data.
- Incremental-state invalidation and broad-mode triggers are explicit.
- Test-only pull-request behavior is explicit.
- Equivalent/non-actionable mutant handling is documented.
- Operational failures and score regressions are treated separately.
- Normal PR latency expectations are documented.
- The policy provides enough information to configure a required merge check.
References
- Parent epic: #8810
- Complete baseline: #8812
- Incremental benchmark: #8905
- Change-aware PR workflow: #8906
- StrykerJS incremental mode: https://stryker-mutator.io/docs/stryker-js/incremental/
- Dominant language
- PHP
- Stars
- 818
- Forks
- 146
- Avg merge
- 7h 8m
- Merged PRs (30d)
- 549
Getting set up
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from LibreSign/libresign
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
LibreSign/libresign#8284 · 5 comments ·
Maintainers usually reply within 1 day
-
backend enhancement php
Difficulty 4/5 3-5 days Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
backend enhancement php
Difficulty 5/5 Over a week Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
backend php
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
-
frontend javascript
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
All issues in LibreSign/libresign
Similar issues
-
sync-en
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
bug Feature: Kiosk
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Infrastructure: actions Module: zmscitizenapi Module: zmsentities php Type: Bug unit tests
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
it-at-m/eappointment#3480 ·
Maintainers usually reply within 1 day
-
HttpClient
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
CI: composer install fails — league/flysystem 1.x blocked by security advisory GHSA-cxf4-7mrp-vvprOpendevops type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day