116 lines
4.2 KiB
Python
116 lines
4.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Validate screenshot functionality and analyze pixel data"""
|
|
import mcrfpy
|
|
from mcrfpy import automation
|
|
from datetime import datetime
|
|
import sys
|
|
|
|
def test_screenshot_validation():
|
|
"""Create visible content and validate screenshot output"""
|
|
print("=== Screenshot Validation Test ===\n")
|
|
|
|
# Create a scene with bright, visible content
|
|
mcrfpy.createScene("screenshot_validation")
|
|
mcrfpy.setScene("screenshot_validation")
|
|
ui = mcrfpy.sceneUI("screenshot_validation")
|
|
|
|
# Create multiple colorful elements to ensure visibility
|
|
print("Creating UI elements...")
|
|
|
|
# Bright red frame with white outline
|
|
frame1 = mcrfpy.Frame(50, 50, 300, 200,
|
|
fill_color=mcrfpy.Color(255, 0, 0), # Bright red
|
|
outline_color=mcrfpy.Color(255, 255, 255), # White
|
|
outline=5.0)
|
|
ui.append(frame1)
|
|
print("Added red frame at (50, 50)")
|
|
|
|
# Bright green frame
|
|
frame2 = mcrfpy.Frame(400, 50, 300, 200,
|
|
fill_color=mcrfpy.Color(0, 255, 0), # Bright green
|
|
outline_color=mcrfpy.Color(0, 0, 0), # Black
|
|
outline=3.0)
|
|
ui.append(frame2)
|
|
print("Added green frame at (400, 50)")
|
|
|
|
# Blue frame
|
|
frame3 = mcrfpy.Frame(50, 300, 300, 200,
|
|
fill_color=mcrfpy.Color(0, 0, 255), # Bright blue
|
|
outline_color=mcrfpy.Color(255, 255, 0), # Yellow
|
|
outline=4.0)
|
|
ui.append(frame3)
|
|
print("Added blue frame at (50, 300)")
|
|
|
|
# Add text captions
|
|
caption1 = mcrfpy.Caption(mcrfpy.Vector(60, 60),
|
|
text="RED FRAME TEST",
|
|
fill_color=mcrfpy.Color(255, 255, 255))
|
|
caption1.size = 24
|
|
frame1.children.append(caption1)
|
|
|
|
caption2 = mcrfpy.Caption(mcrfpy.Vector(410, 60),
|
|
text="GREEN FRAME TEST",
|
|
fill_color=mcrfpy.Color(0, 0, 0))
|
|
caption2.size = 24
|
|
ui.append(caption2)
|
|
|
|
caption3 = mcrfpy.Caption(mcrfpy.Vector(60, 310),
|
|
text="BLUE FRAME TEST",
|
|
fill_color=mcrfpy.Color(255, 255, 0))
|
|
caption3.size = 24
|
|
ui.append(caption3)
|
|
|
|
# White background frame to ensure non-transparent background
|
|
background = mcrfpy.Frame(0, 0, 1024, 768,
|
|
fill_color=mcrfpy.Color(200, 200, 200)) # Light gray
|
|
# Insert at beginning so it's behind everything
|
|
ui.remove(len(ui) - 1) # Remove to re-add at start
|
|
ui.append(background)
|
|
# Re-add all other elements on top
|
|
for frame in [frame1, frame2, frame3, caption2, caption3]:
|
|
ui.append(frame)
|
|
|
|
print(f"\nTotal UI elements: {len(ui)}")
|
|
|
|
# Take multiple screenshots with different names
|
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
|
|
screenshots = [
|
|
f"validate_screenshot_basic_{timestamp}.png",
|
|
f"validate_screenshot_with_spaces {timestamp}.png",
|
|
f"validate_screenshot_final_{timestamp}.png"
|
|
]
|
|
|
|
print("\nTaking screenshots...")
|
|
for i, filename in enumerate(screenshots):
|
|
result = automation.screenshot(filename)
|
|
print(f"Screenshot {i+1}: {filename} - Result: {result}")
|
|
|
|
# Test invalid cases
|
|
print("\nTesting edge cases...")
|
|
|
|
# Empty filename
|
|
result = automation.screenshot("")
|
|
print(f"Empty filename result: {result}")
|
|
|
|
# Very long filename
|
|
long_name = "x" * 200 + ".png"
|
|
result = automation.screenshot(long_name)
|
|
print(f"Long filename result: {result}")
|
|
|
|
print("\n=== Test Complete ===")
|
|
print("Check the PNG files to see if they contain visible content.")
|
|
print("If they're transparent, the headless renderer may not be working correctly.")
|
|
|
|
# List what should be visible
|
|
print("\nExpected content:")
|
|
print("- Light gray background (200, 200, 200)")
|
|
print("- Red frame with white outline at (50, 50)")
|
|
print("- Green frame with black outline at (400, 50)")
|
|
print("- Blue frame with yellow outline at (50, 300)")
|
|
print("- White, black, and yellow text labels")
|
|
|
|
sys.exit(0)
|
|
|
|
# Run the test immediately
|
|
test_screenshot_validation() |