Visual test builder for Playwright, Selenium, Cypress & Puppeteer
Build end-to-end tests visually with drag-and-drop blocks. Export production-ready code for your favorite testing framework.
Features • Getting Started • How to Use • Contributing
A visual test builder for generating end-to-end test code across multiple testing frameworks. Build tests visually with drag-and-drop blocks and export production-ready code.
- Visual Block Editor - Drag-and-drop interface powered by Blockly
- Multi-Framework Support - Generate tests for:
- Playwright (Emerald)
- Selenium (Orange)
- Cypress (Cyan)
- Puppeteer (Purple)
- Live Code Preview - See generated code in real-time with syntax highlighting
- Example Templates - Pre-built examples to help you learn common test patterns
- One-Click Export - Download your generated test file instantly
- Node.js 20+
- npm or yarn
# Clone the repository
git clone https://github.com/DizzyMii/TestWeave.git
cd TestWeave
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:5173 in your browser.
Click on one of the four mode buttons in the header:
playwright- For Playwright testsselenium- For Selenium WebDriver testscypress- For Cypress testspuppeteer- For Puppeteer tests
The UI accent colors will change to match your selected framework.
Drag blocks from the toolbox on the left and connect them to build your test flow:
| Block | Description |
|---|---|
browser init |
Initialize the test with a custom test name |
navigate to url |
Navigate to a specific URL |
click element |
Click an element using a CSS selector |
type text |
Type text into an input field |
assert visible |
Assert that an element is visible |
close test |
Close/end the test |
Use the dropdown in the workspace header to load example templates:
- Basic Navigation - Simple page load and verify
- Login Form - Fill and submit a login form
- Search Flow - Perform a search and verify results
- Multi-Click Navigation - Navigate through multiple pages
- Form Validation - Test a contact form with multiple fields
The right panel shows your generated code in real-time with:
- Syntax highlighting
- Line numbers
- Framework-specific imports and structure
Click the $ export .spec.ts button to download your test file.
import { test, expect } from '@playwright/test';
test('login form test', async ({ page }) => {
await page.goto('https://example.com/login');
await page.locator('input[name="email"]').fill('user@example.com');
await page.locator('input[name="password"]').fill('password123');
await page.locator('button[type="submit"]').click();
await expect(page.locator('.dashboard')).toBeVisible();
});/// <reference types="cypress" />
describe('login form test', () => {
cy.visit('https://example.com/login');
cy.get('input[name="email"]').type('user@example.com');
cy.get('input[name="password"]').type('password123');
cy.get('button[type="submit"]').click();
cy.get('.dashboard').should('be.visible');
});src/
├── blocks/
│ └── customBlocks.ts # Blockly block definitions
├── components/
│ ├── BlocklyComponent.tsx # Main workspace component
│ ├── CodePreview.tsx # Monaco editor preview
│ ├── ExampleSelector.tsx # Example dropdown
│ ├── Header.tsx # App header with mode selector
│ └── ModeSelector.tsx # Framework toggle buttons
├── examples/
│ └── exampleTemplates.ts # Pre-built example templates
├── generators/
│ ├── playwrightGenerator.ts
│ ├── seleniumGenerator.ts
│ ├── cypressGenerator.ts
│ └── puppeteerGenerator.ts
└── App.tsx # Main application
npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint- React 19 - UI framework
- TypeScript - Type safety
- Vite - Build tool
- Blockly - Visual block editor
- Monaco Editor - Code preview with syntax highlighting
- Tailwind CSS - Styling
MIT