mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 11:07:10 +00:00
X/Y were documented as Tap and InputText only, while DoubleTap and LongPress resolve coordinates from the same fields; the endpoints and DurationMillis were documented as Swipe only, and Scroll reads both.
79 lines
2.8 KiB
Go
79 lines
2.8 KiB
Go
package verifier
|
|
|
|
// ActionKind identifies the category of a generated UI action.
|
|
type ActionKind string
|
|
|
|
const (
|
|
ActionKindTap ActionKind = "Tap"
|
|
ActionKindDoubleTap ActionKind = "DoubleTap"
|
|
ActionKindInputText ActionKind = "InputText"
|
|
ActionKindSwipe ActionKind = "Swipe"
|
|
ActionKindPressKey ActionKind = "PressKey"
|
|
ActionKindWait ActionKind = "Wait"
|
|
ActionKindLongPress ActionKind = "LongPress"
|
|
ActionKindScroll ActionKind = "Scroll"
|
|
)
|
|
|
|
// Action is a single UI interaction produced by the spec's action generator.
|
|
type Action struct {
|
|
Kind ActionKind
|
|
On string
|
|
Text string
|
|
// X, Y hold the element center when the spec passed an ax element to a
|
|
// point-dispatched kind (Tap, DoubleTap, LongPress, InputText). Zero means
|
|
// the runner must resolve On against the current hierarchy.
|
|
X, Y int
|
|
// Gesture endpoints (raw px), read by Swipe and by Scroll. A Scroll that
|
|
// carries none has them computed from its container and Direction, so
|
|
// leaving them zero is how an authored Scroll asks for that.
|
|
FromX, FromY int
|
|
ToX, ToY int
|
|
// DurationMillis is the Swipe or Scroll gesture duration, or the Wait
|
|
// duration.
|
|
DurationMillis int
|
|
// Key is the logical key name for ActionKindPressKey.
|
|
Key string
|
|
// Direction is the scroll direction for ActionKindScroll: one of "up",
|
|
// "down", "left", "right". Empty for every other kind.
|
|
Direction string
|
|
// Applied is meaningful only on the action a step reports to the spec as
|
|
// state.lastAction: true when the runner saw the dispatch succeed, false
|
|
// when the apply call failed and nothing can say whether the action
|
|
// reached the app. The spec is told which of the two it is.
|
|
Applied bool
|
|
// Source names the generator that produced this action, "setup" or
|
|
// "seeded", as the runtime entry tagged it. Empty on an action the runner
|
|
// built itself (the model policy's pick), which the runner names instead.
|
|
Source string
|
|
// Relaunched, like Applied, is meaningful only on state.lastAction: the
|
|
// runner brought the app back to the foreground after this action, so the
|
|
// two readings the spec compares straddle a restart. The action still
|
|
// happened; what a property cannot assume across it is that app state ran
|
|
// continuously from one reading to the next.
|
|
Relaunched bool
|
|
}
|
|
|
|
// LogEntry mirrors a logcat line captured between steps.
|
|
type LogEntry struct {
|
|
UnixMillis int64
|
|
Level string
|
|
Tag string
|
|
Message string
|
|
}
|
|
|
|
// Exception mirrors an SDK-captured uncaught throwable.
|
|
type Exception struct {
|
|
Class string
|
|
Message string
|
|
StackTrace string
|
|
UnixMillis int64
|
|
}
|
|
|
|
// ExtractorChange records a single extractor's value transition across one
|
|
// step. Used to surface "what changed at this step" breadcrumbs at violation
|
|
// markers in the replay UI.
|
|
type ExtractorChange struct {
|
|
Prev []byte
|
|
Curr []byte
|
|
}
|