Peekaboo/Apps/Playground
2026-06-13 22:30:12 -07:00
..
Playground style(app): polish mac app chrome 2026-05-10 07:27:07 +01:00
Playground.xcodeproj chore(release): prepare 3.5.3 2026-06-13 22:30:12 -07:00
scripts test(perf): tighten benchmark failure handling 2026-05-17 09:02:24 +01:00
Tests/PlaygroundTests style: normalize swift formatting 2026-03-13 01:21:26 +00:00
.gitignore fix: Fix CLI timeout issues and improve Playground app 2025-07-26 15:02:21 +02:00
Package.swift fix(mac): replace .icon app icons 2025-12-14 03:12:51 +00:00
PLAYGROUND_TEST.md feat(agent): refresh supported model catalog 2026-05-10 14:44:02 +01:00
README.md docs: update testing tools status and platform support 2025-11-16 14:34:38 +00:00

Peekaboo Playground

A comprehensive SwiftUI test application for validating all Peekaboo automation features.

Overview

Peekaboo Playground is a macOS app designed to test and demonstrate all automation capabilities of Peekaboo. It provides a controlled environment with various UI elements and interactions that can be automated.

Features

1. Click Testing

  • Single, double, and right-click buttons
  • Toggle switches and buttons
  • Disabled button states
  • Different button sizes (mini to large)
  • Nested click targets
  • Context menus

2. Text Input Testing

  • Basic text fields with change tracking
  • Number-only fields with validation
  • Secure text fields
  • Pre-filled text fields
  • Search fields with clear button
  • Multiline text editors
  • Special character input
  • Focus control
  • Hidden web-style fields (AXGroup-wrapped inputs) for hidden-field repros

3. UI Controls

  • Continuous and discrete sliders
  • Checkboxes with bulk operations
  • Radio button groups
  • Segmented controls
  • Steppers
  • Date pickers
  • Progress indicators
  • Color pickers

4. Scroll & Gestures

  • Vertical and horizontal scroll views
  • Nested scroll views
  • Swipe gesture detection
  • Pinch/zoom gestures
  • Rotation gestures
  • Long press detection
  • Scroll-to positions

5. Window Management

  • Window state display
  • Minimize/maximize controls
  • Window positioning (corners)
  • Window resizing presets
  • Multiple window creation
  • Window cascading/tiling
  • Full screen toggle

6. Drag & Drop

  • Draggable items
  • Drop zones with hover states
  • Reorderable lists
  • Free-form drag area
  • Drag statistics

7. Keyboard Testing

  • Key press detection
  • Modifier key tracking
  • Hotkey combinations
  • Key sequence recording
  • Special key handling
  • Real-time modifier status

Logging

All actions are logged using Apple's OSLog framework with the subsystem boo.peekaboo.playground. The app provides:

  • Real-time action logging
  • Categorized logs (Click, Text, Menu, etc.)
  • In-app log viewer
  • Log export functionality
  • Log filtering and search
  • Action counters

Building and Running

# Build the app
cd Playground
swift build

# Run the app
./.build/debug/Playground

Using with Peekaboo

This app is designed to work with Peekaboo's automation features. Each UI element has:

  • Unique accessibility identifiers
  • Proper labeling for element detection
  • Clear visual boundaries
  • State indicators

Example Automation Scenarios

  1. Button Click Test

    • Target: single-click-button
    • Verify click count increases
  2. Text Input Test

    • Target: basic-text-field
    • Type text and verify change logs
  3. Slider Control

    • Target: continuous-slider
    • Drag to specific values
  4. Window Manipulation

    • Use window control buttons
    • Verify position/size changes

Viewing Logs

In-App Log Viewer

  • Click "View Logs" button in the header
  • Filter by category or search
  • Export logs to file
# From project root
../scripts/playground-log.sh

# Or directly
./scripts/playground-log.sh

# Stream logs in real-time
../scripts/playground-log.sh -f

# Show specific category
../scripts/playground-log.sh -c Click

# Search for specific actions
../scripts/playground-log.sh -s "button"

Using pblog (if available)

# Stream logs
log stream --predicate 'subsystem == "boo.peekaboo.playground"' --level info

# Show recent logs
log show --predicate 'subsystem == "boo.peekaboo.playground"' --info --last 30m

Log Categories

  • Click: Button clicks, toggles, click areas
  • Text: Text input, field changes
  • Menu: Menu selections, context menus
  • Window: Window operations
  • Scroll: Scroll events
  • Drag: Drag and drop operations
  • Keyboard: Key presses, hotkeys
  • Focus: Focus changes
  • Gesture: Swipes, pinches, rotations
  • Control: Sliders, pickers, other controls

Testing Tips

  1. Clear State: Use reset buttons to restore default states
  2. Action Counter: Monitor the action counter to verify all actions are logged
  3. Last Action: Check the status bar for the most recent action
  4. Export Logs: Use copy/export features to save test results
  5. Accessibility: All elements have proper identifiers for automation