AI-powered visual verification for GUI testing. More...
#include <ai_vision_verifier.h>

Public Member Functions | |
| AIVisionVerifier (const VisionVerifierConfig &config={}) | |
| ~AIVisionVerifier () | |
| void | SetConfig (const VisionVerifierConfig &config) |
| const VisionVerifierConfig & | GetConfig () const |
| void | SetScreenshotCallback (ScreenshotCaptureCallback callback) |
| void | SetAIService (cli::AIService *service) |
| Set the AI service to use for vision verification. | |
| absl::StatusOr< VisionVerificationResult > | Verify (const std::string &condition) |
| Verify a single condition using AI vision. | |
| absl::StatusOr< VisionVerificationResult > | VerifyConditions (const std::vector< std::string > &conditions) |
| Verify multiple conditions in a single screenshot. | |
| absl::StatusOr< VisionVerificationResult > | CompareToReference (const std::string &reference_path, float tolerance=0.1f) |
| Compare current state against a reference screenshot. | |
| absl::StatusOr< std::string > | AskAboutState (const std::string &question) |
| Ask the AI an open-ended question about the current state. | |
| absl::StatusOr< VisionVerificationResult > | VerifyTileAt (int x, int y, int expected_tile_id) |
| Verify tile at canvas position matches expected tile ID. | |
| absl::StatusOr< VisionVerificationResult > | VerifyPanelVisible (const std::string &panel_name) |
| Verify that a specific editor panel is visible. | |
| absl::StatusOr< VisionVerificationResult > | VerifyEmulatorState (const std::string &state_description) |
| Verify game state in emulator matches expected values. | |
| absl::StatusOr< VisionVerificationResult > | VerifySpriteAt (int x, int y, const std::string &sprite_description) |
| Verify sprite rendering at specific location. | |
| absl::StatusOr< std::string > | CaptureScreenshot (const std::string &name) |
| Capture and save a screenshot. | |
| const std::vector< uint8_t > & | GetLastScreenshotData () const |
| Get the last captured screenshot data. | |
| void | ClearScreenshotCache () |
| Clear cached screenshots to free memory. | |
| void | BeginIterativeSession (int max_iterations=5) |
| Begin an iterative verification session. | |
| absl::Status | AddIterativeCheck (const std::string &condition) |
| Add a verification to the iterative session. | |
| absl::StatusOr< VisionVerificationResult > | CompleteIterativeSession () |
| Complete the iterative session and get results. | |
Private Member Functions | |
| absl::StatusOr< std::string > | CaptureAndEncodeScreenshot () |
| absl::StatusOr< std::string > | CallVisionModel (const std::string &prompt, const std::string &image_base64) |
| VisionVerificationResult | ParseAIResponse (const std::string &response, const std::string &screenshot_path) |
Private Attributes | |
| VisionVerifierConfig | config_ |
| ScreenshotCaptureCallback | screenshot_callback_ |
| cli::AIService * | ai_service_ = nullptr |
| std::vector< uint8_t > | last_screenshot_data_ |
| int | last_width_ = 0 |
| int | last_height_ = 0 |
| bool | in_iterative_session_ = false |
| int | iterative_max_iterations_ = 5 |
| int | iterative_current_iteration_ = 0 |
| std::vector< std::string > | iterative_conditions_ |
| std::vector< VisionVerificationResult > | iterative_results_ |
AI-powered visual verification for GUI testing.
This class provides multimodal AI capabilities for verifying GUI state through screenshot analysis. It integrates with Gemini, Ollama, or other vision-capable models to enable intelligent test assertions.
Usage example:
Definition at line 101 of file ai_vision_verifier.h.
|
explicit |
Definition at line 20 of file ai_vision_verifier.cc.
|
default |
|
inline |
Definition at line 107 of file ai_vision_verifier.h.
|
inline |
Definition at line 108 of file ai_vision_verifier.h.
References config_.
|
inline |
Definition at line 111 of file ai_vision_verifier.h.
References screenshot_callback_.
|
inline |
Set the AI service to use for vision verification.
When set, uses the provided AIService (e.g., GeminiAIService) for multimodal requests. When not set, uses placeholder responses.
| service | Pointer to an AIService instance (caller owns memory) |
Definition at line 123 of file ai_vision_verifier.h.
| absl::StatusOr< VisionVerificationResult > yaze::test::AIVisionVerifier::Verify | ( | const std::string & | condition | ) |
Verify a single condition using AI vision.
| condition | Natural language description of expected state. |
Definition at line 25 of file ai_vision_verifier.cc.
References CallVisionModel(), CaptureAndEncodeScreenshot(), and ParseAIResponse().
Referenced by AddIterativeCheck(), VerifyEmulatorState(), VerifyPanelVisible(), VerifySpriteAt(), and VerifyTileAt().

| absl::StatusOr< VisionVerificationResult > yaze::test::AIVisionVerifier::VerifyConditions | ( | const std::vector< std::string > & | conditions | ) |
Verify multiple conditions in a single screenshot.
| conditions | List of expected conditions. |
Definition at line 67 of file ai_vision_verifier.cc.
References CallVisionModel(), CaptureAndEncodeScreenshot(), and ParseAIResponse().

| absl::StatusOr< VisionVerificationResult > yaze::test::AIVisionVerifier::CompareToReference | ( | const std::string & | reference_path, |
| float | tolerance = 0.1f ) |
Compare current state against a reference screenshot.
| reference_path | Path to reference screenshot. |
| tolerance | Visual difference tolerance (0.0 = exact, 1.0 = any). |
Definition at line 110 of file ai_vision_verifier.cc.
References CallVisionModel(), CaptureAndEncodeScreenshot(), and ParseAIResponse().

| absl::StatusOr< std::string > yaze::test::AIVisionVerifier::AskAboutState | ( | const std::string & | question | ) |
Ask the AI an open-ended question about the current state.
| question | Question to ask about the screenshot. |
Definition at line 145 of file ai_vision_verifier.cc.
References CallVisionModel(), and CaptureAndEncodeScreenshot().

| absl::StatusOr< VisionVerificationResult > yaze::test::AIVisionVerifier::VerifyTileAt | ( | int | x, |
| int | y, | ||
| int | expected_tile_id ) |
Verify tile at canvas position matches expected tile ID.
Definition at line 159 of file ai_vision_verifier.cc.
References Verify().

| absl::StatusOr< VisionVerificationResult > yaze::test::AIVisionVerifier::VerifyPanelVisible | ( | const std::string & | panel_name | ) |
Verify that a specific editor panel is visible.
Definition at line 167 of file ai_vision_verifier.cc.
References Verify().

| absl::StatusOr< VisionVerificationResult > yaze::test::AIVisionVerifier::VerifyEmulatorState | ( | const std::string & | state_description | ) |
Verify game state in emulator matches expected values.
Definition at line 175 of file ai_vision_verifier.cc.
References Verify().

| absl::StatusOr< VisionVerificationResult > yaze::test::AIVisionVerifier::VerifySpriteAt | ( | int | x, |
| int | y, | ||
| const std::string & | sprite_description ) |
Verify sprite rendering at specific location.
Definition at line 182 of file ai_vision_verifier.cc.
References Verify().

| absl::StatusOr< std::string > yaze::test::AIVisionVerifier::CaptureScreenshot | ( | const std::string & | name | ) |
Capture and save a screenshot.
| name | Name for the screenshot file. |
Definition at line 190 of file ai_vision_verifier.cc.
References config_, last_height_, last_screenshot_data_, last_width_, LOG_DEBUG, screenshot_callback_, and yaze::test::VisionVerifierConfig::screenshot_dir.
|
inline |
Get the last captured screenshot data.
Definition at line 196 of file ai_vision_verifier.h.
| void yaze::test::AIVisionVerifier::ClearScreenshotCache | ( | ) |
Clear cached screenshots to free memory.
Definition at line 212 of file ai_vision_verifier.cc.
References last_height_, last_screenshot_data_, and last_width_.
| void yaze::test::AIVisionVerifier::BeginIterativeSession | ( | int | max_iterations = 5 | ) |
Begin an iterative verification session.
Useful for complex verifications where the AI may need multiple screenshots to confirm a condition (e.g., animation completed).
Definition at line 218 of file ai_vision_verifier.cc.
References in_iterative_session_, iterative_conditions_, iterative_current_iteration_, iterative_max_iterations_, and iterative_results_.
Referenced by yaze::test::ScopedIterativeVerification::ScopedIterativeVerification().
| absl::Status yaze::test::AIVisionVerifier::AddIterativeCheck | ( | const std::string & | condition | ) |
Add a verification to the iterative session.
Definition at line 226 of file ai_vision_verifier.cc.
References in_iterative_session_, iterative_conditions_, iterative_current_iteration_, iterative_max_iterations_, iterative_results_, and Verify().

| absl::StatusOr< VisionVerificationResult > yaze::test::AIVisionVerifier::CompleteIterativeSession | ( | ) |
Complete the iterative session and get results.
Definition at line 246 of file ai_vision_verifier.cc.
References yaze::test::VisionVerificationResult::confidence, yaze::test::VisionVerificationResult::discrepancies, in_iterative_session_, iterative_results_, yaze::test::VisionVerificationResult::observations, and yaze::test::VisionVerificationResult::passed.
|
private |
Definition at line 276 of file ai_vision_verifier.cc.
References last_height_, last_screenshot_data_, last_width_, and screenshot_callback_.
Referenced by AskAboutState(), CompareToReference(), Verify(), and VerifyConditions().
|
private |
Definition at line 292 of file ai_vision_verifier.cc.
References ai_service_, config_, yaze::cli::GeminiAIService::GenerateMultimodalResponse(), yaze::cli::AIService::GenerateResponse(), last_height_, last_screenshot_data_, last_width_, LOG_DEBUG, yaze::test::VisionVerifierConfig::model_name, and yaze::test::VisionVerifierConfig::screenshot_dir.
Referenced by AskAboutState(), CompareToReference(), Verify(), and VerifyConditions().

|
private |
Definition at line 355 of file ai_vision_verifier.cc.
References yaze::test::VisionVerificationResult::ai_response, yaze::test::VisionVerificationResult::confidence, yaze::test::VisionVerificationResult::discrepancies, yaze::test::VisionVerificationResult::observations, yaze::test::VisionVerificationResult::passed, and yaze::test::VisionVerificationResult::screenshot_path.
Referenced by CompareToReference(), Verify(), and VerifyConditions().
|
private |
Definition at line 233 of file ai_vision_verifier.h.
Referenced by CallVisionModel(), CaptureScreenshot(), and GetConfig().
|
private |
Definition at line 234 of file ai_vision_verifier.h.
Referenced by CaptureAndEncodeScreenshot(), CaptureScreenshot(), and SetScreenshotCallback().
|
private |
Definition at line 235 of file ai_vision_verifier.h.
Referenced by CallVisionModel().
|
private |
Definition at line 236 of file ai_vision_verifier.h.
Referenced by CallVisionModel(), CaptureAndEncodeScreenshot(), CaptureScreenshot(), and ClearScreenshotCache().
|
private |
Definition at line 237 of file ai_vision_verifier.h.
Referenced by CallVisionModel(), CaptureAndEncodeScreenshot(), CaptureScreenshot(), and ClearScreenshotCache().
|
private |
Definition at line 238 of file ai_vision_verifier.h.
Referenced by CallVisionModel(), CaptureAndEncodeScreenshot(), CaptureScreenshot(), and ClearScreenshotCache().
|
private |
Definition at line 241 of file ai_vision_verifier.h.
Referenced by AddIterativeCheck(), BeginIterativeSession(), and CompleteIterativeSession().
|
private |
Definition at line 242 of file ai_vision_verifier.h.
Referenced by AddIterativeCheck(), and BeginIterativeSession().
|
private |
Definition at line 243 of file ai_vision_verifier.h.
Referenced by AddIterativeCheck(), and BeginIterativeSession().
|
private |
Definition at line 244 of file ai_vision_verifier.h.
Referenced by AddIterativeCheck(), and BeginIterativeSession().
|
private |
Definition at line 245 of file ai_vision_verifier.h.
Referenced by AddIterativeCheck(), BeginIterativeSession(), and CompleteIterativeSession().