Runtime evidence on your pull requests
genclass-dev[bot] is GenClass's GitHub App. While your Playwright tests run, the GenClass runtime watches the page: which request was sent twice, which older response was applied over a newer one, which write was overwritten. The app puts that on the pull request, with the test, the seeds it happened in and the evidence line. It reads the race files your workflow uploads, never your source code. Free on public repositories.
What a review contains
- One check on each commit and one comment per pull request, edited in place. With nothing flagged there is no comment.
- Each finding names its test, the operation (
POST /api/orders), how many seeds of that test flagged it, and the evidence line the runtime printed. Flagged in two or more seeds of the same test, it is marked reproducible. - From push to push a finding is new, still flagged, or not flagged at the new commit. The app does not call anything fixed: a replay on your machine proves a fix.
- With a repository linked to a GenClass app: that app's production findings on the pages the pull request's files serve.
@genclass-dev replay 1gives the steps to reproduce a finding;@genclass-dev fix 1writes a brief your coding agent can work from with@genclass/mcp, in your own CI or on your machine.- Each line is a diagnosis by the on-device model or a fact the runtime measured. Whether it is a bug is for you to decide.
Set it up
Use the fixture in your Playwright tests
The fixture puts the GenClass runtime on each page under test, in observe mode: it reports and never holds, delays or changes anything your app does. With chaos on, each seed delays and reorders responses differently.
Install
npm i -D @genclass/playwright @genclass/runtime@beta
Configure
// playwright.config.ts
use: { genclass: { chaos: { seed: 1, delayMs: [0, 600] } } },
// in your specs
import { test, expect } from "@genclass/playwright/fixture";Upload the race files from your workflow
The fixture writes one small JSON file per test and seed to test-results/genclass. genclass-dev[bot] reads the artifact when the workflow run finishes, also for pull requests from forks, whose own token cannot comment.
In the job that runs Playwright
- run: npx playwright test --repeat-each 2
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: genclass-races
path: test-results/genclass
retention-days: 7Open a pull request
The GenClass check appears on its commits. When something is flagged, one comment lists each finding with its test, its seeds and the evidence line; it is edited in place on later pushes. Reply @genclass-dev help on the pull request for the commands.
What it may read and write
- Pull requests, read and write: the list of files a pull request changes (their paths and which lines the diff shows) and its own comments.
- Checks, write: the GenClass check on each commit.
- Actions, read: the workflow runs of a pull request's head commit and the artifact with the race files.
- Issues, read and write: GitHub delivers pull-request comments (the
@genclass-devcommands) under this permission; the app reacts to a command to show it was seen, and opens an issue only when a setting or a person with write access asks. - One file, read:
.github/genclass.ymlon the default branch, your settings. - Metadata, read: required by GitHub for every app.
- Not asked for: repository contents. The app cannot read, clone or change your code, branches, workflows, secrets or settings, and it never opens a pull request.
What it keeps
- For an installation: its GitHub account's name and id. For a pull request: the ids of the app's own comment and check, and per finding a fingerprint and the short title already in the comment.
- Never: code, diffs, file contents, race files, tokens. An artifact is read in memory for the review and dropped.
- Uninstalling removes everything kept for the installation at once. The privacy policy has the full list.
Plans
- Public repositories: free, for every account and organization.
- Private repositories: included while the app is in beta.