Snow is a sophisticated browser extension that brings AI-powered chat and automation capabilities directly to your browser. Built with modern web technologies, it provides seamless AI model configuration and intelligent test automation.
- π€ Multi-Model AI Support: Configure and switch between different AI providers (OpenAI, Claude, etc.)
- π§ͺ Intelligent Test Automation: Generate and execute automated tests using AI
- π± Responsive Design: Optimized for browser extension with 375px+ minimum width
- β‘ Real-time Updates: Live status updates for test execution
- π― In-place Rerun: Re-execute failed test steps without creating new messages
- πΎ Session Management: Save and restore chat sessions
snow/
βββ packages/
β βββ core/ # Shared utilities and AI configuration management
β βββ extension/ # Browser extension with React-based UI
βββ pnpm-workspace.yaml # Monorepo configuration
βββ README.md
- AIConfigManager: Central service for managing AI model configurations
- ModelCard: Reusable component for displaying model configurations (4 props)
- ModelFormDialog: Dedicated form for adding/editing AI models
- TestStepItem: Interactive test step display with rerun functionality
- Node.js 18+
- pnpm package manager
# Clone the repository
git clone <repository-url>
cd snow
# Install dependencies
pnpm install
# Start development
pnpm dev
# Build extension
pnpm build:extension# Development
pnpm dev # Start all packages in dev mode
pnpm build # Build all packages
pnpm build:extension # Build extension specifically
# Quality Assurance
pnpm lint # Run ESLint
pnpm format # Format with Prettier
pnpm test # Run tests
pnpm test:watch # Watch mode testing
# Package-specific
cd packages/extension
pnpm dev # Extension dev server
pnpm build # Extension build- Model Configuration: Add, edit, delete AI models
- Responsive Design: Works from 375px width (browser extension constraint)
- Shadcn UI: Consistent design system throughout
- Real-time Status: Shows step-by-step execution progress
- Error Handling: Detailed error messages with retry capability
- Visual Feedback: Color-coded status indicators
// ModelCard - Display model info
interface ModelCardProps {
config: AIConfig;
onSetDefault: (config: AIConfig) => void;
onEdit: (config: AIConfig) => void;
onDelete: (config: AIConfig) => void;
}
// ModelFormDialog - Add/edit models
interface ModelFormDialogProps {
isOpen: boolean;
onOpenChange: (open: boolean) => void;
editingConfig: AIConfig | null;
onSubmit: (data: ModelFormData) => Promise<void>;
}- Language Models: Text-based AI (GPT-4, Claude, etc.)
- Vision Models: Image-capable AI (GPT-4V, etc.)
- Name, API Key, Base URL, Model ID
- Description (optional)
- Default model flag
- Deep thinking mode
- Reasoning display toggle
- Step Generation: AI generates test steps from natural language
- Step Execution: Real-time execution with status updates
- Rerun Capability: Re-execute failed steps in place
- Error Recovery: Detailed error handling and retry mechanisms
pending β running β success/failed
- Development:
pnpm dev- Hot reload development - Production:
pnpm build:extension- Optimized build - Package: Generates installable extension files
- Chrome (Manifest V3)
- Firefox
- Edge
- Safari (with limitations)
- TypeScript: Full type safety throughout
- ESLint: Enforced coding standards
- Prettier: Consistent code formatting
- Shadcn/ui: Design system consistency
- Reusable Components: FormField, FormCheckbox for DRY code
- State Management: React hooks with local state
- Responsive Design: Mobile-first approach
- Accessibility: Keyboard navigation and screen reader support
packages/extension/src/
βββ side-panel/
β βββ components/
β β βββ Settings.tsx
β β βββ ModelCard.tsx
β β βββ ModelFormDialog.tsx
β β βββ TestStepItem.tsx
β β βββ CodeDisplay.tsx
β βββ features/
β βββ chat-panel/
β βββ index.tsx
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
pnpm test - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues and questions:
- Check existing GitHub Issues
- Create a new issue with detailed reproduction steps
- Join our Discord community