{"id":46649303,"url":"https://github.com/winify/webdriverio-execute","last_synced_at":"2026-04-03T00:01:59.776Z","repository":{"id":340439207,"uuid":"1166047203","full_name":"Winify/webdriverio-execute","owner":"Winify","description":"Interactive browser and app CLI for developers using WebdriverIO","archived":false,"fork":false,"pushed_at":"2026-04-01T18:03:04.000Z","size":353,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-02T05:09:05.511Z","etag":null,"topics":["appium","automation","cli","webdriverio"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/webdriverio-execute","language":"TypeScript","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/Winify.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-24T20:28:51.000Z","updated_at":"2026-04-01T18:03:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Winify/webdriverio-execute","commit_stats":null,"previous_names":["winify/webdriverio-execute"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Winify/webdriverio-execute","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Winify%2Fwebdriverio-execute","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Winify%2Fwebdriverio-execute/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Winify%2Fwebdriverio-execute/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Winify%2Fwebdriverio-execute/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Winify","download_url":"https://codeload.github.com/Winify/webdriverio-execute/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Winify%2Fwebdriverio-execute/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31319743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T23:57:25.032Z","status":"ssl_error","status_checked_at":"2026-04-02T23:57:06.281Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["appium","automation","cli","webdriverio"],"created_at":"2026-03-08T05:38:36.364Z","updated_at":"2026-04-03T00:01:59.769Z","avatar_url":"https://github.com/Winify.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wdiox — WebdriverIO Execute\n\nInteractive browser and app CLI for developers, powered by [WebdriverIO](https://webdriver.io).\n\n```\nnpm install -g webdriverio-execute\n```\n\n## How it works\n\nEach command is stateless. Sessions are stored as JSON in `.wdiox/` in the current working directory (add `.wdiox/` to your `.gitignore`). Commands attach to an existing session by reading that file — no daemon, no background process.\n\n`snapshot` captures all interactable elements and assigns short refs (`e1`, `e2`, …). Subsequent commands use those refs to act on elements.\n\nEvery action command appends a step to `\u003csession\u003e.steps.json`. On `close`, the steps file is renamed to `\u003csession\u003e-\u003cYYYYMMDDHHmmss\u003e.steps.json` and preserved on disk.\n\n## Commands\n\n### `open` / `new` / `start`\n\nOpen a browser or Appium session.\n\n```bash\nwdiox open https://example.com\nwdiox open https://example.com --browser firefox\nwdiox open --app /path/to/app.apk --device \"emulator-5554\"\nwdiox open --app /path/to/app.ipa --device \"iPhone 15\"\n\n# Attach to an already-running Chrome instance (via CDP)\nwdiox open --attach\nwdiox open --attach --debug-port 9333 --debug-host 127.0.0.1\n\n# Attach to an already-running mobile app (Appium)\nwdiox open --attach --device \"emulator-5554\" --platform android\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `--browser` | `chrome` | Browser to use (`chrome`, `firefox`, `edge`, `safari`) |\n| `--app` | — | Path to mobile app (`.apk`, `.ipa`, `.app`) |\n| `--device` | `emulator-5554` | Device name |\n| `--platform` | auto-detected | `android` or `ios` |\n| `--hostname` | `localhost` | WebDriver/Appium server hostname |\n| `--port` | `4723` (mobile) / `4444` (browser) | Server port |\n| `--grant-permissions` | `true` | Auto-grant app permissions (Appium) |\n| `--accept-alert` | `true` | Auto-accept native alerts (Appium) |\n| `--auto-dismiss` | `false` | Auto-dismiss native alerts (Appium) |\n| `--attach` | `false` | Attach to an already-running browser or app instead of launching a new one |\n| `--debug-port` | `9222` | Chrome remote debugging port (used with `--attach`) |\n| `--debug-host` | `localhost` | Chrome remote debugging host (used with `--attach`) |\n| `--session` | `default` | Session name |\n\nIf a session with the given name is already active, you'll be prompted to close it first.\n\n---\n\n### `snapshot`\n\nCapture interactable elements on the current page or screen and assign numbered refs.\n\n```bash\nwdiox snapshot\nwdiox snapshot --no-visible   # include off-screen elements\n```\n\n```\n Page: https://example.com/login\n\ne1    input[email]  \"Email address\"  #email\ne2    input[password]  \"Password\"  #password\ne3    button  \"Sign in\"  button*=Sign in\n\n 3 elements - default session\n```\n\n---\n\n### `click`\n\nClick an element by ref.\n\n```bash\nwdiox click e3\n```\n\n---\n\n### `fill` / `type`\n\nClear and type into an input by ref.\n\n```bash\nwdiox fill e1 \"hello@example.com\"\nwdiox type e2 \"mysecretpassword\"\n```\n\n---\n\n### `screenshot`\n\nSave a screenshot.\n\n```bash\nwdiox screenshot\nwdiox screenshot /tmp/login-page.png\n```\n\n---\n\n### `navigate` / `goto`\n\nNavigate to a URL within the active session.\n\n```bash\nwdiox navigate https://example.com/login\nwdiox goto https://example.com/login\n```\n\n---\n\n### `scroll` / `swipe`\n\nScroll the page (browser) or swipe (mobile).\n\n```bash\nwdiox scroll down\nwdiox scroll up --pixels 1000\nwdiox swipe left --duration 300 --percent 0.9\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `--pixels` | `500` | Pixels to scroll (browser only) |\n| `--duration` | `500` | Swipe duration in ms (mobile only) |\n| `--percent` | `0.5` (vertical) / `0.95` (horizontal) | Screen percentage to swipe, `0`–`1` (mobile only) |\n\n\u003e Browser: `up`/`down` only. For horizontal scroll use `execute`.\n\n---\n\n### `execute`\n\nExecute JavaScript in the browser, or run a mobile command via Appium.\n\n```bash\nwdiox execute \"return document.title\"\nwdiox execute \"return arguments[0].textContent\" --args '[\"#main\"]'\nwdiox execute \"mobile: pressKey\" --args '{\"keycode\": 4}'\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `--args` | — | JSON-encoded arguments (array or single value) |\n\nString args that match a valid CSS selector are automatically resolved to DOM elements before the script runs.\n\n---\n\n### `steps` / `record`\n\nDisplay recorded steps for the active session or list archived step files.\n\n```bash\nwdiox steps                       # active session steps\nwdiox steps --json                # raw JSON output\nwdiox steps --list                # list all archived step files\nwdiox steps --file .wdiox/\u003csession\u003e-20240101120000.steps.json\n```\n\n| Option | Default | Description |\n|---|---|---|\n| `--json` | `false` | Output raw JSON |\n| `--list` | `false` | List all archived steps files |\n| `--file` | — | Display a specific archived steps file by path |\n\n---\n\n### `close` / `stop`\n\nClose the current session.\n\n```bash\nwdiox close\nwdiox close --session myapp\n```\n\n---\n\n### `ls` / `session-list`\n\nList all active sessions.\n\n```bash\nwdiox ls\n```\n\n```\nNAME     BROWSER   URL                       STATUS\ndefault  chrome    https://example.com       active\nmyapp    Android   /path/to/app.apk          active\n```\n\n---\n\n## Multi-session\n\nEvery command accepts `--session \u003cname\u003e` (or `-s \u003cname\u003e`) to target a specific session. The `WDIO_SESSION` environment variable sets the default session name.\n\n```bash\nwdiox open https://site-a.com --session a\nwdiox open https://site-b.com --session b\nwdiox snapshot --session a\nwdiox click e1 --session a\nwdiox close --session b\n```\n\n## Typical browser workflow\n\n```bash\nwdiox open https://example.com\nwdiox snapshot\nwdiox fill e1 \"user@example.com\"\nwdiox fill e2 \"password\"\nwdiox click e3\nwdiox navigate https://example.com/dashboard\nwdiox scroll down\nwdiox screenshot\nwdiox steps\nwdiox close\n```\n\n## Typical mobile workflow\n\n```bash\nwdiox open --app ./app.apk --device \"emulator-5554\"\nwdiox snapshot\nwdiox click e1\nwdiox fill e2 \"hello\"\nwdiox close\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinify%2Fwebdriverio-execute","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwinify%2Fwebdriverio-execute","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinify%2Fwebdriverio-execute/lists"}