testerpaykit library

Classes

AnnotatedElementInfo
Information about an annotated element for automation
AnnotatedScreenshot
An annotated screenshot containing both image data and widget metadata
AnnotatedScreenshotService
Service for capturing annotated screenshots with widget metadata
AnnotationEvent
Event emitted when annotations change
AnnotationInteraction
Record of an interaction with an annotated widget
AnnotationInteractionTracker
Service that tracks interactions with annotated widgets and auto-completes tasks based on completion triggers
ApiClient
AppMetadata
App metadata
AssignedTask
One task assigned to the calling tester, as returned by GET /v1/testers/tasks. taskPresetId is the stable id a host app annotates a widget with (via TesterTaskRelevant(taskId: …)); assignmentId is the per-tester row the start/complete endpoints act on.
AssignedTasks
The tester's task list + the server-computed completed/total counts.
AttachmentResponse
Attachment response
BugFix
Information about a recently fixed bug
BugMarker
Marker widget for identifying widgets associated with bugs
BugMarkerInfo
Information about a discovered bug marker
BugMarkerOverlay
Visual bug marker overlay that shows bug information
BugMarkerRenderObject
Render object for BugMarker
BugReportResponse
Bug report response
BugReportSubmitResult
Result of submitting one bug report.
BugReportUploadService
Network-aware bug report upload service with offline queueing
BuildInfo
Information about the current build being tested
DeviceMetadata
Minimal device metadata (privacy-preserving)
ErrorBudget
Error budget for graceful failure handling
EventTracker
Tracks and stores events
FeedbackResponse
Feedback response
FeedbackStats
Feedback statistics
FocusArea
Testing focus area with guidance for testers
FocusAreaMarkerInfo
Information about a focus area marker
IntegrityHelper
Helper class for generating and verifying integrity hashes
KnowledgeBaseAnswer
Answer returned by ApiClient.askKnowledgeBase. Mirrors the /knowledge-base/query response — answer string + the chunks the LLM was given for citation rendering.
KnowledgeBaseCitation
KnowledgeFile
Knowledge-base file with its full markdown content.
KnowledgeFileSummary
Knowledge-base file metadata (no content — fetch via getKnowledgeFile).
LoginResponse
Login response
MetricsAggregator
Aggregates events and sessions into metrics
MockTestData
Mock data generator for testing dashboard
MyBugItem
One of the calling tester's own bug reports, as returned by GET /v1/testers/me/bug-reports. Backs the in-app "Meine Bugs" list so a tester can follow what they submitted + its status.
MyBugsScreen
NetworkCaptureEntry
NetworkCaptureInterceptor
NetworkCaptureService
NotificationsResult
Result of ApiClient.getMyNotifications — the list plus the unread badge count (server-computed, so the SDK doesn't re-count).
PayoutBonuses
Bonus amounts
PayoutCalculator
Calculator for estimating and computing payouts
PayoutResult
Result of a payout calculation
PayoutRule
Payout calculation rules
QualityFlags
Quality assessment flags
QualityMultipliers
Quality-based multipliers
ReleaseNote
A single "what's new" bullet point shown on the welcome sheet.
RenderFocusAreaMarker
RenderObject for focus area markers
RenderTaskAnnotation
RenderObject for task annotations
RetestItem
ScopedErrorBudget
Scoped error budget that resets after a time period
SensitiveWidgetInfo
Information about a discovered sensitive widget
SessionDetailsScreen
Branded, read-only Session-Details screen — opened by tapping the "Session earnings" header in the FAB radial menu.
SessionManager
Manages user sessions
SessionMetrics
Aggregated metrics for a testing period
SessionStats
Session statistics
SubmissionResponse
Submission response
SubmissionResult
Result of a submission operation
SubmissionService
Handles submission creation and upload
TaskAnnotation
Annotation that links a widget to a test task
TaskAnnotationRegistry
Central registry for task annotations
TaskCompletionEvent
Event emitted when a task is auto-completed
TaskInteractionSummary
Summary of interactions for a task
TaskPreset
A preset task configuration for testers
TaskProgress
A snapshot of the tester's checklist progress — what the in-app "X von Y erledigt" display reads.
TaskStats
Task statistics
TaskStep
Individual task step
TesterDashboardScreen
Tester dashboard screen showing tasks, build info, and focus areas
TesterDeviceResponse
Server-side tester-device response — returned by POST /v1/testers/me/devices after the SDK upserts its device fingerprint. The id is what subsequent bug-reports + sessions reference as device_id.
TesterFocusArea
Widget that marks an entire focus area in the UI
TesterPayKit
Main SDK class for TesterPayKit
TesterPayKitConfig
Configuration for TesterPayKit SDK
TesterPayKitOnboardingScreen
Full-screen onboarding. Push it via Navigator from the host. The screen pops itself when complete; awaiting the push gives the host a Future that resolves when onboarding is done (whether by skip or finish).
TesterPayKitWrapper
Wrapper widget that shows tester dashboard before the actual app
TesterProfile
Tester profile information
TesterSensitive
Marks child widget tree as containing sensitive data. Screenshots will blur or mask this region.
TesterSensitiveRenderObject
Marker RenderObject for sensitive widgets
TesterSessionResponse
Server-side tester session response — what the API returns when the SDK calls POST /v1/testers/sessions. The id is the canonical session identifier from the server's sessions.id column and is what subsequent end/event/breadcrumb requests reference.
TesterTask
A single concrete action we want the tester to perform during this run ("Scan 3 receipts and favourite one"). Rendered as a checklist row; check-state is local-only for now.
TesterTaskRelevant
Widget that annotates a UI element as relevant to a specific test task
TesterUnsensitive
Unmasks a region within a sensitive parent. Useful for showing non-sensitive data within sensitive forms.
TesterUnsensitiveRenderObject
Marker RenderObject for unsensitive widgets within sensitive regions
TesterWelcomeSheet
TestTask
A testing task assigned to a tester
TpkNavigatorObserver
Drop-in NavigatorObserver that auto-records a screen view whenever the host app pushes or replaces a page route — so TesterPayKit can measure navigation depth WITHOUT the host instrumenting every screen with a manual TesterPayKit.instance.trackScreenView(...) call.
TpkNotification
One bug in the tester's retest queue — what GET /v1/testers/me/retests returns per item. The two action endpoints (verifyRetest/reopenRetest) flip the status and don't need a separate response class. One in-widget notification (migration 038) — what the FAB "Nachrichten" inbox lists. Mirrors the JSON shape returned by GET /v1/testers/me/notifications.
TPKTalker
ValidationConstants
Validation thresholds and constants for quality checks
VersionRange
Semantic version range for task annotations
VoiceBugExtractResponse
Five-field result returned by voice-extract — the BugReportDialog drops these directly into its TextEditingControllers + frequency dropdown. transcript is the raw Whisper text — kept for debug surfaces / future "edit raw transcript" features. preClassification is the tester's pre-recording pick (bug / featureRequest / idea / problem / changeRequest) — usually just echoed back, but server could in theory override after LLM analysis.
WeeklySummary
Weekly summary submission from a tester
WelcomeBrief
Bundle of release notes + tasks for one app version. Passed by the host to TesterPayKit.showWelcomeSheetIfNeeded.
WidgetDiscovery
Widget discovery service for tracking and finding widgets across the app
WidgetDiscoveryAnalytics
Analytics about widget discovery
WidgetInfo
Information about a widget captured in a screenshot
WidgetTour
The 3-card swipeable onboarding tour. Self-contained, no host config. Dismisses itself (pops the bottom sheet) when the tester finishes ("Los geht's") or taps "Überspringen"; the optional onDone callback fires in both cases.

Enums

AnnotationEventType
Type of annotation event
BugPriority
Bug report priority levels
BugReportSubmitOutcome
Outcome of a BugReportUploadService.submitBugReport call — what the SDK should tell the user. Keeps the UI honest after a 5xx / offline / dedupe situation rather than flashing a fake green ✓.
BugSeverity
Bug severity levels
CompletionTrigger
Completion trigger type for task annotations
EventType
Types of events captured by the SDK
InteractionType
Type of interaction with an annotated widget
OutboxItemStatus
Status of an outbox item — used by TesterPayKit.getSubmissionStatus.
SensitiveMaskingMode
How to mask sensitive content in screenshots
SubmissionStatus
Status of a weekly summary submission
TesterStatus
Status of a tester in the system
TestTaskPriority
Priority level for testing tasks

Extensions

AnnotatedElementInfoPatterns on AnnotatedElementInfo
Adds pattern-matching-related methods to AnnotatedElementInfo.
AnnotationInteractionPatterns on AnnotationInteraction
Adds pattern-matching-related methods to AnnotationInteraction.
BugFixPatterns on BugFix
Adds pattern-matching-related methods to BugFix.
BuildInfoPatterns on BuildInfo
Adds pattern-matching-related methods to BuildInfo.
FocusAreaPatterns on FocusArea
Adds pattern-matching-related methods to FocusArea.
TaskAnnotationPatterns on TaskAnnotation
Adds pattern-matching-related methods to TaskAnnotation.
TaskInteractionSummaryPatterns on TaskInteractionSummary
Adds pattern-matching-related methods to TaskInteractionSummary.
TestTaskPatterns on TestTask
Adds pattern-matching-related methods to TestTask.
VersionRangeExtension on VersionRange
Extension methods for VersionRange
VersionRangePatterns on VersionRange
Adds pattern-matching-related methods to VersionRange.

Constants

kOnboardingDonePrefsKey → const String
SharedPreferences key that gates whether the onboarding ever runs again on this device.
kScreenshotConsentPrefsKey → const String
SharedPreferences key for screenshot consent (matches the key the BugReportDialog already reads — flipping it here means the dialog skips its own inline consent prompt).
kWidgetTourSeenPrefsKey → const String
SharedPreferences key gating whether the first-tap widget-tour has been seen on this device. Mirrors the Expo twin's "onboarding-done" key concept. Persisted via markWidgetTourSeen.

Functions

hasSeenWidgetTour() Future<bool>
Whether the first-tap widget-tour has already been seen on this device. Returns false (= show the tour) when storage is unavailable so a broken-prefs device still gets the intro instead of crashing. Never throws.
markWidgetTourSeen() Future<void>
Persist that the first-tap widget-tour has been seen so it never shows again. Best-effort — a storage failure is swallowed (the session guard in the FAB still suppresses repeats this run).
showWidgetTour(BuildContext context, {VoidCallback? onDone}) Future<void>
Show the WidgetTour as a modal bottom sheet. Resolves once the tour is dismissed (either by finishing or skipping). The returned Future completes after the sheet has popped, so a caller that just awaits it can persist the seen-flag + open the radial menu afterwards. The optional onDone also fires for callers that prefer the callback over awaiting.

Exceptions / Errors

ApiException
API exception