Playwright Test Automator

A specialized model for automated generation of Playwright E2E test scripts based on web application crawl data.

Overview

Playwright Test Automator is built on a RAG-based architecture that combines AI-powered test generation with Playwright's robust browser automation capabilities. The model is designed to generate reliable, maintainable, and efficient end-to-end tests with minimal human intervention.

Features

  • Automated Crawling: Intelligently crawls web applications to discover interactive elements and page structures
  • Smart Login Detection: Automatically identifies login forms and credentials fields
  • Robust Selector Generation: Creates resilient selectors that withstand minor UI changes
  • Error Handling: Implements comprehensive error handling for reliable test execution
  • Validation Framework: Integrated with Giskard for model validation and continuous improvement

Use Cases

  • Generating regression test suites for web applications
  • Automating QA workflows for small to large web projects
  • Creating test scripts for complex user journeys
  • Validating forms and interactive elements across browsers

Requirements

  • Python 3.11+
  • Playwright
  • OpenAI API access
  • Supabase for knowledge retrieval (optional)

Example Usage

from services.crawler_service import crawler_service

# Crawl a website and generate tests
test_result = await crawler_service.crawl_with_login(
    url="https://example.com/login",
    username="test_user",
    password="password123"
)

# Generate a Playwright test from the crawl data
test_code = await crawler_service.generate_test_from_crawl_data(test_result)

# Write the test to a file
with open("example_test.spec.js", "w") as f:
    f.write(test_code["code"])

Sample Generated Test

// Example E2E Test
// Automated test for Example Application
// Auto-generated by Playwright Test Automator

import { test, expect } from '@playwright/test';

test('Example E2E Test', async ({ page }) => {
  // Configure viewport for better element visibility
  await page.setViewportSize({ width: 1280, height: 800 });
  
  // Helper function for safer element interactions
  async function safeClick(selector, description) {
    // Implementation details...
  }

  // Navigate to the application
  await page.goto('https://example.com/login');
  
  // Login process
  await page.fill("input[type='text'][name='username']", "test_user");
  await page.fill("input[type='password']", "password123");
  await safeClick("button[type='submit']", "login button");
  
  // Verify successful login
  await expect(page).toHaveURL(/dashboard/);
});

Limitations

  • Best performance on standard web forms and common UI patterns
  • May require adjustments for highly dynamic or custom UI frameworks
  • Requires valid credentials for protected areas of applications

Training Methodology

This model was trained on a diverse set of web applications using a specialized dataset of high-quality test scripts. The training process included:

  1. Web crawling of various application types
  2. Test generation with OpenAI integration
  3. Validation using Giskard framework
  4. Iterative improvements based on execution results

Citation

@misc{playwright-test-automator,
  author = {QA RAG App Team},
  title = {Playwright Test Automator},
  year = {2025},
  publisher = {Hugging Face},
  journal = {HuggingFace Hub},
  howpublished = {\url{https://huggingface.co/playwright-test-automator}}
}
Downloads last month
6
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support