Skip to content

hotovo/kiwigen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

182 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

KiwiGen

KiwiGen

AI-Ready Browser Interaction Recording for Automated Test Generation

A desktop application for recording browser interactions and voice commentary, producing session bundles optimized for AI-assisted test generation.

Screenshot from KiwiGen


๐Ÿ–ฅ๏ธ Platform Support

Supported Platforms:

  • โœ… macOS Apple Silicon (ARM64)
  • โœ… Windows x64

๐ŸŽฏ Overview

KiwiGen transforms manual browser testing into AI-ready session bundles. Record your interactions, speak your test intentions, and let the app generate comprehensive documentation that AI agents can use to write tests automatically.

What makes KiwiGen special:

  • ๐ŸŽ™๏ธ Voice Sync: Speak naturally while testingโ€”your commentary is automatically transcribed and synced with your actions
  • ๐ŸŽญ Framework-Agnostic Output: Works with Playwright, Cypress, Selenium, Puppeteer, or any testing framework
  • ๐Ÿค– AI-Optimized: Session bundles include complete instructions for AI agentsโ€”no external documentation needed
  • ๐Ÿ“ธ Smart Locators: Multiple locator strategies (testId, text, role, css, xpath) with confidence levels
  • โœ… Assertion Mode: Record visual assertions with Cmd/Ctrl + Click

โœจ Key Features

๐Ÿ“ฆ Session Output

Each recording produces a framework-agnostic session bundle with just 3 components:

session-YYYY-MM-DD-HHMMSS/
โ”œโ”€โ”€ INSTRUCTIONS.md    # General AI instructions (reusable across sessions)
โ”œโ”€โ”€ actions.json       # Complete session data (metadata + narrative + actions)
โ””โ”€โ”€ screenshots/       # Visual captures

What's in each file:

  • INSTRUCTIONS.md: Framework-agnostic + framework-specific instructions for AI agents. Written once per output directory, reused across all sessions.
  • actions.json: All session data in one file - metadata, voice narrative with embedded action references, and action array with multiple locator strategies.
  • screenshots/: PNG captures referenced by actions.

Action Reference Format: Actions are referenced in the narrative as [action:SHORT_ID:TYPE] where:

  • SHORT_ID = First 8 characters of the UUID in actions.json
  • Example: [action:8c61934e:click] maps to "id": "8c61934e-4cd3-4793-bdb5-5c1c6d696f37"

Why this structure?

  • โœ… Token efficient: Few tokens per session (INSTRUCTIONS.md is reused)
  • โœ… Single source: All session data in one JSON file
  • โœ… Framework detection: INSTRUCTIONS.md includes Playwright/Cypress auto-detection logic
  • โœ… AI-ready: Complete instructions embedded, no external docs needed

๐ŸŽฎ Recording Controls

Floating Widget (appears in browser top-right corner):

  • ๐Ÿ“ธ Take screenshots
  • โœ… Toggle assertion mode (auto-disables after recording an assertion)
  • ๐Ÿ‘ป Never recorded in your interactions

Keyboard Shortcuts:

Shortcut Action
Cmd+Shift+S (Mac)
Ctrl+Shift+S (Windows)
Take Screenshot
Cmd + Click (Mac)
Ctrl + Click (Windows)
Record Assertion

๐Ÿ” Privacy & Local Processing

  • No Cloud Dependencies: All transcription happens locally using Whisper.cpp
  • Your Data Stays Local: Session bundles remain on your machine

๐Ÿ› ๏ธ Development Setup

For detailed build and development instructions, see docs/DEVELOPMENT.md.

Quick Start

# Clone and install dependencies
git clone https://github.com/hotovo/kiwigen.git
cd kiwigen
npm install

# Run in development mode
npm run dev

Development Dependencies

For development, you'll need to install Playwright browsers and download the Whisper model:

# Install Playwright browsers (done automatically via postinstall)
npm run install:browsers

# Download Whisper model for local development
mkdir -p models
curl -L -o models/ggml-small.en.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.en.bin

Project Structure

kiwigen/
โ”œโ”€โ”€ models/                          # Whisper components (bundled in installer)
โ”‚   โ”œโ”€โ”€ unix/                       # Unix binary (macOS)
โ”‚   โ”‚   โ””โ”€โ”€ whisper                # Whisper.cpp binary (committed)
โ”‚   โ”œโ”€โ”€ win/                        # Windows binaries
โ”‚   โ”‚   โ””โ”€โ”€ whisper-cli.exe         # Whisper.cpp binary (committed)
โ”‚   โ””โ”€โ”€ ggml-small.en.bin          # AI model (download for development)
โ”œโ”€โ”€ electron/                        # Electron main process
โ”‚   โ”œโ”€โ”€ main.ts                     # Entry point
โ”‚   โ”œโ”€โ”€ browser/                    # Playwright recording
โ”‚   โ”œโ”€โ”€ audio/                      # Audio & transcription
โ”‚   โ”œโ”€โ”€ session/                    # Session management
โ”‚   โ”œโ”€โ”€ ipc/                        # IPC handlers
โ”‚   โ”œโ”€โ”€ settings/                    # Settings persistence
โ”‚   โ””โ”€โ”€ utils/                      # Filesystem, validation, logging
โ”œโ”€โ”€ src/                             # React renderer process
โ”‚   โ”œโ”€โ”€ components/                 # UI components
โ”‚   โ”œโ”€โ”€ stores/                     # Zustand state management
โ”‚   โ”œโ”€โ”€ hooks/                      # Custom React hooks
โ”‚   โ”œโ”€โ”€ lib/                        # Utilities and settings
โ”‚   โ””โ”€โ”€ types/                      # TypeScript types
โ”œโ”€โ”€ shared/                          # Shared types and constants
โ””โ”€โ”€ docs/                            # Documentation

๐Ÿ“ Reporting Issues

Found a bug or have a feature request? Please open an issue on GitHub Issues.


๐Ÿ”ง Troubleshooting

For comprehensive troubleshooting guides, see docs/USER_GUIDE.md.

Common Issues

Debugging

  • Console logs: Visible in terminal when running npm run dev
  • DevTools: Press Cmd+Option+I (Mac) or Ctrl+Shift+I (Windows) to open browser DevTools
  • Log files (production builds): See docs/USER_GUIDE.md

โ“ FAQ

Q: Why is the installer so large? A: The installer bundles all necessary dependencies in a single file for security and reliability. This includes the complete Electron runtime, Chromium browser for recording, Whisper AI model for voice transcription, and all required libraries. No additional downloads are needed - everything works offline immediately after installation.

Q: Can I use a different Whisper model? A: The app is hard-coded to use small.en for consistency and performance.

Q: Does this work with frameworks other than Playwright? A: Yes! The session output is framework-agnostic. AI agents can generate tests for Playwright, Cypress, Selenium, Puppeteer, or any other framework.

Q: Is my voice data sent to the cloud? A: No. All transcription happens locally using Whisper.cpp. Your voice recordings never leave your machine.


๐Ÿ“š Documentation

  • User Guide: Complete user-facing documentation for using KiwiGen
  • Development Guide: Comprehensive implementation guide for developers and AI agents working on the codebase
  • Agent Guidelines: Coding standards and guidelines for AI agents (for reference)

๐Ÿข About

KiwiGen is developed and maintained by Hotovo.


๐Ÿ“„ License

MIT License - Copyright (c) 2026 Hotovo. See LICENSE for details.