{"id":31692524,"url":"https://github.com/vikindor/selenoid-github-action","last_synced_at":"2026-05-15T01:36:59.031Z","repository":{"id":317045411,"uuid":"1065809823","full_name":"Vikindor/selenoid-github-action","owner":"Vikindor","description":"GitHub Action to start Selenoid via Aerokube CM (localhost:4444)","archived":false,"fork":false,"pushed_at":"2025-09-28T13:49:59.000Z","size":4,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-28T14:35:24.670Z","etag":null,"topics":["aerokube","cm","github-actions","selenide","selenium","selenoid","testing","webdriver"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vikindor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-28T13:27:29.000Z","updated_at":"2025-09-28T13:50:02.000Z","dependencies_parsed_at":"2025-09-28T14:36:04.131Z","dependency_job_id":null,"html_url":"https://github.com/Vikindor/selenoid-github-action","commit_stats":null,"previous_names":["vikindor/selenoid-github-action"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Vikindor/selenoid-github-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikindor%2Fselenoid-github-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikindor%2Fselenoid-github-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikindor%2Fselenoid-github-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikindor%2Fselenoid-github-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vikindor","download_url":"https://codeload.github.com/Vikindor/selenoid-github-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikindor%2Fselenoid-github-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278963832,"owners_count":26076542,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["aerokube","cm","github-actions","selenide","selenium","selenoid","testing","webdriver"],"created_at":"2025-10-08T14:53:37.641Z","updated_at":"2026-05-15T01:36:59.021Z","avatar_url":"https://github.com/Vikindor.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\nSelenoid via Aerokube CM — GitHub Composite Action\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![license](https://img.shields.io/github/license/Vikindor/selenoid-github-action.svg)](https://github.com/Vikindor/selenoid-github-action/blob/main/LICENSE)\n[![release](https://img.shields.io/github/release/Vikindor/selenoid-github-action.svg)](https://github.com/Vikindor/selenoid-github-action/releases/latest)\n[![codeFactor](https://www.codefactor.io/repository/github/Vikindor/selenoid-github-action/badge)](https://www.codefactor.io/repository/github/Vikindor/selenoid-github-action)\n\n\u003c/div\u003e\n\nStart a local [Selenoid](https://aerokube.com/selenoid/) on GitHub-hosted runners using **Aerokube CM** easily — with sane defaults and optional parameters when needed.\n\n✨ **Defaults (no inputs):**\n  - Installs CM via the official installer (script method).\n  - Starts Selenoid with Chrome, pulling the latest available version and applying --force.\n  - Exposes the WebDriver hub URL as the remote output: http://localhost:4444/wd/hub.\n\n🧩 This is a **composite action** (pure YAML). No Node.js runtime or `node_modules` are required.\n\n---\n\n## Usage\n\n### Minimal\n```yaml\n- uses: vikindor/selenoid-github-action@v1\n\n- name: Run tests\n  run: ./gradlew clean test -Dselenide.remote=http://localhost:4444/wd/hub\n```\n\n### With output (optional)\n```yaml\n- id: selenoid\n  uses: vikindor/selenoid-github-action@v1\n\n- name: Run tests\n  run: ./gradlew test -Dselenide.remote=${{ steps.selenoid.outputs.remote }}\n```\n\n### Advanced (override defaults)\n```yaml\n- uses: vikindor/selenoid-github-action@v1\n  with:\n    browsers: \"chrome,firefox\"     # default: chrome\n    last-versions: \"2\"             # default: 1\n    force: \"true\"                  # default: true\n    install-method: \"direct\"       # default: script\n    cm-version: \"1.8.2\"            # default: (empty) -\u003e latest\n    extra-args: \"--vnc --args '-limit 2'\"\n```\n\n---\n\n## Inputs\n\n| Name | Required | Default | Description |\n|------|----------|---------|-------------|\n| `browsers` | no | `chrome` | Comma-separated list of browsers to pull (e.g. `chrome,firefox`). |\n| `last-versions` | no | `1` | How many latest versions to fetch per browser. |\n| `force` | no | `true` | If `true`, adds `--force` to CM command. |\n| `install-method` | no | `script` | `script` to use official installer (`curl … | bash`) or `direct` to download CM binary from GitHub Releases. |\n| `cm-version` | no | `` | Pin CM version when `install-method=direct` (e.g. `1.8.2`). Empty means latest. |\n| `extra-args` | no | `` | Extra args appended to `cm selenoid start` as-is. |\n\n## Outputs\n\n| Name | Value |\n|------|-------|\n| `remote` | `http://localhost:4444/wd/hub` |\n\n---\n\n## How it works\n\n1. **Install CM**\n   - `install-method: script` → download from https://aerokube.com/ (default)\n   - `install-method: direct` → download CM binary for the current CPU arch from GitHub Releases (optionally pinned with `cm-version`)\n2. **Start Selenoid** via CM with provided inputs\n3. **Expose remote URL** as an action output `remote`\n\n---\n\n## Example: full Java workflow (JDK + Selenide)\n```yaml\nname: CI\non: [push]\n\njobs:\n  tests:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v5\n\n      - uses: actions/setup-java@v5\n        with:\n          distribution: temurin\n          java-version: '21'\n\n      - uses: vikindor/selenoid-github-action@v1\n\n      - name: Run tests\n        run: ./gradlew clean test -Dselenide.remote=http://localhost:4444/wd/hub\n```\n\n---\n\n## Notes\n- This action does not manage Selenoid lifecycle after the job ends; containers will be stopped by the runner cleanup.\n- If you need video/VNC, pass `extra-args` (e.g. `--vnc`).\n- Works with any test runner that can point WebDriver to a remote hub URL.\n\n---\n\n## Gradle note: pass `-D` properties to the test JVM\nIf you pass settings via `-D…` in the workflow (e.g. `-Dselenide.remote=http://localhost:4444/wd/hub`), make sure the Gradle **Test** task forwards them to the test JVM. Otherwise JUnit tests won’t see those values and Selenide will use defaults.\n\n**Kotlin DSL (`build.gradle.kts`)**\n```kotlin\ntasks.test {\n    useJUnitPlatform()\n    // Forward ALL system properties (including -Dselenide.*) to the test JVM\n    systemProperties(\n        System.getProperties()\n            .entries\n            .associate { (k, v) -\u003e k.toString() to v }\n    )\n}\n```\n\n\u003e Tip: to forward only Selenide-related keys, use:\n```kotlin\nsystemProperties(\n    System.getProperties().stringPropertyNames()\n        .filter { it.startsWith(\"selenide.\") }\n        .associateWith { System.getProperty(it) }\n)\n```\n\n**Groovy DSL (`build.gradle`)**\n```groovy\ntest {\n    useJUnitPlatform()\n\tsystemProperties(System.getProperties())\n}\n```\n\nThis step is unnecessary if you set Selenide configuration directly in code instead of via `-D` flags.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvikindor%2Fselenoid-github-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvikindor%2Fselenoid-github-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvikindor%2Fselenoid-github-action/lists"}