Skip to content

Release: test-robustness lane — failure signatures, run diff, flake clustering, step timeline (v191–v194)#414

Merged
JE-Chen merged 8 commits into
mainfrom
dev
Jun 24, 2026
Merged

Release: test-robustness lane — failure signatures, run diff, flake clustering, step timeline (v191–v194)#414
JE-Chen merged 8 commits into
mainfrom
dev

Conversation

@JE-Chen

@JE-Chen JE-Chen commented Jun 24, 2026

Copy link
Copy Markdown
Member

Release: test-robustness lane (v191–v194)

Bundles the completed test-robustness lane — four pure-stdlib analytics features over run / failure data, each merged to dev CI-green (Codacy 0 / SonarCloud OK / all matrices + Docker).

This completes ROUND-14 (4 lanes: native-UI control depth, cross-app clipboard, vision, test-robustness). All logic is headless-testable pure stdlib; EN/Zh docs (v191–v194) + WHATS_NEW entries included.

JE-Chen added 8 commits June 25, 2026 01:28
Two runs that failed the same way rarely have byte-identical error
text (paths, line numbers, addresses, ids, timestamps differ), which
defeats 'is this the same failure?' and 'which tests fail together?'.
Strip the variable parts of an error to a canonical form and hash it
(SHA-256) so the same kind of failure gets the same short signature
across runs - the join key run diffing and flake clustering group on.
group_failures buckets a list of errors by signature. Pure stdlib.
…ature-batch

Add failure_signature: normalise + hash errors to stable signatures
A run history says a run failed but not what changed from the run that
passed. Align two step sequences with an LCS walk (so an inserted or
removed step shifts the rest into place instead of mis-pairing) and
classify the differences: added/removed steps, status flips (with the
new failure's signature), and timing regressions. summarize_run_diff
renders a one-line summary. Pure stdlib over step dicts.
Add run_diff: LCS-aligned diff of two run step-traces
…ard)

Flaky tests are rarely independent - a wobbly fixture or noisy
dependency makes a group fail in the same runs (~75% of flaky tests
cluster). Ranking tests one-by-one by flip rate misses that shared root
cause. Measure how often each pair fails in the same runs (Jaccard over
their failing-run sets) and group tests above a threshold into connected
clusters with a cohesion score. Pure stdlib over a list of failed-test
sets.
…r-batch

Add flake_cluster: cluster tests that flake together (co-failure Jaccard)
The action profiler aggregates timings by step name across runs, which
can't explain why one specific run was slow. Turn a single run's ordered
steps into a waterfall (each step's offset, duration and share of the
total) with the bottleneck step and a parallelism ratio, and rank the
dominant steps. A step is any {name, duration, start?} dict; explicit
start times place overlapping steps on an absolute timeline. Pure
stdlib.
…e-batch

Add step_timeline: per-run step waterfall + bottleneck steps
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 152 complexity · 0 duplication

Metric Results
Complexity 152
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@JE-Chen JE-Chen merged commit b39e825 into main Jun 24, 2026
31 checks passed
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant