| issue-number | Specific issue number(s) to test, comma-separated (e.g., "123" or "123, 456, 789"). Bypasses filter and auto-detection. | no | — |
| issue-filter | Filter query for dynamic issue selection (e.g., "state:open stale:30d unassigned"). See README for syntax. | no | — |
| max-issues | Maximum issues to process when using filter mode (default: 10) | no | 10 |
| test-url | Manual test URL (overrides AI-detected URL from issue) | no | — |
| api-key | Runhuman API key (starts with qa_live_). Store as secret! | yes | — |
| github-token | GitHub token for API access (defaults to GITHUB_TOKEN) | no | ${{ github.token }} |
| api-url | Runhuman API base URL | no | https://runhuman.com |
| qa-label | Label that marks issues for QA testing | no | qa-test |
| auto-detect | Use AI to detect testable issues without qa-label (labeled issues are always tested) | no | true |
| target-duration-minutes | Target test duration in minutes (1-60) | no | 5 |
| on-not-testable | Actions when issue is not testable. DSL: close, open, add-label:x, remove-label:x, comment | no | "" |
| on-success | Actions when test passes. DSL: close, open, add-label:x, remove-label:x, comment | no | "" |
| on-failure | Actions when test fails. DSL: close, open, add-label:x, remove-label:x, comment | no | "" |
| issue-pattern | Custom regex pattern to detect issue numbers in commit messages (must have a capture group for the issue number) | no | — |
| test-merges | Test merge commits that have no linked issues (requires test-url) | no | true |
| auto-mode-only-missing-media | Only test issues missing reproduction media (screenshots/videos). AI analyzes issue + comments. | no | false |
| screen-size | Screen size for testing. Use preset (desktop, laptop, tablet, mobile) or custom JSON {"width": 1920, "height": 1080} | no | desktop |