SparkTest · Under the hood

Plain English in.
Auditable scripts out.

This page is for your engineers. No hand-waving: the exact sequence of a run, the healing state machine, the fleet topology and the audit trail.

01 · Anatomy of a run

One poll, one browser, one honest report.

The console schedules work; agents claim it. On the first run the agent codifies your plain-English description into a Puppeteer script. Every run after that executes the stored artifact — and when a step fails, the heal loop kicks in before anyone files a ticket.

02 · The artifact

A real script you can read, not a session you must trust.

This is what an agent generated — and later healed — for a Wikipedia search test. Plain Puppeteer, structured into reported steps. It is stored with the test case, versioned on every change, and exportable at any time.

wikipedia/search/searching-shows-the-article.ts

script v2 · healed once
// wikipedia/search/searching-shows-the-article — script v2 (healed once)// Codified by agent mini-04 from://   "Searching for 'Turin' from the home page opens the Turin article."import puppeteer from "puppeteer"; const TIMEOUT = 15_000;const step = createStepReporter(); // injected by the agent runtime (async () => {  const browser = await puppeteer.launch({ headless: true });  const page = await browser.newPage();  await page.setViewport({ width: 1440, height: 900 });   await step("open wikipedia.org", async () => {    await page.goto("https://www.wikipedia.org", {      waitUntil: "networkidle2",      timeout: TIMEOUT,    });  });   await step("search for 'Turin'", async () => {    await page.type("input#searchInput", "Turin");    await Promise.all([      page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: TIMEOUT }),      page.keyboard.press("Enter"),    ]);  });   await step("the Turin article is shown", async () => {    // v2 (healed): the title is now nested in span.mw-page-title-main    await page.waitForSelector("h1#firstHeading .mw-page-title-main", {      timeout: TIMEOUT,    });    const title = await page.$eval(      "h1#firstHeading .mw-page-title-main",      (el) => el.textContent?.trim()    );    if (title !== "Turin") {      throw new Error('expected article title "Turin", got "' + title + '"');    }  });   await browser.close();})();

03 · Self-healing

A state machine, not a leap of faith.

Healing is bounded and observable. Each attempt burns budget; each patch is a new script version; each outcome is a distinct state your dashboards can filter on. A healed pass is never silently folded into a normal pass.

Humans stay in the loop

Every heal produces a reviewable diff in the console. Approve it and the patched version becomes the baseline; reject it and the test is flagged for a human pass. Nothing changes silently.

Failure is a result too

When the heal budget is exhausted, the run fails loudly — with logs, the offending DOM snapshot and screenshots. A real regression is never healed away.

04 · The fleet

Enrolling an agent is one line.

Agents are SparkNodes — compact AI appliances running a local LLM. They enroll with a one-time token and then poll the control plane for work over outbound HTTPS — nothing to open in your firewall, no VPN, no inbound ports. From the console you can pause, drain or retire any agent.

terminal — new fleet machine

outbound HTTPS only
$ curl -fsSL https://get.sparktest.dev/agent | sh$ sparktest-agent enroll --token STK-ENR-7F3A-9C21✓ enrolled as mini-07 · fleet eu-south-1✓ outbound HTTPS to control plane — no inbound ports, no VPN✓ local LLM warm · polling for work

One-time token

Enrollment tokens are single-use and scoped. A stolen token can't re-enroll, and an agent can be retired from the console in one click.

Outbound-only protocol

Claim work, stream logs, report results — all initiated by the agent over HTTPS. The control plane never dials in.

Fully governed

Pause, drain and retire are console operations. Dedicated Fleet customers see their named machines, their queue and their utilization.

05 · The platform

Two planes, one audit trail, zero lock-in.

The control plane runs on the SparkTech Backbone platform — Quarkus reactive services over PostgreSQL, with entities and workflows expressed as governed metadata. The execution plane is the fleet. They only ever meet over HTTPS.

Everything is versioned

Every codify and every heal creates a new script version with author, trigger and diff. Run history links each result to the exact version that produced it — so “what changed?” always has an answer.

Export means export

Scripts are plain Puppeteer and run anywhere Node runs. Scale plans add full audit export. If you ever leave, your entire suite — history included — leaves with you.

Convinced the hard way? Now try the easy one.

14-day trial · 5 maintained tests · shared fleet · no card required.