{"id":19055903,"url":"https://github.com/schemathesis/action","last_synced_at":"2026-03-11T12:25:32.759Z","repository":{"id":56866887,"uuid":"487813476","full_name":"schemathesis/action","owner":"schemathesis","description":"GitHub Action that runs Schemathesis tests","archived":false,"fork":false,"pushed_at":"2025-03-09T20:33:56.000Z","size":31,"stargazers_count":11,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-18T12:19:19.906Z","etag":null,"topics":["actions","api-testing","github-actions","testing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schemathesis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"Stranger6667"}},"created_at":"2022-05-02T11:07:42.000Z","updated_at":"2025-03-09T20:33:59.000Z","dependencies_parsed_at":"2023-01-11T17:23:20.671Z","dependency_job_id":"cce46718-1100-4a53-a2f5-df4f0d4b9e41","html_url":"https://github.com/schemathesis/action","commit_stats":{"total_commits":16,"total_committers":1,"mean_commits":16.0,"dds":0.0,"last_synced_commit":"52a20d9c66acbaa99dc774484eb20855f5d294a8"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schemathesis%2Faction","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schemathesis%2Faction/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schemathesis%2Faction/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schemathesis%2Faction/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schemathesis","download_url":"https://codeload.github.com/schemathesis/action/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250563281,"owners_count":21450812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","api-testing","github-actions","testing"],"created_at":"2024-11-08T23:47:23.056Z","updated_at":"2026-03-11T12:25:32.748Z","avatar_url":"https://github.com/schemathesis.png","language":"Python","funding_links":["https://github.com/sponsors/Stranger6667"],"categories":[],"sub_categories":[],"readme":"# Schemathesis GitHub Action\n\nGitHub Action for running [Schemathesis](https://github.com/schemathesis/schemathesis) property-based API tests against OpenAPI and GraphQL schemas.\n\n```yaml\n- uses: schemathesis/action@v3\n  with:\n    # API schema location\n    schema: 'https://example.schemathesis.io/openapi.json'\n```\n\n## Configuration\n\n```yaml\n- uses: schemathesis/action@v3\n  with:\n    # API schema location (URL or file path)\n    schema: 'https://example.schemathesis.io/openapi.json'\n    # Override base URL\n    base-url: 'https://example.schemathesis.io/v2/'\n    # Validation checks to run (default: all)\n    checks: 'not_a_server_error'\n    # Schema availability timeout in seconds\n    wait-for-schema: '30'\n    # Test cases per API operation\n    max-examples: 50\n    # Schemathesis version (default: latest)\n    version: 'latest'\n    # Python module path for hooks\n    hooks: 'tests.hooks'\n    # Path to a `schemathesis.toml` configuration file\n    config-file: 'tests/schemathesis-config.yaml'\n    # Authorization header value\n    authorization: 'Bearer ${{ secrets.API_TOKEN }}'\n    # Additional CLI arguments\n    args: '--report-junit-path=/tmp/junit.xml'\n    # Schema coverage (default: true)\n    coverage: 'true'\n    coverage-report: 'true'\n    coverage-report-path: 'schema-coverage.html'\n    coverage-artifact-name: 'schema-coverage-report'\n    coverage-pr-comment: 'true'\n    # Write coverage summary to the workflow step summary\n    # set to false when using the action multiple times in one job\n    coverage-step-summary: 'true'\n```\n\nTo authenticate requests:\n\n```yaml\n- name: Run with authentication\n  uses: schemathesis/action@v3\n  with:\n    schema: 'http://example.com/api/openapi.json'\n    authorization: 'Bearer ${{ secrets.API_TOKEN }}'\n```\n\nFor other schemes (Basic, custom):\n\n```yaml\n    authorization: 'Basic ${{ secrets.ENCODED_CREDENTIALS }}'\n```\n\nFor additional options, see the [Schemathesis CLI reference](https://schemathesis.readthedocs.io/en/stable/reference/cli/).\n\n## Coverage reports\n\nSchema coverage is powered by [tracecov](https://docs.tracecov.sh) and enabled by default. Each run generates:\n- A summary in the Actions step summary\n- An HTML report uploaded as a workflow artifact (default name: `schema-coverage-report`)\n- A PR comment with the coverage summary (pull requests only)\n\n\u003cimg width=\"2236\" height=\"1894\" alt=\"report-demo\" src=\"https://github.com/user-attachments/assets/85c4f138-64f0-434a-938f-e156115853c0\" /\u003e\n\nCoverage reports are generated even when schemathesis finds failures.\n\nPR comments require `pull-requests: write` in your workflow:\n\n```yaml\njobs:\n  test:\n    permissions:\n      pull-requests: write\n    steps:\n      - uses: schemathesis/action@v3\n        with:\n          schema: 'http://example.com/api/openapi.json'\n```\n\nIf you run the action more than once in a single workflow, set distinct artifact names to avoid conflicts:\n\n```yaml\n- uses: schemathesis/action@v3\n  with:\n    schema: 'http://example.com/api/v1/openapi.json'\n    coverage-artifact-name: 'coverage-v1'\n\n- uses: schemathesis/action@v3\n  with:\n    schema: 'http://example.com/api/v2/openapi.json'\n    coverage-artifact-name: 'coverage-v2'\n```\n\nTo disable coverage entirely:\n\n```yaml\n    coverage: 'false'\n```\n\n## Resources\n\n- [Documentation](https://schemathesis.readthedocs.io/en/stable/)\n- [CLI Reference](https://schemathesis.readthedocs.io/en/stable/reference/cli/)\n- [GitHub Issues](https://github.com/schemathesis/schemathesis/issues)\n- [Discord](https://discord.gg/R9ASRAmHnA)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschemathesis%2Faction","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschemathesis%2Faction","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschemathesis%2Faction/lists"}