AI App Maker with Browser Testing: Your App Gets QA Before You See It
Most AI app builders generate code and hope it works. mk0r generates code, opens a real browser, clicks through your app, and fixes what breaks. All before you see the first preview.
The gap in every AI app builder
AI app builders are fast. You describe what you want, and code appears in seconds. But "code that compiles" and "code that works" are different things. A button might render but do nothing when clicked. A form might look right but throw a JavaScript error on submit. An export feature might fail silently because of a CORS restriction.
Traditional AI builders hand you the output and leave you to discover these problems yourself. You become the QA team. mk0r takes a different approach: the AI agent that builds your app also tests it with a real browser, in the same session, before you see the result.
What happens inside the VM
When you choose VM mode, mk0r boots a Freestyle cloud sandbox with seven coordinated services. The AI agent writes your React code, Vite hot-reloads it instantly, and Playwright automates Chromium to test every interaction. Here is the actual message flow between components:
Build-Test-Fix Cycle
Seven services, one VM, zero configuration
The testing infrastructure is not bolted on as an afterthought. It is part of the base VM image, pre-warmed and snapshot-cached so the entire stack boots in 2 to 3 seconds. Every service is configured and wired together before your first keystroke.
VM Service Stack
Xvfb
Virtual display :99 at 1600x900
Chromium
CDP on port 9222
Playwright MCP
@0.0.70 on port 3001
ACP Bridge
Agent IPC on port 3002
Vite Dev
React + HMR on port 5173
VNC
Live viewport on port 5901
Proxy
Routes all traffic on port 3000
What the AI actually tests
The agent does not just render your app and screenshot it. It interacts with it the way a real user would. It navigates to pages, clicks buttons, fills forms, checks that state updates correctly, reads the browser console for errors, and verifies that exported files are valid. Here is a real testing session for an icon generator app:
Why testing during generation changes everything
When testing happens after delivery, every bug becomes a round trip. You find the problem, describe it, wait for a fix, and test again. Each cycle costs minutes of your attention.
When testing happens during generation, the AI catches its own mistakes. The CORS error in the terminal output above never reaches you. The agent detects it, rewrites the component, hot-reloads through Vite, retests with Playwright, and confirms the fix. By the time you see the app, the export button works.
This is possible because the entire stack lives in one VM. The agent has write access to the codebase (Vite at port 5173), read access to the browser (Chromium CDP at port 9222), and automation access through Playwright MCP (port 3001). There is no context switch between "build tool" and "test tool." They are the same process.
Under the hood: the snapshot hash
Speed comes from snapshot caching. The file src/core/freestyle.ts defines the complete VM specification: the base image setup (Chromium, Playwright MCP version, Node packages), the startup script (Xvfb, CDP, VNC, Vite), the proxy routing, and the ACP bridge. A SHA-256 hash of these four strings becomes the snapshot key. If nothing changed, the VM boots from cache in 2 to 3 seconds. If you upgrade Playwright from 0.0.70 to a newer version, the hash changes and CI automatically rebuilds the snapshot (5 to 10 minutes) so production never hits a cold start.
This design means the testing infrastructure is versioned and deterministic. Every user session gets the same browser, the same automation layer, and the same dev server configuration. There is no "works on my machine" variance because there is no local machine involved.
Watch the AI test your app live
The VM does not run tests in a black box. A screencast relay streams live JPEG frames from Chromium over WebSocket to your browser. You see the AI navigating your app, clicking elements, and watching results update in real time. Frames are captured at 1600 by 900 resolution, JPEG quality 60, every other frame, giving you a smooth ~15 FPS preview of the entire testing process.
If you want full control, VNC access is available on port 5901 through a WebSocket bridge. You can watch, and (in future updates) interact alongside the AI to guide testing toward specific areas of your app.
Who benefits most
Non-developers who cannot debug JavaScript errors themselves. The AI handles the entire feedback loop: build, break, fix, verify. You describe what you want; you get something that works.
Developers prototyping fast who do not want to set up a test harness for a throwaway prototype. The Playwright integration runs automatically. No config files, no test scripts, no CI pipeline.
Teams evaluating AI builders who care about output quality, not just output speed. Browser testing during generation is a quality gate that other builders skip entirely.
Build an app with built-in QA
No account needed. Describe your app and watch the AI build it, test it, and fix it in a real browser. All in under 3 minutes.
Start Building โFrequently asked questions
What browser does mk0r use to test generated apps?
mk0r runs Chromium inside a cloud VM with Chrome DevTools Protocol (CDP) on port 9222. The AI agent controls it through Playwright MCP, the same automation framework used by professional QA teams. This is a real browser, not a simulator or headless approximation.
Do I need to install Playwright or Chromium locally?
No. Everything runs inside a Freestyle cloud sandbox. The VM image comes pre-built with Chromium, Playwright MCP, a Vite dev server, and all supporting services. You just describe your app and the testing happens automatically.
How is this different from tools like Testim or Applitools?
Testim and Applitools test apps that already exist. mk0r tests apps as they are being built. The AI writes your code, hot-reloads it in a Vite dev server, opens a Chromium browser, clicks through the interface, checks for console errors, and fixes anything broken before you see the result. Building and testing happen in the same session.
Can I watch the browser testing happen in real time?
Yes. The VM streams a live screencast over WebSocket. You see exactly what the AI sees: the browser navigating your app, clicking buttons, filling forms. Frames are captured at 1600x900 resolution and streamed as JPEG at approximately 15 frames per second.
How long does the build and test cycle take?
The VM boots from a pre-warmed snapshot in 2 to 3 seconds. From there, the AI builds your app with hot module replacement (changes appear instantly) and runs browser tests. A typical session, including multiple test-fix iterations, completes in 1 to 3 minutes.
Do I need an account to use mk0r?
No account, no signup, no credit card. Go to mk0r.com, describe your app, and it starts building immediately. The browser testing is included in every VM mode session by default.
What kinds of bugs does the browser testing catch?
The AI tests for runtime JavaScript errors, broken click handlers, failed network requests, CORS issues on canvas exports, layout problems visible in the browser viewport, and missing component imports. It reads the browser console, inspects DOM elements, and verifies that interactive features actually work when clicked.
Build an app. Watch the AI test it. Ship with confidence.
No account. No setup. No separate QA tool. Describe what you want and mk0r handles building, testing, and fixing.
Start Building