Opslane operates as a three-phase pipeline that runs automatically on every pull request: Connect, Verify, and Ship. When a PR opens, a GitHub App event triggers the pipeline. An ephemeral sandbox spins up, a real browser crawls your app and exercises its flows, and then the results are posted back to the PR as a comment. The whole process requires no test scripts and no CI configuration from you.Documentation Index
Fetch the complete documentation index at: https://docs.opslane.com/llms.txt
Use this file to discover all available pages before exploring further.
Phase 1: Connect — GitHub App watches for PR events
When you install the Opslane GitHub App on a repository, it registers a webhook that fires on pull request events. Every time a PR is opened or a new commit is pushed to an existing PR, the webhook sends an event to Opslane. Opslane receives the event and reads the metadata: the branch name, the base branch, the repository, and the deployment URL associated with the PR. If your repository uses preview deployments (for example, via Vercel, Netlify, or a custom CI pipeline), Opslane detects the preview URL from the PR status checks. If no preview URL is present, you can configure a static URL pattern in the Opslane dashboard.You do not need to add any steps to your existing CI workflow. The GitHub App handles the trigger entirely through webhooks.
Phase 2: Verify — ephemeral sandbox and real browser crawl
Once Opslane has the deployment URL for the PR, it provisions a fresh ephemeral sandbox — an isolated environment created specifically for this run and destroyed when it finishes. Inside the sandbox, Opslane launches a real Chromium browser (not a headless simulation) and navigates to your app. It then runs the crawl-and-verify process:What “crawling flows” means
Instead of executing a test script, Opslane explores your app the way a user would. It identifies interactive elements — buttons, forms, links, navigation items — and constructs a map of the flows that exist in your application. This map is built automatically from your live app, not from code you wrote. On subsequent runs, Opslane re-exercises the same flows and compares the results against the baseline captured from your main branch. If a flow behaves differently — a button that no longer appears, a form that returns an error, a page that fails to load — Opslane records it as a regression.What kinds of regressions does Opslane catch?
What kinds of regressions does Opslane catch?
Opslane detects functional regressions: flows that worked before the PR and no longer work after it. This includes broken navigation, failed form submissions, missing UI elements, JavaScript errors that prevent interaction, and pages that return errors or fail to render.
Does Opslane test every possible user path?
Does Opslane test every possible user path?
Opslane focuses on critical flows — the paths a user is most likely to take through your app. The crawler prioritizes depth over breadth, exercising complete flows rather than clicking every link. As Opslane learns your app over multiple runs, its understanding of your flows improves.
What about authenticated flows?
What about authenticated flows?
Opslane supports testing flows that require authentication. You can provide test credentials in the Opslane dashboard and configure which flows should run with those credentials. The credentials are stored encrypted and are only used inside the ephemeral sandbox.
Ephemeral sandboxes and your code
The sandbox that Opslane uses is created fresh for each run and deleted immediately after. Opslane never stores or retains your application source code. The browser session interacts with your deployed app over the network, exactly as an end user would. Nothing from your codebase is copied into the sandbox.Phase 3: Ship — results posted to the PR
After the browser session completes, Opslane processes the results and posts a comment on the pull request. The comment includes:- Pass/fail status for each flow that was tested
- Screenshots taken at key steps during the session, so you can see exactly what the browser saw
- A video recording of the full browser run, letting you replay the session and identify where a regression occurred
- If all flows pass, the check is marked successful and the PR can be merged normally.
- If a regression is detected, the check is marked failing, which blocks the merge automatically through GitHub’s branch protection rules.
Pipeline summary
Next steps
Quickstart
Connect your first repository and run your first PR test in two minutes.
Introduction
Learn how Opslane compares to writing tests with Playwright or Cypress.