GitHub Actions browser testing
Run Monito browser tests from GitHub Actions with OIDC, wait for the verdict, and link failed checks to browser evidence on your pull request.
CI/CD · Checked 2026-10-23
Use a project-scoped OIDC binding to run your saved browser tests on pull requests and pushes. The generated workflow waits for results and publishes them in GitHub.
How it works
- A pull request, push to the default branch or manual dispatch starts the bound workflow. GitHub issues a short-lived OIDC token.
- The CLI launches your project's saved scenarios in Monito's browser and waits for their results.
- The verdict appears in the job summary and Monito check, with links to evidence. A failure creates or updates a PR comment; a later pass updates that existing comment.
Set it up
Pro or Team. Creating this integration requires an active plan; browser runs use your Monito credits. Plan details
- Create a Monito project and save the scenarios you want to run. Sign in with monito auth login and gh auth login.
- Run monito ci plan --execution blocking --auth oidc --project project_123 --json with your project ID. Review the workflow and trust binding before applying them.
- Run monito ci apply --execution blocking --auth oidc --project project_123 --yes to write the workflow and register its binding. Copying YAML alone does not establish trust.
- Commit the generated workflow through your usual review process. Run monito ci verify --execution blocking --auth oidc --project project_123 --remote-auth --json to verify authentication without running tests or spending credits.
# Generated by Monito CLI
# Project: project_123
name: Monito QA
run-name: Monito QA ${{ inputs.verification_id || github.sha }}
on:
workflow_dispatch:
inputs:
auth_check:
description: Verify the Monito credential without running tests
required: false
type: boolean
default: false
verification_id:
description: Correlates an automated credential check
required: false
type: string
pull_request:
push:
branches:
- "main"
permissions:
checks: write
pull-requests: write
contents: read
id-token: write
jobs:
monito:
if: >-
(github.event_name != 'pull_request' ||
github.event.pull_request.head.repo.full_name == github.repository)
runs-on: ubuntu-latest
timeout-minutes: 15
env:
GITHUB_TOKEN: ${{ github.token }}
MONITO_GITHUB_OIDC: "1"
MONITO_PROJECT_ID: "project_123"
PROJECT_ID: "project_123"
steps:
- uses: actions/setup-node@v6
with:
node-version: 24
- name: Verify Monito credential
if: ${{ inputs.auth_check }}
run: npx -y @monitodev/cli@4 auth status --json
- name: Run Monito project
if: ${{ !inputs.auth_check }}
run: npx -y @monitodev/cli@4 project run "$PROJECT_ID" --wait --github-summary --github-check --github-comment
The exact CLI-generated OIDC workflow in the CI guide, for project_123 and default branch main. Generate it for your own project to register the matching binding.
Example result
Example result: field names from the CLI, values illustrative
Selected fields from project run --wait --json. Each runs entry has its own id, status and sessionId. Add --json to read the full result. Open /session/<sessionId> on Monito, or follow the run report from the dashboard or GitHub summary to inspect browser evidence.
{
"runs": [
{
"id": "run_example",
"scenarioId": "scenario_example",
"status": "failed",
"sessionId": "session_example"
}
]
}Limits to account for
OIDC permits CI status and run operations only for the bound project, including runs against its environments or a base-URL override. Saved logins remain bound to approved origins.
Pull request runs use the workflow from the pull request. Anyone who can push a branch to your repository can use that project access and spend its credits. The generated workflow skips fork pull requests. Keep GitHub's Send write tokens to workflows from pull requests setting off for a bound private or internal repository.
The workflow checks saved scenarios against their configured environment. It does not deploy your branch. Use the deployment_status setup when you need to wait for a preview URL.
The CLI exits 1 for a failed or errored scenario. A GitHub check can be neutral when only Monito-caused errors remain, or when collection stops early. GitHub reporting errors warn without changing the CLI exit code.
Comparable benchmark runs
Our team published these runs in the reliability benchmark. They show comparable browser journeys, not executions of the configuration or illustrative result above. Run your own scenario before relying on this integration.