Compatibility Testing for Desktop Apps: Complete Guide (2026)
Compatibility Testing for Desktop Apps: Complete Guide (2026) is essential for ensuring your software functions flawlessly across the diverse ecosystem of hardware, operating systems, and software con
Compatibility Testing for Desktop Apps: Complete Guide (2026) is essential for ensuring your software functions flawlessly across the diverse ecosystem of hardware, operating systems, and software configurations that users employ. This comprehensive guide will detail the precise definition of compatibility testing for desktop applications, differentiating it from related testing types, and outlining its critical importance in today's fragmented computing environment. We will cover when and why to conduct this testing, provide a step-by-step process, delve into tooling, define key metrics and pass/fail criteria, highlight common pitfalls, discuss integration into CI/CD pipelines, and explore how advanced autonomous testing platforms can significantly streamline this complex endeavor.
Desktop application compatibility testing focuses on verifying that an application behaves as expected when installed and run in various target environments. This includes assessing its performance, functionality, and user interface integrity across different operating system versions, hardware specifications (CPU, RAM, GPU, display resolutions), software dependencies (frameworks, runtimes, third-party libraries), and network configurations. Unlike functional testing, which confirms *what* the application does, compatibility testing ensures *how well* and *if* it does it under specific external conditions. For a robust desktop application in 2026, neglecting compatibility testing leads directly to frustrated users, increased support costs, negative reviews, and ultimately, a damaged brand reputation.
Understanding Compatibility Testing for Desktop Apps
Compatibility testing for desktop software is a specialized form of non-functional testing that validates the application's ability to coexist and operate correctly within a given set of system specifications. It's not about finding bugs in the core logic of the application, but rather uncovering issues that arise due to environmental variations. Think of it as ensuring your app "plays nicely" with everything else on a user's machine.
Distinguishing from Adjacent Test Types
It's easy to conflate compatibility testing with other forms of testing. Understanding the distinctions is crucial for effective test planning.
- Functional Testing: This verifies that each feature and function of the application works according to specified requirements. For example, does clicking "Save" actually save the document? Compatibility testing might ask: does "Save" work correctly on Windows 10 LTSC with a low-end GPU and an NTFS drive?
- Performance Testing: This assesses the application's responsiveness, stability, scalability, and resource usage under various loads. While a compatibility issue might *manifest* as a performance degradation (e.g., slow UI on older hardware), performance testing specifically measures metrics like response time, throughput, and resource consumption under varying user loads or data volumes, irrespective of environmental specifics.
- Usability Testing: This evaluates how easy and intuitive the application is to use for its target audience. A compatibility issue might *impact* usability (e.g., truncated text due to font rendering differences), but usability testing focuses on user experience flows and cognitive load.
- Security Testing: This identifies vulnerabilities and weaknesses in the application that could be exploited. While certain compatibility issues might indirectly expose security flaws (e.g., outdated dependency versions), security testing has a distinct focus on threat models and attack vectors.
Compatibility testing acts as a crucial bridge, ensuring that the *functional* and *performance* characteristics hold true across a wide spectrum of user environments, thereby directly impacting the *usability* and perceived *quality* of the software.
Why Compatibility Testing is Non-Negotiable in 2026
The desktop environment, while perhaps less fragmented than mobile, still presents significant diversity. Users operate on:
- Diverse Operating Systems: Windows (10, 11, various editions like Pro, Home, Enterprise, LTSC), macOS (Ventura, Sonoma, future releases), Linux distributions (Ubuntu, Fedora, Mint, RHEL). Each OS version has its own kernel, API implementations, and security policies.
- Varying Hardware: Different CPU architectures (Intel x86/x64, AMD x64, ARM for Windows on ARM, Apple Silicon), GPU vendors (NVIDIA, AMD, Intel integrated), RAM capacities, storage types (HDD, SSD, NVMe), and peripheral devices (printers, scanners, specialized input devices).
- Software Dependencies: Specific .NET Framework versions, Java Runtimes, Python interpreters, C++ redistributables, DirectX versions, OpenGL drivers, browser engines (for embedded web views), and third-party libraries.
- Network Configurations: Proxy settings, firewall rules, VPNs, IPv4/IPv6, varying bandwidths.
- Display Settings: Multiple monitors, high DPI (HiDPI/Retina) displays, varying resolutions, scaling factors, and refresh rates.
Without thorough compatibility testing, your application might:
- Fail to Install or Launch: Due to missing dependencies, incorrect OS version checks, or incompatible architecture.
- Exhibit Functional Breakdowns: Features might work on one OS but not another, or fail with specific hardware configurations (e.g., GPU-accelerated features failing on integrated graphics).
- Suffer Performance Degradation: Slowdowns, freezes, or excessive resource consumption on certain machines.
- Display UI/UX Glitches: Misaligned elements, incorrect font rendering, distorted images, or unresponsive controls due to scaling or driver issues.
- Experience Crashes or Data Corruption: Often triggered by unhandled exceptions related to specific environmental interactions.
The cost of fixing these issues post-release, alongside reputational damage, far outweighs the investment in proactive compatibility testing.
Defining Your Compatibility Test Scope and Strategy
Before diving into execution, a clear understanding of your target audience and their environments is paramount. This informs your test matrix and resource allocation.
Identifying Target Environments
Start by analyzing your user base (if an existing product) or market research (for new products). Key questions include:
- What OS versions are most prevalent among your users? (e.g., Windows 10 22H2, Windows 11 23H2, macOS Sonoma 14.x).
- What are the minimum and recommended hardware specifications for your application?
- Are there specific third-party applications or frameworks your app interacts with, or relies upon? (e.g., Microsoft Office, specific database connectors, browser versions).
- Will your application be used in enterprise environments with strict network policies or virtualized desktops?
Based on this, categorize environments into:
- Mandatory/Supported: Environments where the application *must* function perfectly. These will receive the most rigorous testing.
- Recommended/Preferred: Environments where the application is expected to perform optimally.
- Optional/Best Effort: Environments where issues might be tolerated, or testing is less comprehensive due to lower user base or strategic importance.
- Unsupported: Environments where the application is explicitly not guaranteed to work, and users are informed.
Crafting a Comprehensive Compatibility Test Matrix
A test matrix is your blueprint for compatibility testing. It maps test cases against different environmental configurations.
| Test Case ID | Feature/Scenario | OS | OS Version | CPU Arch | RAM (GB) | GPU | Display Resolution | Network Config | Dependencies | Expected Result |
|---|---|---|---|---|---|---|---|---|---|---|
| COMP-001 | Application Install | Win | 10 22H2 | x64 | 4 | Intel iGPU | 1366x768 | Standard LAN | .NET 6.0 | Successful install and first launch. |
| COMP-002 | Data Export (Large) | Win | 11 23H2 | x64 | 16 | NVIDIA RTX 3060 | 3840x2160 (200% Scale) | Standard LAN | .NET 6.0 | Export completes within 30s, no UI freeze. |
| COMP-003 | UI Responsiveness | macOS | Sonoma 14.3 | Apple Silicon | 8 | M1/M2 iGPU | 2560x1600 (Retina) | Wi-Fi (VPN) | Xcode Runtimes | Smooth scrolling, no visual glitches. |
| COMP-004 | Printer Integration | Win | 10 LTSC | x64 | 8 | AMD Radeon | 1920x1080 | Restricted LAN | Printer Driver | Print preview accurate, document prints. |
| COMP-005 | Database Connect | Linux | Ubuntu 22.04 | x64 | 8 | NVIDIA GT 1030 | 1920x1080 | No Internet | PostgreSQL Client | Connects, retrieves data. |
Key Considerations for the Matrix:
- Operating System: Include major versions and common editions (e.g., Home, Pro, Enterprise, LTSC for Windows; different macOS versions). Also consider 32-bit vs. 64-bit where relevant, and ARM-based Windows/macOS.
- Hardware: Vary CPU architectures, RAM (min, recommended, high), GPU types (integrated, dedicated, different vendors), and storage (HDD, SSD). Account for multi-monitor setups and varying DPI settings.
- Software Dependencies: List all external frameworks, runtimes, and libraries your app relies on. Test with both minimum required and latest compatible versions.
- Network: Include scenarios with and without internet, behind proxies, with firewalls active, and varying bandwidths if network performance is critical.
- Peripherals: If your application interacts with specific hardware (scanners, cameras, specialized input devices), include those in the matrix.
- Third-Party Software: If coexistence is important (e.g., does your app clash with common antivirus software or popular productivity suites?), add these.
Prioritization and Risk Assessment
Given the infinite number of combinations, complete compatibility testing is rarely feasible. Prioritize based on:
- User Base: Test environments used by the largest segment of your users first.
- Criticality: Environments where application failure would have severe consequences.
- Complexity/Novelty: New OS versions, hardware, or dependencies often introduce higher risk.
- Historical Defects: Focus on environments that have historically shown more issues.
Step-by-Step Process for Compatibility Testing
A structured approach ensures thorough coverage and efficient execution.
1. Planning and Setup
- Define Scope & Matrix: As discussed above, identify target environments and create your detailed test matrix.
- Environment Provisioning: Set up physical or virtual machines for each required configuration.
- Physical Machines: Ideal for testing specific hardware interactions (e.g., GPU performance, specific peripherals) but expensive and harder to manage.
- Virtual Machines (VMs): Excellent for OS and software dependency variations. Tools like VMware Workstation, VirtualBox, or Hyper-V allow easy snapshotting and restoration.
- Cloud-based Virtual Desktops: Services like Amazon WorkSpaces, Azure Virtual Desktop, or specialized testing platforms can provide on-demand, diverse environments.
- Test Case Development: Adapt existing functional test cases to include compatibility variables. Create new test cases specifically targeting known compatibility risks (e.g., explicit checks for high DPI scaling, specific driver interactions).
- Define Pass/Fail Criteria: Beyond basic functionality, specify performance thresholds (e.g., "UI must remain responsive," "load time < 5 seconds") and visual fidelity expectations (e.g., "no truncated text," "icons render correctly").
2. Test Execution
- Installation & Uninstallation Checks: Verify the application installs correctly on all target OS versions and hardware. Test uninstallation to ensure clean removal without leaving orphaned files or registry entries.
- Basic Functionality Across Environments: Run a core set of functional tests on each environment in your matrix. This confirms the application's fundamental features work.
- UI/UX Fidelity: Pay close attention to visual elements.
- Resolution & Scaling: Test on various resolutions, especially high DPI displays with different scaling factors (100%, 125%, 150%, 200%).
- Font Rendering: Check for consistent font display, truncation, or scaling issues.
- Layout & Alignment: Ensure UI elements are correctly positioned and aligned, especially when resizing windows or switching between multiple monitors.
- Hardware-Specific Testing:
- GPU: Test features relying on graphics acceleration.
- Peripherals: If applicable, test interactions with printers, scanners, webcams, etc.
- Input Devices: Ensure keyboard shortcuts, mouse gestures, and touch input (if supported) work as expected.
- Software Dependency Interaction: Verify that the application correctly detects and utilizes or prompts for required runtime environments (e.g., .NET, Java). Test with different versions of these dependencies if your app supports a range.
- Network Behavior: Test application functionality under different network conditions (e.g., slow connection, no internet, behind a proxy, VPN).
- Resource Utilization: Monitor CPU, RAM, and disk I/O. Ensure the application doesn't excessively consume resources on lower-spec machines.
- Concurrency & Coexistence: Briefly test if your application functions correctly when other common applications (e.g., antivirus, browser, office suite) are running simultaneously.
3. Reporting and Analysis
- Detailed Bug Reporting: When issues are found, report them with precise environmental details (OS version, hardware specs, dependencies, display settings, etc.) as this information is critical for developers to reproduce and fix.
- Severity and Priority: Assign appropriate severity and priority to compatibility defects based on impact and likelihood of occurrence in the user base.
- Test Coverage Matrix Update: Mark off completed test cases and configurations. Identify any gaps.
- Regression Testing: After fixes are implemented, re-test the affected environments and conduct a broader regression pass to ensure no new compatibility issues were introduced.
Tools and Technologies for Compatibility Testing
The right tools can significantly enhance the efficiency and effectiveness of your compatibility efforts.
Environment Management Tools
- Virtualization Software:
- VMware Workstation/Fusion: Robust, feature-rich, excellent for creating diverse Windows/Linux/macOS VMs.
- VirtualBox: Free and open-source, good for basic VM setups.
- Hyper-V: Microsoft's native hypervisor for Windows Pro/Enterprise, useful for Windows VM testing.
- Parallels Desktop: Popular for running Windows on macOS.
- Cloud-based Virtual Desktops:
- Amazon WorkSpaces, Azure Virtual Desktop, Google Cloud Desktop: Provide scalable, on-demand virtualized environments, though they can be more complex to set up for specific hardware configurations.
- BrowserStack, Sauce Labs: While primarily known for web/mobile, some offer capabilities for desktop application testing on real devices or VMs.
- Containerization (Limited Use for Desktop): Docker and other container tools are less suited for full desktop application compatibility (which often requires direct OS/hardware interaction) but can be useful for testing specific microservices or backend components that a desktop app relies on, ensuring their compatibility with different environments.
Automation Frameworks
While much of compatibility testing involves visual inspection and subjective assessment, automation can cover repetitive functional checks across environments.
- UI Automation Frameworks:
- WinAppDriver (Windows): Microsoft's UI Automation framework for Windows desktop apps. Integrates with Appium. Allows scripting interactions with UWP, WinForms, WPF, and classic Win32 apps.
- Appium (Desktop - via WinAppDriver/macOS drivers): While primarily mobile, Appium can extend to desktop testing using specific drivers. For Windows, it leverages WinAppDriver. For macOS, there are community-driven drivers or direct integration with Apple's XCUITest for native macOS apps can be considered.
- Playwright (Electron/Webview-based Desktop Apps): If your desktop application is built with Electron or embeds web views, Playwright is an excellent choice for automating those web-based components.
- AutoIt (Windows): A free scripting language for automating Windows GUI interactions, good for simple, repetitive tasks.
- SikuliX: Uses image recognition to automate anything you see on screen. Useful for cross-platform UI automation where traditional element locators are difficult, but can be brittle.
- Scripting Languages: Python, PowerShell, Bash can automate environment setup, application installation, log collection, and basic checks.
Monitoring and Diagnostic Tools
- Task Manager/Activity Monitor: For basic CPU, RAM, disk, and network usage.
- Resource Monitor (Windows): More detailed system resource usage.
- Process Monitor (Sysinternals Suite): Excellent for tracing file system, registry, and process/thread activity.
- GPU-Z/HWMonitor: For detailed hardware specifications and real-time sensor data (temperatures, clock speeds, usage).
- Developer Tools (for Electron/Webview apps): Chrome DevTools or similar for inspecting the embedded web content.
- Log Aggregation/Analysis: Centralized logging solutions (e.g., ELK Stack, Splunk) can help collect and analyze application logs from diverse test environments.
Autonomous Testing Platforms
Emerging platforms like SUSATest offer a novel approach that can significantly enhance compatibility testing, especially for applications with complex UIs. Instead of requiring explicit scripts for every interaction, SUSATest:
- Explores the App Autonomously: You upload an APK (for Android apps, though the core concept extends to desktop) or point it at a web URL. The platform then intelligently explores the application, tapping, scrolling, typing, handling dialogs, and completing real user flows. For desktop applications, this would involve integrating with desktop automation APIs (like WinAppDriver or accessibility APIs) to "see" and interact with the UI.
- Simulates Diverse User Personas: It tests with a range of user personas (curious, impatient, novice, adversarial, elderly, accessibility, power user), each with its own behavior profile. This is highly relevant for compatibility, as different user interaction styles can expose environment-specific bugs (e.g., an impatient user rapidly clicking could trigger a race condition on a slower CPU).
- Identifies Compatibility Issues Automatically: While primarily focused on functional and UX issues, its ability to detect crashes, ANRs, dead buttons, accessibility violations (WCAG), and general UX friction *across different simulated environments* directly contributes to compatibility. For instance, if a button becomes "dead" or inaccessible at a certain display scaling, or a crash occurs only on an older OS version, SUSATest can flag it.
- Cross-Session Learning: The platform remembers explored screens and dead ends, making each subsequent run smarter. This means if a particular UI element consistently causes issues on a specific OS version, it can prioritize testing that interaction more thoroughly in future runs on similar environments.
- Auto-generates Regression Scripts: From its exploration, it can auto-generate regression scripts (e.g., Appium for Android/Windows, Playwright for Web/Electron). These scripts can then be executed on your diverse compatibility test environments, providing automated functional coverage that is *derived* from actual user-like exploration, rather than manually written from scratch. This drastically reduces the effort in creating and maintaining compatibility test suites.
Integrating an autonomous platform like SUSATest into your compatibility strategy allows you to leverage intelligent, unscripted exploration to uncover environment-specific issues that might be missed by traditional, script-bound automation, especially for visual and interaction-based compatibility problems.
Metrics and Pass/Fail Criteria for Compatibility
Measuring success in compatibility testing goes beyond "does it work?" and delves into "how well does it work, everywhere?"
Key Metrics to Track
- Installation Success Rate: Percentage of successful installations across all target environments.
- Launch Time: Time taken for the application to fully launch and become interactive on different systems.
- Core Functionality Success Rate: Percentage of critical functional test cases passing on each environment.
- Resource Utilization (CPU, RAM, Disk I/O): Average and peak usage during typical workflows on various machines.
- UI Rendering Fidelity: Quantifiable issues like pixel differences, truncated text count, or layout shifts detected. This often requires visual inspection or specialized tools.
- Crash/ANR Rate (Application Not Responding): Number of crashes or ANRs reported per environment.
- Performance Benchmarks: Specific operations (e.g., opening a large file, complex calculation, data export) measured for execution time across environments.
- Dependency Resolution Success: How often the application correctly identifies and handles required software dependencies.
Establishing Clear Pass/Fail Criteria
Criteria must be specific and measurable.
- Installation & Uninstallation:
- PASS: Application installs and uninstalls cleanly without errors, leaving no residual files/registry entries, within a defined time limit (e.g., < 2 minutes).
- FAIL: Installation/uninstallation fails, errors occur, or leaves significant traces.
- Basic Functionality:
- PASS: All critical functional flows execute successfully without errors or unexpected behavior.
- FAIL: Any critical functional flow fails or behaves unexpectedly.
- UI/UX Fidelity:
- PASS: All UI elements render correctly, without visual defects (truncation, overlap, distortion), at all tested resolutions and scaling factors. Text is legible.
- FAIL: Any visual defect that impacts usability or professionalism is observed.
- Performance:
- PASS: Application launch time, response times for key operations, and resource consumption remain within predefined thresholds for the given hardware configuration (e.g., launch < 5s, CPU < 70% peak on min spec, memory < 2GB peak on min spec).
- FAIL: Any performance metric exceeds the defined threshold.
- Stability:
- PASS: No application crashes, hangs, or ANRs during standard usage or extended testing.
- FAIL: Any crash, hang, or ANR occurs.
- Compatibility with Dependencies/Peripherals:
- PASS: Application correctly identifies, integrates with, and uses required dependencies or peripherals.
- FAIL: Fails to detect or interact correctly with a dependency or peripheral.
These criteria should be documented in your test plan and regularly reviewed. For example, "UI must remain responsive" can be quantified as "Application is deemed responsive if no UI thread blocking occurs for more than 200ms during user input or background operations on minimum specified hardware."
Common Mistakes and How to Avoid Them
Compatibility testing is fraught with potential pitfalls. Awareness is the first step to avoidance.
- Underestimating Environmental Diversity:
- Mistake: Testing only on your development machine or a few standard VMs.
- Avoid: Conduct thorough market research, analyze existing user data, and build a comprehensive test matrix covering a wide range of OS versions, hardware, and software dependencies. Prioritize based on user base and risk.
- Insufficient Hardware Variety:
- Mistake: Relying solely on high-end or average hardware.
- Avoid: Include minimum-spec machines (physical or carefully configured VMs) to identify performance bottlenecks and resource-intensive issues. Test with different GPU vendors and integrated graphics.
- Neglecting Display Settings:
- Mistake: Only testing at default resolution and 100% scaling.
- Avoid: Explicitly test on high DPI displays with various scaling factors (125%, 150%, 200%) and multi-monitor setups with different resolutions. This is a common source of UI bugs.
- Ignoring Software Dependencies:
- Mistake: Assuming users have the latest .NET, Java, or C++ runtimes installed.
- Avoid: Test the application's behavior when these dependencies are missing, outdated, or different versions are present. Verify the installer correctly handles prerequisites.
- Focusing Only on Happy Paths:
- Mistake: Only testing core functionality, missing edge cases related to environment.
- Avoid: Include scenarios like network interruptions, low disk space, specific regional settings (language, date/time formats), and interactions with other common software. What happens if the printer driver is corrupt on a specific OS?
- Lack of Clear Pass/Fail Criteria:
- Mistake: Subjective assessment of "looks okay."
- Avoid: Define quantifiable metrics for performance, UI fidelity, and stability for each environment.
- Inadequate Bug Reporting:
- Mistake: Reporting "App crashed on Windows" without further details.
- Avoid: Ensure bug reports include full environmental details (OS version, build number, hardware specs, display settings, relevant logs) to enable developers to reproduce the issue.
- Manual Overload:
- Mistake: Attempting to manually test every permutation, leading to burnout and missed issues.
- Avoid: Leverage automation for repetitive functional checks across environments. Strategically use autonomous testing platforms like SUSATest for broader, unscripted exploration to uncover unexpected visual or interaction-based compatibility issues.
- Static Test Environments:
- Mistake: Using the same VM snapshots for every test cycle without updating.
- Avoid: Regularly update your test environments with the latest OS patches, driver updates, and common software versions to reflect real-world user conditions.
- Late Stage Testing:
- Mistake: Deferring compatibility testing until the very end of the development cycle.
- Avoid: Integrate compatibility checks early and often, especially for new features or major architectural changes.
Integrating Compatibility Testing into CI/CD
Shifting compatibility testing left in the development cycle is crucial for efficiency and quality.
Automated Checks in CI
While full compatibility testing usually involves manual checks and diverse VMs, certain aspects can be automated within your CI pipeline:
- Build Environment Compatibility: Ensure your build process itself is compatible with the CI server's OS, compilers, and dependencies.
- Dependency Scanning: Automate checks for required runtime environments (e.g., .NET versions, Java JRE) using scripts.
- Installer Validation: Automatically install and uninstall your application on a representative VM (e.g., a clean Windows 10 VM) after each build. Use UI automation tools (like WinAppDriver) for this.
- Smoke Tests on Key Environments: Run a small, critical set of functional tests on a few core virtualized environments (e.g., latest Windows, latest macOS) to catch immediate regressions.
- Static Analysis for Cross-Platform Issues: Tools that analyze code for platform-specific API usage or potential compatibility conflicts (e.g., using
Path.DirectorySeparatorCharinstead of hardcoded\or/).
# Example CI/CD pipeline stage for compatibility smoke tests (pseudo-code)
stages:
- build
- compatibility_smoke_test
- deploy
compatibility_smoke_test_windows:
stage: compatibility_smoke_test
runs_on:
- windows-latest # Or a custom VM image with specific configurations
steps:
- checkout
- name: Install Application on Windows
run: |
.\Installer.exe /S /D="C:\Program Files\MyDesktopApp" # Silent install
- name: Run Windows Compatibility Smoke Tests
run: |
pip install Appium-Python-Client
python tests/win_smoke_test.py # Uses WinAppDriver
- name: Uninstall Application
if: always()
run: |
"C:\Program Files\MyDesktopApp\Uninstall.exe" /S # Silent uninstall
compatibility_smoke_test_macos:
stage: compatibility_smoke_test
runs_on:
- macos-latest # Or a specific macOS VM
steps:
- checkout
- name: Install Application on macOS
run: |
hdiutil attach MyDesktopApp.dmg
cp -R "/Volumes/MyDesktopApp/MyDesktopApp.app" /Applications/
hdiutil detach "/Volumes/MyDesktopApp"
- name: Run macOS Compatibility Smoke Tests
run: |
# Use Appium with macOS driver or native XCUITest scripts
python tests/mac_smoke_test.py
- name: Uninstall Application
if: always()
run: |
rm -rf /Applications/MyDesktopApp.app
Scheduled Full Compatibility Runs
Full compatibility testing across the entire matrix is typically too resource-intensive for every commit. Instead, schedule these runs:
- Nightly Builds: For key environments, run more extensive automated compatibility test suites.
- Weekly or Bi-weekly: For the full, diverse set of environments, including those requiring manual inspection, or those provisioned on specialized hardware. This is where dedicated QA cycles come in.
- Before Major Releases: A complete compatibility regression pass is essential before any public release.
Leveraging Autonomous Platforms in CI/CD
Autonomous testing platforms like SUSATest can integrate seamlessly
Test Your App Autonomously
Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.
Try SUSA Free