Smart selection · AI triage · pre-launch

CI is talking.
Make it readable.

Exolar reads your Playwright runs the way a senior engineer reads a post-mortem. Clusters failures. Names the flakes. Recommends which suites a PR can't actually break.

For platform / devex teamsv0.7 · shadow mode live
raw · CI run #2871
triage·
marketplace › sort by recent
checkout › apply promo code
auth › reset password
checkout › split shipping
search › fuzzy results
marketplace › filter chips
checkout › refund flow
auth › sso callback
search › empty state
Cluster · Checkout promo path
3
Flake · network timing
1
Safe · 5 suites · skippable
5
9 tests → 3 verdicts~1.5s

01 · the problem

Your CI is talking.
Nobody's reading.

Every red build dumps the same kind of noise: thousands of lines of stack traces, retry counts, screenshots, a tight little Slack ping. Engineers grep, blame, re-run. The signal is buried under the form factor.

Test analytics tools were built to store this output, not to read it.

CI #2871 · marketplace-v2/checkout.spec.tsFailed · 4 retries
Error: Timed out 30000ms waiting for expect(locator).toBeVisible()
 
Locator: getByRole('button', { name: 'Apply promo' })
Expected: visible
Received: <element(s) not found>
 
at /tests/checkout/promo-code.spec.ts:48:34
at /tests/checkout/promo-code.spec.ts:12:16
 
Retry 1/3 · failed
Retry 2/3 · failed
Retry 3/3 · failed
CI #2871 · 41 lines laterFailed · 0 retries
Error: Timed out 30000ms waiting for expect(locator).toBeVisible()
Locator: getByRole('button', { name: 'Apply promo' })
 
...identical stack...
 
(no retries, bailed)

Same root cause, surfaced as two separate failures. A human reads this in five seconds. The dashboard doesn't.

How Exolar reads CI

Three passes between push and verdict.

02Ingest

Every run, every retry, every artifact.

One GitHub Action drops Playwright JSON, traces, videos, and screenshots into Exolar. Multi-tenant by default: your org, repo, branch, suite, run. Vector embeddings get computed at ingest, not on read.

incoming
jsonplaywright-results.json
184b
tracetrace · checkout.spec
2.2kb
videovideo · marketplace.spec
4.1kb
screenshotscreenshot · auth.spec
380b
jsonsmart-selection-outcomes.json
12b
tracetrace · search.spec
1.8kb
indexed
org_suites14
test_results · 7d48,512
failures embedded2,118
vector dim1024
03Cluster

Failures group themselves.

Jina-v3 embeddings + Cohere reranking pull together failures that share a root cause, even when stack traces differ. Fifty reds become four clusters. Each cluster carries the smallest spanning example that explains the rest.

50 failures · 4 clustersjina-v3 · cohere rerank
Checkout promo path18 · high
Stream chat reconnect14 · high
Algolia debounce race11 · med
Long-tail singletons7 · low
04Triage

A debrief, not a dashboard.

Every run produces a narrative report: what changed, what flaked, what was safely skipped by Smart Selection. The AI triage layer (shipping soon) turns those clusters into a draft post-mortem you can send.

triage report · CI #2871draft · ready to send

Headline

Checkout promo path broke when the new pricing API rolled out at 18:42 UTC. Smart Selection correctly skipped 11 unaffected suites this PR.

What changed

apps/pricing/v3 shipped; promo-code locator selector drifted.

Recommended action

Update checkout/promo-code.spec.ts:48 locator. → Open PR

05 · Smart selection

Skip the suites your PR can't break.

For each PR, a Gemini-class model reads the diff against your suite catalog and recommends what to actually run. Shadow mode first; auto-skip only after calibration. Tap a scenario.

recommendationconfidence 0.94

will run

marketplaceauth

will skip

checkoutsearchstream-chatapi-onlysmart-selectionadminsettingsreliability

observation

Visual-only change. No business logic, no API surfaces, no shared state.

mode · shadowsaved ~14 min · this PR

06 · Integrate

Wires into the stuff you already run.

GitHub Actions for the ingest. MCP for Claude / Cursor / any compatible client. YAML for the catalog. No agents to deploy, no SDKs to wrap.

One command. Adds Exolar to Claude Code.

bash
claude mcp add exolar-qa \
  --transport http https://exolar.agentical.work/api/mcp/mcp \
  -s user

# OAuth opens in your browser. No token copying.
07 · Next

AI triage layer is shipping next.
Every failed run lands in your inbox as a draft post-mortem: clusters, suspects, the line of code that's probably wrong.

Now

Cluster & semantic search

Now

Smart selection · shadow

Next

Smart selection · active

Next

AI triage drafts

08 · Join

Stop reading red builds.
Start reading verdicts.

Early access to Exolar is rolling out to platform teams running serious Playwright suites.

Exolar QA