Write comprehensive E2E tests with Playwright in Google Antigravity including page objects fixtures and visual testing
# Playwright E2E Testing for Google Antigravity
End-to-end tests verify your application works as users expect. This guide establishes patterns for E2E testing with Playwright in Google Antigravity projects.
## Test Configuration
```typescript
// playwright.config.ts
import { defineConfig, devices } from "@playwright/test";
export default defineConfig({
testDir: "./tests/e2e",
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
reporter: [["html"], ["list"]],
use: {
baseURL: "http://localhost:3000",
trace: "on-first-retry",
},
projects: [
{ name: "chromium", use: { ...devices["Desktop Chrome"] } },
{ name: "mobile", use: { ...devices["iPhone 13"] } },
],
});
```
## Page Object Model
```typescript
import { Page, Locator } from "@playwright/test";
export class LoginPage {
readonly page: Page;
readonly emailInput: Locator;
readonly passwordInput: Locator;
readonly submitButton: Locator;
constructor(page: Page) {
this.page = page;
this.emailInput = page.getByLabel("Email");
this.passwordInput = page.getByLabel("Password");
this.submitButton = page.getByRole("button", { name: "Sign in" });
}
async login(email: string, password: string) {
await this.emailInput.fill(email);
await this.passwordInput.fill(password);
await this.submitButton.click();
}
}
```
## Test Examples
```typescript
import { test, expect } from "@playwright/test";
import { LoginPage } from "./pages/login.page";
test("should login with valid credentials", async ({ page }) => {
const loginPage = new LoginPage(page);
await page.goto("/login");
await loginPage.login("user@example.com", "password123");
await expect(page).toHaveURL("/dashboard");
});
```
## Best Practices
1. **Page objects**: Encapsulate page interactions
2. **Fixtures**: Share setup across tests
3. **Locators**: Use accessible selectors
4. **Assertions**: Use web-first assertions
5. **Parallelization**: Run tests in parallelThis Playwright prompt is ideal for developers working on:
By using this prompt, you can save hours of manual coding and ensure best practices are followed from the start. It's particularly valuable for teams looking to maintain consistency across their playwright implementations.
Yes! All prompts on Antigravity AI Directory are free to use for both personal and commercial projects. No attribution required, though it's always appreciated.
This prompt works excellently with Claude, ChatGPT, Cursor, GitHub Copilot, and other modern AI coding assistants. For best results, use models with large context windows.
You can modify the prompt by adding specific requirements, constraints, or preferences. For Playwright projects, consider mentioning your framework version, coding style, and any specific libraries you're using.