Skip to main content

What is Playmatic?

Playmatic is an AI QA agent that lives inside your Slack and Github. Talk to it in English, and it will plan, code and validate tests on the cloud. The tests are written in Playwright, and can be augmented with AI actions for more accurate and reliable test creation & maintenance. You can run these tests locally and in the CI. Playmatic comes with infrastructure for running tests in the cloud, so you can simply add it to your Github action to get coverage on every PR.

Why use Playmatic?

  • Faster Coverage: Describe what you want to test in natural language, and Playmatic will plan, build, validate and create new tests in the background.
  • Powerful AI Augmentations: Augment Playwright tests with aiClick() and aiVerify() that enable more powerful and less flaky tests.
  • Familiar: Every test is entirely Playwright compatible, so you can use Playmatic with your existing test infrastructure and system.
import { test, expect } from '@playwright/test';
import { env, aiClick, aiVerify } from '@playmatic/sdk';

// Fully Playwright compatible test
test('Playmatic Meeting Calendar Loads', {
  annotation: [
    {
      // Goal is used by the agent for test maintenance
      type: 'playmatic-goal',
      description: 'User navigates to Playmatic.ai, goes to Pricing page, clicks Book Demo, and interacts with calendar'
    }
  ]
}, async ({ page }) => {

  // Test steps are used by the agent for maintenance 
  await test.step('Navigate to Playmatic.ai and go to Pricing page', async () => {
    await page.goto('https://playmatic.ai');
    await page.getByRole('link', { name: /Pricing/i }).click();
    await expect(page).toHaveURL(/pricing/i);
  });

  await test.step('Click Book Demo and interact with calendar in popup', async () => {
    // Use AI actions to click Book Demo button where the copy changes frequently
    const [popup] = await Promise.all([
      page.context().waitForEvent('page'),
      aiClick('Book Demo button', page)
    ]);

    await popup.waitForLoadState('domcontentloaded');
    await expect(popup).toHaveURL(/calendly/);

    // Use AI to interact with 3rd party UI
    await aiVerify('calendar or scheduling interface is visible', popup);
    await aiClick('an available date slot in the calendar', popup);
    await aiVerify('a date is selected or highlighted', popup);
  });
});

Next steps