A GitHub Action for running Revyl tests with real-time monitoring and report generation.
- CLI-first execution using
revyl-cli - Real-time monitoring using Server-Sent Events (SSE) instead of polling
- Automatic report link generation from test completion events
- Progress tracking with detailed step and phase information
- Configurable timeouts and monitoring intervals
- Support for both tests and workflows
- name: Run Revyl Test
uses: ./actions/run-test
with:
test-id: 'your-test-id'
timeout: '1800' # 30 minutes
env:
REVYL_API_KEY: ${{ secrets.REVYL_API_KEY }}- name: Run Revyl Workflow
uses: ./actions/run-test
with:
workflow-id: 'your-workflow-id'
timeout: '3600' # 1 hour
env:
REVYL_API_KEY: ${{ secrets.REVYL_API_KEY }}- name: Upload Build
id: upload-build
uses: ./actions/upload-build
with:
app-id: 'your-revyl-app-id'
version: '${{ github.sha }}'
file-path: 'path/to/your/build.apk'
env:
REVYL_API_KEY: ${{ secrets.REVYL_API_KEY }}
- name: Run Test with New Build
uses: ./actions/run-test
with:
test-id: 'your-test-id'
build-id: ${{ steps.upload-build.outputs.build-id }}
timeout: '1800'
env:
REVYL_API_KEY: ${{ secrets.REVYL_API_KEY }}Launch tests without waiting for completion. The action succeeds immediately after the test is queued, only failing if there was an error starting the execution.
- name: Launch Revyl Test (No-Wait)
uses: ./actions/run-test
with:
test-id: 'your-test-id'
no-wait: 'true'
env:
REVYL_API_KEY: ${{ secrets.REVYL_API_KEY }}- name: Run Revyl Test with Custom Settings
uses: ./actions/run-test
with:
test-id: 'your-test-id'
retries: '2'
build-id: 'specific-build-id'
cli-version: 'v0.1.5'
timeout: '2400' # 40 minutes
env:
REVYL_API_KEY: ${{ secrets.REVYL_API_KEY }}| Input | Description | Required | Default |
|---|---|---|---|
test-id |
ID of the test to run | No* | |
workflow-id |
ID of the workflow to run (preferred) | No* | |
workflow_id |
Deprecated alias for workflow-id |
No | |
retries |
Number of retries for failed tests | No | 1 |
build-id |
Build ID to use (preferred over deprecated build-version-id) |
No | |
build-version-id |
Deprecated alias for build-id |
No | |
timeout |
Maximum time to wait (seconds) | No | 3600 |
no-wait |
Launch and exit immediately without waiting for completion | No | false |
cli-version |
Revyl CLI version used by action runtime | No | latest |
*Either test-id, workflow-id (preferred), or workflow_id (deprecated alias) must be provided, but not both test and workflow IDs.
| Output | Description |
|---|---|
task_id |
Unique task ID for the execution |
success |
Whether the test/workflow completed successfully (true/false) |
execution_time |
Total execution time in HH:MM:SS format |
platform |
Platform the test ran on (web/ios/android) |
error_message |
Error message if execution failed |
report_link |
Shareable link to the detailed test execution report |
total_steps |
Total number of steps in the test (test executions only) |
completed_steps |
Number of steps completed in the test (test executions only) |
total_tests |
Total number of tests in the workflow (workflow executions only) |
completed_tests |
Number of tests completed in the workflow (workflow executions only) |
passed_tests |
Number of tests that passed in the workflow (workflow executions only) |
failed_tests |
Number of tests that failed in the workflow (workflow executions only) |
This action uses Server-Sent Events (SSE) for real-time monitoring instead of traditional polling. This provides:
- Instant updates when test status changes
- Lower server load compared to polling
- Detailed progress information including current steps and phases
- Automatic report link extraction when tests complete
SSE connection established
SSE connected for org: org_123456
Test started: Login Flow Test
Status: running | Phase: executing | Current Step: "Navigate to login page" | Step Progress: 1/5 | Progress: 20%
Status: running | Phase: executing | Current Step: "Enter credentials" | Step Progress: 2/5 | Progress: 40%
Status: running | Phase: executing | Current Step: "Click login button" | Step Progress: 3/5 | Progress: 60%
Status: running | Phase: executing | Current Step: "Verify dashboard" | Step Progress: 4/5 | Progress: 80%
Status: running | Phase: executing | Current Step: "Logout" | Step Progress: 5/5 | Progress: 100%
✅ Test completed successfully: Login Flow Test
📊 Report available at: https://backend-staging.revyl.ai/tests/test_123/history/hist_456
The action handles various error scenarios:
- Connection failures: Automatic SSE reconnection
- Timeouts: Configurable timeout with graceful termination
- Test failures: Detailed error messages and report links
- API errors: Clear error reporting with HTTP status codes
| Variable | Description | Required |
|---|---|---|
REVYL_API_KEY |
Revyl API authentication key | Yes |
Get your API key from the Revyl dashboard settings.
name: Run Revyl Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Login Test
id: login-test
uses: ./actions/run-test
with:
test-id: 'login-flow-test'
timeout: '1200'
env:
REVYL_API_KEY: ${{ secrets.REVYL_API_KEY }}
- name: Check Test Results
run: |
echo "Test completed: ${{ steps.login-test.outputs.success }}"
echo "Execution time: ${{ steps.login-test.outputs.execution_time }}"
echo "Platform: ${{ steps.login-test.outputs.platform }}"
echo "Report: ${{ steps.login-test.outputs.report_link }}"
if [ "${{ steps.login-test.outputs.success }}" != "true" ]; then
echo "Test failed: ${{ steps.login-test.outputs.error_message }}"
exit 1
fi
- name: Post Report Link
if: always()
run: |
if [ -n "${{ steps.login-test.outputs.report_link }}" ]; then
echo "📊 View detailed test report: ${{ steps.login-test.outputs.report_link }}"
fi- NEW: Real-time monitoring via Server-Sent Events
- NEW: Automatic report link extraction and output
- NEW: Enhanced progress tracking with phases and steps
- IMPROVED: Better error handling and timeout management
- IMPROVED: More detailed logging and status updates
- Basic polling-based test execution
- Simple status checking
- Basic timeout handling