Turn plain-English test cases into production-ready Playwright + POM automation. Normalize, generate, and run with AI-assisted precision.
Stop writing boilerplate. Let CementicTest handle setup, page objects, and test structure so you can focus on the logic that matters.
Write what your feature should do. CementicTest generates the code, the page objects, and the assertions.
# AUTH-001 - User can log in @smoke ## Steps 1. Navigate to https://myapp.com/login 2. Fill in email with '[email protected]' 3. Fill in password with 'secret123' 4. Click the 'Sign In' button ## Expected Results - Page redirects to /dashboard - Welcome message is visible # AUTH-002 - Login fails bad credentials @negative ## Steps 1. Navigate to https://myapp.com/login 2. Fill email '[email protected]' 3. Click 'Sign In' ## Expected Results - Error 'Invalid credentials' is visible
import { test, expect } from '@playwright/test'; import { AuthPage } from '../../pages/AuthPage'; test('AUTH-001 - User can log in', async ({ page }) => { const p = new AuthPage(page); await p.goto(); await p.waitForLoad(); await page.getByLabel('email') .fill('[email protected]'); await page.getByLabel('password') .fill('secret123'); await page.getByRole('button', { name: 'Sign In' }).click(); await expect(page) .toHaveURL(/\/dashboard/); await expect( page.getByText('Welcome')) .toBeVisible(); });
The CLI is available now on npm. The browser-based testing engine is in active development.
Full CLI reference. All commands, flags, and configuration options.
The CLI is live. The browser-based testing engine is being built right now. Join the waitlist for early access, founding pricing, and direct input on what we build next.