ScenarioRunDrift class

What changed between two runs of one suite — nothing, if the suite is deterministic.

See compareScenarioRuns for why this is worth asking.

Constructors

ScenarioRunDrift({required int compared, required List<ScenarioStepDrift> changed, required List<ScenarioStepDrift> added, required List<ScenarioStepDrift> removed, int nameMatched = 0, int unanchored = 0, String? baseline, String? file, bool pixelsIgnored = false})
const

Properties

added → List<ScenarioStepDrift>
Steps only the later run captured, and only the earlier one.
final
baseline → String?
Which run this one was compared against, worktree-relative — the directory holding its run.json.
final
byFacet → Map<String, int>
How many changed steps moved in each facet, most-moved first. A step that moved in two is counted under both.
no setter
changed → List<ScenarioStepDrift>
Steps both runs captured whose records disagree — the pixels, or one of the facets around them. Each says which in ScenarioStepDrift.what.
final
compared → int
Steps both runs captured, both carrying a digest — the denominator.
final
file → String?
Where the whole of this is on disk, worktree-relative — every step of every list, uncapped, as drift.json beside the run's own report.
final
hashCode → int
The hash code for this object.
no setterinherited
isEmpty → bool
no setter
nameMatched → int
How many of compared were paired by their own Shot name.
final
pixelsIgnored → bool
True when the pixels were left out of the comparison because one of the runs was on the real clock: its pictures came off live data and differ from the last run's by weather. Said here so a reader of a quiet drift knows what quiet covers.
final
removed → List<ScenarioStepDrift>
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
summary → String?
The one line worth printing after a run, or null when the two runs agree about everything and there is nothing to say.
no setter
unanchored → int
How many of compared were paired by nothing but the position they happened to sit at — no Shot name at or above them in their branch.
final

Methods

inFile(String path) → ScenarioRunDrift
This drift, saying where the whole of it was written.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toJson({int? maxSteps = 20}) → Map<String, Object?>
maxSteps caps each list, the way every other projection in this report caps: a suite that moved everywhere would otherwise spend the whole answer saying so, and the count above the list is the part that matters. Null writes every step, which is what file holds.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

fromJson(Map<String, Object?> json) → ScenarioRunDrift
Decodes what toJson wrote. The lists come back capped as they were written; the counts are whole, so changed.length and the count they were made from can disagree — file names the copy where they do not.