Skip to content

A comprehensive tool for automated testing, UI recording, and screenshot capture across web, desktop, and mobile applications.

License

Notifications You must be signed in to change notification settings

vasic-digital/Panoptic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

63 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 Panoptic

Panoptic Logo

Go Version License Build Status Coverage Go Report Card

Comprehensive Automated Testing & Recording Framework

A powerful, multi-platform testing solution for web, desktop, and mobile applications with advanced UI automation, screenshot capture, and video recording capabilities.

πŸ“‹ Table of Contents

πŸš€ Features

  • Multi-Platform Support: Web, Desktop, and Mobile automation
  • Advanced UI Automation: Element detection and interaction
  • Screenshot Capture: High-quality screenshots with timestamping
  • Video Recording: Session recording with multiple formats
  • Test Framework: Comprehensive testing with assertions
  • Cross-Browser: Chrome, Firefox, Safari, Edge support
  • Mobile Support: iOS and Android automation
  • CI/CD Integration: Easy integration with CI/CD pipelines
  • Extensible Architecture: Plugin system for custom functionality

🏁 Quick Start

# Install Panoptic
go install github.com/your-org/panoptic@latest

# Run your first test
panoptic test example_test.go

# Record a session
panoptic record --output session.mp4

πŸ“¦ Installation

Prerequisites

  • Go 1.21 or higher
  • Chrome/Chromium (for web automation)
  • Xcode (for iOS automation)
  • Android SDK (for Android automation)

From Source

git clone https://github.com/your-org/panoptic.git
cd panoptic
make install

Using Go

go get github.com/your-org/panoptic

πŸ’» Usage

Basic Test Example

package main

import (
    "github.com/your-org/panoptic"
    "github.com/your-org/panoptic/web"
)

func main() {
    // Create a new browser instance
    browser, _ := web.NewBrowser()
    
    // Navigate to a website
    browser.Navigate("https://example.com")
    
    // Take a screenshot
    browser.Screenshot("screenshot.png")
    
    // Close browser
    browser.Close()
}

Recording a Session

# Record a web session
panoptic record --platform web --url https://example.com --output demo.mp4

# Record a mobile session
panoptic record --platform ios --device iPhone13 --output mobile_demo.mp4

βš™οΈ Configuration

Panoptic uses a configuration file (panoptic.yaml) for advanced settings:

# panoptic.yaml
browser:
  headless: false
  viewport: "1920x1080"
  timeout: 30s

recording:
  format: "mp4"
  quality: "high"
  fps: 30

mobile:
  ios:
    device: "iPhone13"
    xcode_path: "/Applications/Xcode.app"
  android:
    device: "Pixel_3_API_30"
    adb_path: "/usr/local/bin/adb"

πŸ“± Platform Support

Platform Status Features
Web βœ… Full automation, screenshots, recording
iOS βœ… App automation, screen recording
Android βœ… App automation, screen recording
Desktop βœ… UI automation, screen capture

πŸ› οΈ Advanced Features

Custom Selectors

// Custom CSS selector
element := browser.FindElement("button.submit")

// XPath selector
element := browser.FindElementByXPath("//button[@type='submit']")

Wait Strategies

// Wait for element to appear
browser.WaitForElement("div.loading", 10*time.Second)

// Wait for condition
browser.WaitForCondition(func() bool {
    return browser.FindElement("button").Visible()
}, 15*time.Second)

Hooks and Plugins

// Before hook
panoptic.AddHook("before_test", func() {
    // Setup code
})

// After hook
panoptic.AddHook("after_test", func() {
    // Cleanup code
})

πŸ“– Examples

Web Testing

func TestLogin(t *testing.T) {
    browser, _ := web.NewBrowser()
    defer browser.Close()
    
    browser.Navigate("https://login.example.com")
    
    // Fill form
    browser.FindElement("#username").Type("testuser")
    browser.FindElement("#password").Type("password123")
    browser.FindElement("button[type='submit']").Click()
    
    // Verify login
    browser.WaitForElement(".dashboard", 10*time.Second)
    
    // Take screenshot
    browser.Screenshot("login_success.png")
}

Mobile Testing

func TestMobileApp(t *testing.T) {
    // Connect to device
    device, _ := mobile.NewDevice("ios")
    defer device.Close()
    
    // Launch app
    device.Launch("com.example.app")
    
    // Interact with elements
    device.Tap("login_button")
    device.Type("username_field", "testuser")
    device.Type("password_field", "password123")
    
    // Verify result
    device.WaitForElement("welcome_screen", 15*time.Second)
}

πŸ§ͺ Testing

Run the test suite:

# Run all tests
make test

# Run with coverage
make test-coverage

# Run specific test
go test -run TestLogin

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

# Fork and clone the repository
git clone https://github.com/your-org/panoptic.git
cd panoptic

# Install dependencies
make deps

# Run development server
make dev

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Star on GitHub Fork on GitHub Watch on GitHub

Made with ❀️ by the Panoptic team

About

A comprehensive tool for automated testing, UI recording, and screenshot capture across web, desktop, and mobile applications.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published