Automation Tools

Ship Faster with Confidence

Build quality into every release with our suite of automation tools.

Fixture Builder

Generate clean, consistent and test-ready data fixtures from CSV, JSON, PDF or DOCX documents.

Powered by OpenAI GPT-4o-mini and built in Node.js + TypeScript.

What is Fixture Builder?

Fixture Builder is a lightweight CLI that transforms real data into normalised, ready-to-use fixtures for Cypress, Playwright, or raw JSON tests.

It supports multiple input formats: CSV/JSON ingestion for structured data, and AI-powered extraction for PDF and DOCX documents — turning unstructured documents like reports, tables, and specifications into structured JSON automatically.

Using OpenAI GPT-4o-mini, the AI engine intelligently recognises headers, extracts tables, and structures data from PDF and Word documents, making it perfect for converting legacy documents or specifications into test-ready fixtures.

It combines automation efficiency with human insight — letting teams move faster without compromising product understanding or quality.

Built in Node.js + TypeScript — with schema inference, deterministic masking, AI-powered document extraction, and AI-ready extension points.

Key Features

  • CSV / JSON Ingestion

    Reads and cleans raw data from multiple sources

  • PDF Extraction

    AI-powered extraction from PDF documents - recognises tables and structures automatically

  • DOCX Extraction

    Extract structured data from Word documents - works with tables and key-value formats

  • AI-Powered Processing

    Uses OpenAI GPT-4o-mini to intelligently extract and structure data from unstructured documents

  • Schema Inference

    Automatically detects boolean, numeric, date, email, enum types

  • Test-Ready Output

    Generates fixtures for Cypress, Playwright, or generic JSON

  • Deterministic Masking

    Safely hides PII while keeping tests repeatable

  • Header Normalisation

    Trims, removes BOMs, and converts to camelCase

  • Configurable Rules

    Custom mappings, enrichment, and masking options

  • Repeatable Builds

    Deterministic for stable CI runs

See It In Action

Before: Raw Table
NameEmailPhoneAge
John Doejohn@example.com555-012328
Jane Smithjane@example.com555-045632
Bob Wilsonbob@example.com555-078945
Step 1: Structured JSON
[
  {
    "name": "John Doe",
    "email": "john@example.com",
    "phone": "555-0123",
    "age": 28
  },
  {
    "name": "Jane Smith",
    "email": "jane@example.com",
    "phone": "555-0456",
    "age": 32
  },
  {
    "name": "Bob Wilson",
    "email": "bob@example.com",
    "phone": "555-0789",
    "age": 45
  }
]
After: Playwright Fixture
import { test } from '@playwright/test';

export const users = [
  {
    name: "John Doe",
    email: "masked_email_1@example.com",
    phone: "masked_phone_1",
    age: 28
  },
  {
    name: "Jane Smith",
    email: "masked_email_2@example.com",
    phone: "masked_phone_2",
    age: 32
  },
  {
    name: "Bob Wilson",
    email: "masked_email_3@example.com",
    phone: "masked_phone_3",
    age: 45
  }
];

Step-by-Step Instructions

Choose your input format to see specific instructions:

1 Install

npm i -D domtree-fixture-foundry

2 Create Your Input Data

Start with a CSV or JSON file. Example:

mkdir -p data
curl -L -o data/users.csv https://raw.githubusercontent.com/datablist/sample-csv-files/main/files/people/people-100.csv

3 Create Config File

Create domtree.config.json in your project root:

{
  "input": "data/users.csv",
  "frameworks": ["cypress", "playwright", "raw"],
  "outputDir": "dist",
  "datasetName": "users",
  "mask": ["email", "phone"]
}

Key fields:

  • input - Path to your CSV or JSON file
  • frameworks - Output formats: cypress, playwright, or raw JSON
  • outputDir - Folder for generated fixtures
  • datasetName - Base name for output files
  • mask - Fields to anonymise deterministically

4 Generate Fixtures

npx domtree-fixtures generate --config domtree.config.json

Result: dist/cypress/fixtures/users.json, tests/fixtures/users.ts, users.json

How It Works

Ingests CSV or JSON

Reads your raw data files

Infers Schema

Detects data types automatically

Normalises & Masks

Cleans headers, masks PII, fills missing data

Generates Fixtures

Creates test-ready fixture files

Deterministic + repeatable = high-quality test data that behaves the same in local and CI environments.

Automation Tools Roadmap

What's coming next for Fixture Builder and Gherkin Generator

Phase Focus Key Features Status
Phase 1 — Foundation Establishing reliable, repeatable fixture generation • CSV + JSON ingestion
• Schema inference (boolean, number, date, enum)
• Deterministic masking for PII
• Header normalisation (camelCase, BOM removal)
• Cypress / Playwright / Raw JSON outputs
• Config-driven CLI
• Published on npm
Complete
Phase 2 — Expansion Broaden supported input types & data flexibility • File adapters for Excel, PDF, DOCX
domtree-fixtures extract command for pre-processing
• Plugin architecture for new file formats
• Improved validation and data consistency checks
Complete
Phase 3 — Intelligence (AI-Assist) Integrating AI for smarter, context-aware data --ai-suggest for LLM-powered schema inference
--ai-enrich for contextual, anonymised data filling
• AI-driven test scenario generation (user journeys, edge cases)
• Human-in-the-loop schema review
Planned
Phase 4 — Experience (Domtree Vision) Enabling collaboration, visibility & learning • Web interface for upload, preview, and export
• Domtree Cloud for reusable datasets
• AI engine that reads PRDs & UX docs to propose test data
• Community template sharing
Future
Continuous Enhancements Refinement, stability & scale • CI/CD integrations (GitHub Actions, Jenkins)
• Config validation and schema typing
• CLI UX improvements
• Privacy & security modes
Future