https://github.com/emulator-wtf/actions
emulator.wtf GitHub actions for running Android tests and using Android emulators.
https://github.com/emulator-wtf/actions
android emulator-farm testing
Last synced: about 1 month ago
JSON representation
emulator.wtf GitHub actions for running Android tests and using Android emulators.
- Host: GitHub
- URL: https://github.com/emulator-wtf/actions
- Owner: emulator-wtf
- License: mit
- Created: 2025-11-13T14:05:18.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2026-05-21T17:37:47.000Z (about 1 month ago)
- Last Synced: 2026-05-22T02:32:46.916Z (about 1 month ago)
- Topics: android, emulator-farm, testing
- Language: TypeScript
- Homepage: https://emulator.wtf
- Size: 1.21 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# emulator.wtf GitHub Actions
[Emulator.wtf](https://emulator.wtf) is an Android cloud emulator laser-focused
on performance to deliver quick feedback to your PRs.
Use these GitHub Actions to run your Android instrumentation tests or make use
of our emulators directly via an ADB connection.
## `emulator-wtf/actions/run-tests`
Run your instrumentation tests with emulator.wtf, optionally with multiple
shards. Build-system agnostic, only APKs are needed.
### Quick usage
A really basic example building an app apk, test apk, running tests and then
finally collecting the results with the `mikepenz/action-junit-report@v6`
action:
```yaml
name: Run tests
on: push
jobs:
run-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: '25'
- name: Build app
run: ./gradlew assembleDebug assembleAndroidTest
- name: Run tests
uses: emulator-wtf/actions/run-tests@v1.0.0
with:
api-token: ${{ secrets.EW_API_TOKEN }}
app: app/build/outputs/apk/debug/app-debug.apk
test: app/build/outputs/apk/androidTest/app-debug-androidTest.apk
outputs-dir: build/test-results
- name: Publish test report
uses: mikepenz/action-junit-report@v6
if: always() # always run even if the tests fail
with:
report_paths: 'build/test-results/**/*.xml'
```
See the full list of inputs and additional examples in
[run-tests/README.md](run-tests/README.md).
## `emulator-wtf/actions/use-emulator`
### Quick usage
An example of using `use-emulator` to start three emulators in parallel:
```yaml
name: Test use-emulator
on:
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: emulator-wtf/actions/use-emulator@v1.0.0
id: ew-cli
with:
devices: |
model=Pixel2,version=33,gpu=auto
model=Pixel2,version=33,gpu=auto
model=Pixel2,version=33,gpu=auto
- name: Make use of emulators
env:
ADB_ATTACHED: ${{ steps.ew-cli.outputs.adb_attached }}
ADB_ATTACHED_JSON: ${{ steps.ew-cli.outputs.adb_attached_json }}
ADB_PORT_FORWARDED: ${{ steps.ew-cli.outputs.adb_port_forwarded }}
ADB_PORT_FORWARDED_JSON: ${{ steps.ew-cli.outputs.adb_port_forwarded_json }}
run: |
echo "Attached ${ADB_ATTACHED}"
echo "Attached json ${ADB_ATTACHED_JSON}"
echo "Forwarded ${ADB_PORT_FORWARDED}"
echo "Forwarded json ${ADB_PORT_FORWARDED_JSON}"
```
See the full list of inputs and additional examples in
[use-emulator/README.md](use-emulator/README.md).
## `emulator-wtf/actions/configure-credentials`
With this action you can use emulator.wtf in your GitHub Actions workflows
without having to explicitly specify an API token. The action relies on
[GitHub OIDC tokens](https://docs.github.com/en/actions/concepts/security/openid-connect)
to authenticate with emulator.wtf and obtain temporary credentials.
### Quick usage
1. Create a new OIDC configuration in the
[emulator.wtf web app](https://emulator.wtf).
2. Add `id-token: write` permission to your workflow YAML. You'll most likely
want the `contents: read` permission too to check out your repository.
```yaml
permissions:
contents: read
id-token: write
```
3. Invoke the `emulator-wtf/actions/configure-credentials` action with the OIDC
configuration ID added in step 1.
```yaml
- uses: emulator-wtf/actions/configure-credentials@v1.0.0
with:
oidc-configuration-id: **OIDC-CONFIGURATION-ID-GOES-HERE**
```
4. Invoke `ew-cli`, emulator.wtf Gradle Plugin or any of the `emulator-wtf/*`
GitHub actions without having to pass in an API token.
See the full list of inputs and additional examples in
[configure-credentials/README.md](configure-credentials/README.md).
Read more about [OIDC in emulator.wtf](https://docs.emulator.wtf/oidc).