Step-by-Step

How-To Guides

From picking the right Purpose and Role, to using the Data Generator, to converting a manual test case to a runnable Playwright spec. Start anywhere that fits your current task.

Guide 01
Purpose & Role
Pick the right selectors for the right deliverable
Guide 02
Writing Content
What to paste for each purpose to get quality output
Guide 03
Data Generator
Every field explained, formats and edge cases
Guide 04
Playwright
Manual cases to runnable TypeScript specs
Contents
01 — Purpose & Role 02 — Content 03 — Data Generator 04 — Playwright
Guide 01

How to Pick the Right Purpose and Role

The two most consequential selectors in the Composer are Purpose and Role. Everything else adjusts the result — these two define it. A wrong Purpose generates the wrong deliverable entirely. A wrong Role applies the wrong mental model to it.

1

Start with Purpose — it drives everything else

The Purpose selector sets defaults for Role, Output Format, Reasoning Mode, and Coverage. In most cases you only need to pick a Purpose and paste your content; the defaults are calibrated.

The quickest way to pick the right Purpose: what deliverable do I need at the end of this prompt?

If you need… Purpose Tier
Testable acceptance criteria from a vague Jira ticketRequirement & Jira1
Scenarios / test cases for a featureTest Case Writing1
A structured bug report with a root-cause hypothesisBug Reporting & Triage1
A GREEN / AMBER / RED QA status update for a PMStatus & Reporting1
Synthetic test data (CSV, JSON, SQL, XML, Faker.js)Data Generator1
An exploratory charter applying SFDIPOT / RCRCRC heuristicsExploratory Testing1
A runnable Playwright TypeScript spec from a manual scenarioAutomation (Playwright)2
API test cases covering status codes, auth, payloads, errorsAPI Testing2
Root cause of intermittent CI failuresFlake Triage2
A decision on what to automate from a batch of manual casesAutomation Strategy2
Tier 1 vs Tier 2

Tier 1 purposes are daily tasks — ticket analysis, test writing, status updates, data generation, exploratory charters. Start here. Tier 2 purposes are specialist — accessibility audits, security testing, performance analysis, automation code.

2

Map your current work to a Role

The Role selector sets the AI’s default instincts — vocabulary, standards, and what it naturally checks for. Think of it as which lens does this task need?

Stage Activity Role to select
0 – UnderstandReading a ticket, asking “what does correct mean?”QA Analyst / Requirements Tester
1 – ExploreHands-on testing with no script; surfacing unknownsExploratory Tester
2 – SpecifyWriting human-readable test casesTest Case Author / Manual QA
3 – Decide“Which of these 20 cases should we automate?”Test Automation Analyst
4 – AutomateConverting a case to a Playwright scriptAutomation Engineer (Playwright/TS)
5 – ArchitectPOM, fixtures, CI config, sharding, auth reuseSenior SDET / Framework Architect
6 – MaintainFlaky tests, data issues, security, a11y, perfSpecialist roles
Most common mistake

Jumping to Stage 4 (Automation Engineer) when you’re actually at Stage 3 (deciding what to automate) or Stage 0 (figuring out what “correct” means). Use the Automation Strategy purpose before writing any code.

3

Add a second Role when the task crosses two failure layers

The Role selector is multi-select. The first selected Role sets the primary lens; the second adds an additional instinct to the same output. Only add a second Role when you can name a specific reason.

  • Test Case Author + Data Validation Specialist — feature involves data correctness (types, ranges, nulls)
  • Test Case Author + Security Test Engineer — feature handles auth, tokens, or PII
  • API Engineer + Data Validation Specialist — endpoint whose response shape correctness matters
  • Playwright Engineer + Flake Triage — writing a new spec while diagnosing why an existing spec is intermittent
Rule of thumb

If you’re adding more than two Roles, you’re trying to solve two distinct problems. Split into two separate prompts instead.

4

Load a built-in preset for the five most common daily workflows

Open Presets ▾ in the left panel header. Loading a preset configures Purpose, Role, Output Format, Reasoning Mode, Coverage, and Guards in one click — you only need to paste your content.

Preset Paste into textarea
Gherkin from Jira TicketThe Jira ticket text or AC
Bug Report + Root CauseSteps to reproduce + logs or error output
Regression Smoke ChecklistFeature description or existing test plan summary
API Test Cases (Column Suite)Endpoint description, OpenAPI snippet, or API contract
Playwright E2E SpecManual test case steps
Guide 02

How to Write Content the Composer Can Use

The Composer’s main textarea is where your raw material goes. What you paste there determines the quality of the output. The Composer assembles the role, XML structure, guards, and formatting instructions around it automatically.

1

Match what you paste to the Purpose

Different purposes need different raw material. Pasting the wrong thing — even well-written input — causes generic or off-target output.

Purpose Paste into textarea Avoid
Requirement & JiraThe exact Jira ticket text including Description, AC, and commentsYour interpretation — paste the raw text
Test Case WritingFeature description with explicit, measurable acceptance criteriaA vague feature name with no criteria
Bug Reporting & TriageExact steps to reproduce + stack trace or error messageOnly symptoms — include the concrete error evidence
Flake TriageFailing test code + CI failure logs (stack trace, timing, frequency)Just “this test is intermittent” — logs are the evidence
Automation (Playwright)A single manual test case with numbered steps and expected resultsA batch of 10 cases — generate one spec at a time
2

Use the Additional Sources fields for evidence and schemas

Below the main textarea are two optional source fields. Keep evidence separate from the task description.

Logs / Evidence field
Stack traces · CI failure output · performance metrics · network logs · console errors

Used by: Bug Reporting, Flake Triage, Performance & Data Analysis, Data Validation
Schema / API Spec field
OpenAPI/Swagger snippet · JSON Schema · DB schema · Pact contract · GraphQL schema

Used by: API Testing, Data Validation, Data Generator, Automation (Playwright)

The Composer wraps these in typed XML blocks so the model treats them as evidence, not as instructions. This is what the assembled prompt looks like internally:

XML – What the Composer assembles for you assembled-prompt.xml
<context>
  Role: Bug Reporter / Defect Analyst
  Environment: Staging build 4821
</context>

<task>
  [Your main textarea content]
</task>

<data>
  [Your Logs / Evidence field content]
</data>

<schema>
  [Your Schema / API Spec field content]
</schema>

<constraints>
  [Output format, guards, reasoning mode, coverage]
</constraints>
Redact guard

If you’re pasting real logs that contain session tokens, customer names, or any actual PII — turn on the Redact / Privacy guard before copying the prompt.

3

Paste a House-Style Example to lock your team’s format

The House-Style Example context field is one of the highest-leverage things you can fill in. Paste one complete example output — a test case, a bug report, a table row — in your team’s preferred format. The model mirrors its structure, columns, and tone exactly.

Without a house-style example
Output uses the model’s own formatting defaults — column names, priorities, and layout may not match your team’s Jira fields or your TMS import format.
With a house-style example
Output exactly matches the pasted structure — same column names, same priority labels, same table layout. Pastes directly into your TMS without reformatting.
4

Use Custom Instructions for one-off steers, not format changes

The Custom Instructions field is a free-text addition appended to the end of the prompt. Use it for situational adjustments that don’t warrant a selector change. Do not use it to change format or output type — use the Output Format selector instead.

High-value context fields to fill
  • Requirement IDs — ticket numbers the output must trace to (e.g. TEST-123).
  • Testing Target — Web UI / REST API / Database. Turns generic output into layer-specific output.
  • Roles Under Test — e.g. admin, dealer, guest. Required for Permission coverage.
  • Module / Feature — e.g. LEADS — produces IDs like TC-LEADS-001.
  • Framework — set this before using any automation purpose to get correct code syntax.
Guide 03

How to Use the Data Generator

The Data Generator purpose replaces the standard selector panel with a dedicated data spec panel. When you select it, the Composer locks the Test Data Engineer role and switches to a different interface. This guide walks through each field.

1

Pick the right output format

Format Use when Notes
CSV / TSVImporting into a tool, spreadsheet, or flat importSet Encoding to UTF-8 with BOM for Excel
JSONAPI fixtures, frontend mocks, JS/TS consumerFinancial values emitted as strings
SQL INSERTSeeding a relational database directlySet SQL Dialect — escaping differs per engine
XMLStructured feeds, EDI documents, legacy systemsCDATA used for multi-char content
Faker.js Factory (TS)Version-controlled, repeatable generation in TSSet a Seed — identical seed = identical records
Volume note

The model returns records inline — keep Quantity at or below 50 for reliable output. For larger datasets, generate a Faker.js factory or SQL script and run it yourself.

2

Define Constant and Varying fields

Constant fields are identical across every record (e.g. tenant_id=1001, region=EU). Varying fields must be unique per record. At least one Varying field is required.

Type What the model generates Example
EmailRFC 5321-valid; @example.com domain onlyj.doe@example.com
UUIDv4 UUID, globally unique within the dataseta1b2c3d4-…
DecimalFixed-precision; financial values emitted as strings"19.99"
DateISO 8601 date string; future dates capped by default2025-03-14
EnumDrawn from a provided list; distributed across recordsactive
3

Set the Seed value for reproducible output (Faker.js only)

Identical seed + identical field configuration = byte-identical output every time. Use when the dataset is used in a regression test, a data migration, or you need team-wide reproducibility.

TypeScript – Faker.js Factory output factories/user.factory.ts
import { faker } from '@faker-js/faker';

type UserStatus = 'active' | 'trial' | 'expired' | 'locked';

export function buildUser(overrides = {}): User {
  return {
    id:        faker.string.uuid(),
    firstName: faker.person.firstName(),
    email:     faker.internet.email({ provider: 'example.com' }),
    status:    faker.helpers.arrayElement([
                 'active', 'trial', 'expired', 'locked'
               ] as const),
    ...overrides,
  };
}

export function buildUserSeeded(seed: number, overrides = {}): User {
  faker.seed(seed);
  return buildUser(overrides);
}
Guide 04

How to Go from Manual Test Cases to a Playwright Spec

The Composer has two automation purposes that work in sequence: Automation Strategy decides what to automate and at which layer, then Automation (Playwright) converts each approved case to runnable TypeScript. Skipping the strategy step is the most common cause of brittle suites.

1

Run Automation Strategy on your batch of cases first

Paste your list of manual test cases. The prompt produces a decision for each case:

  • Automate now — clear ROI, stable, deterministic, has a programmatic oracle
  • Automate later — worth automating but blocked (feature in flux, missing selectors)
  • Keep manual — one-off, visual, cognitive, or exploratory
Frequency Stability Decision
HighHighAutomate now
HighLowStabilise first
LowHighAutomate later
LowLowKeep manual
2

Run Automation (Playwright) for each approved case

Switch Purpose to Automation (Playwright). Paste one manual test case (numbered steps + expected result). The prompt produces a runnable TypeScript spec using Arrange-Act-Assert structure.

  • State seeded via API, not UI — no brittle multi-step login setup
  • Role-based locators (getByRole, getByLabel, getByTestId) — never CSS class names
  • Web-first assertions (toBeVisible(), toHaveText()) — never waitForTimeout()
TypeScript – Playwright spec output tests/inventory.spec.ts
import { test, expect } from '@playwright/test';

test('dealer adds a vehicle to active inventory', async ({ page }) => {

  // Arrange: seed state via API
  const apiResponse = await page.request.post('/api/dealers/123/session', {
    data: { username: 'qa_dealer@example.com', role: 'dealer_admin' },
  });
  await expect(apiResponse).toBeOK();

  // Act: role/label/testid locators
  await page.goto('/inventory');
  await page.getByRole('button', { name: 'Add Vehicle' }).click();
  await page.getByLabel('VIN').fill('1HGBH41JXMN109186');
  await page.getByRole('button', { name: 'Save Vehicle' }).click();

  // Assert: web-first auto-retrying assertions
  await expect(page.getByRole('alert'))
    .toContainText('Vehicle added successfully');
});
3

Verify the spec before committing it to CI

Check Why
Locator names match actual DOMThe model uses names from your input — confirm they’re in the real HTML
API seeding endpoints are real pathsThe model uses placeholder endpoints — replace with actual routes
Run in headed mode firstnpx playwright test --headed — watch before adding to CI
Each test passes individuallyRun with --grep "test name" to confirm no ordering dependency
For framework design (POM, fixtures, CI config)

Switch the Role to Senior SDET / Framework Architect for questions about Page Object Model structure, typed fixtures, playwright.config.ts projects, auth-state reuse, parallel sharding, or CI integration.