# arce-appium-driver

> Experimental driver for appium.

Latest version **0.1.0** (published 2022-11-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install arce-appium-driver
pnpm add arce-appium-driver
yarn add arce-appium-driver
bun add arce-appium-driver
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2022-11-07 |
| First published | 2022-10-25 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 39.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Andreas Schoch |
| Maintainers | galvandi |
| Keywords | appium, webdriver, arce, webview, e2e |

## Links

- npm: https://www.npmjs.com/package/arce-appium-driver
- Repository: https://github.com/andreas-schoch/arce-appium-driver
- Homepage: https://github.com/andreas-schoch/arce-appium-driver#readme
- Issues: https://github.com/andreas-schoch/arce-appium-driver/issues
- npm.io page: https://npm.io/package/arce-appium-driver

## Dependencies (3)

- [arce](https://npm.io/package/arce.md) ^0.4.2
- [xpath-to-css](https://npm.io/package/xpath-to-css.md) ^1.1.0
- [appium-support](https://npm.io/package/appium-support.md) ^2.55.0

## Alternatives

- [@snazzah/davey](https://npm.io/package/@snazzah/davey.md) — 1.5M weekly downloads
- [@vendure/testing](https://npm.io/package/@vendure/testing.md) — 8.3K weekly downloads
- [vue-simple-context-menu](https://npm.io/package/vue-simple-context-menu.md) — 6.6K weekly downloads
- [cypress-webpack-preprocessor-v5](https://npm.io/package/cypress-webpack-preprocessor-v5.md) — 2.1K weekly downloads
- [@backstage/plugin-catalog-backend-module-puppetdb](https://npm.io/package/@backstage/plugin-catalog-backend-module-puppetdb.md) — 1.3K weekly downloads

## Recent versions

- 0.1.0 (latest) — 2022-11-07
- 0.0.8 — 2022-11-06
- 0.0.1 — 2022-10-25

## README

ARCE Appium Driver
=======================

Work-in-Progress...

An experimental "browser-agnostic" appium driver.

In most scenarios you should probably use another driver. This is more of a "last resort" solution.

_(TODO explain use-cases in a bit more detail.)_

## Usage

To use this driver, Appium v2 needs to be installed first.

   ````shell
   npm install -g appium@next
   ````

Make this driver available for automation:

  ````shell
  # npm release
  appium driver install --source=npm arce-appium-driver
  # github repository
  appium driver install --source=github andreas-schoch/arce-appium-driver
  # local repository
  appium driver install --source=local /path/to/git-repos/arce-appium-driver
  ````

And start the appium server:

  ````shell
  appium server
  ````

Then within your appium client of choice, use the following capabilities:

| Capability Name | Description                                                                                  |
|-----------------|----------------------------------------------------------------------------------------------|
| automationName  | Must be set to `ARCE`.                                                                       |
| arce:sslCert    | Path to ssl cert. E.g. `./example.crt` (Only if you want ArceServer proxy to run via https). |
| arce:sslKey     | Path to ssl key. E.g. `./example.key` (Only if you want ArceServer proxy to run via https).  |
| arce:port       | Which port the ArceServer proxy should use (default: `12000`)                                |

## TODO

- **Find**:
    - [x] `driver.findElement()` by: `id`, `class`, `css selector`, `xpath`, `automationId`
    - [x] `driver.findElements()` by: `id`, `class`, `css selector`, `xpath`, `automationId`
    - [x] `element.findElement()` by: `id`, `class`, `css selector`, `xpath`, `automationId`
    - [x] `element.findElements()` by: `id`, `class`, `css selector`, `xpath`, `automationId`
- **Element**:
    - [x] `driver.getActiveElement()`
    - [x] `element.active()`
    - [x] `element.getAttribute()`
    - [x] `element.getProperty()`
    - [x] `element.getCssProperty()`
    - [x] `element.click()`
    - [x] `element.clear()`
    - [x] `element.setValue()`
    - [x] `element.setValueImmediate()`
    - [x] `element.elementSelected()`
    - [x] `element.getText()`
    - [x] `element.getName()`
    - [x] `element.getElementRect()`
    - [x] `element.elementEnabled()`
    - [x] `element.elementDisplayed()`
- **Execute**:
    - [x] `execute()` _(expected to be a valid arce command script for now)_
    - [x] `executeAsync()` _(expected to be a valid arce command script for now)_
- **Navigate**:
    - [x] `setUrl`
    - [x] `getUrl`
    - [x] `back`
    - [x] `forward`
    - [x] `refresh`
- **Cookies**:
    - [ ] `getCookies()`
    - [ ] `getCookie()`
    - [ ] `setCookie()`
    - [ ] `deleteCookie()`
    - [ ] `deleteCookies()`
- **Window** _(The strike-through commands can likely only be supported to a limited extent, or not at all, via ARCE)_:
    - [ ] `getWindowRect()`
    - [ ] ~~`setWindow()`~~
    - [ ] ~~`createNewWindow()`~~
    - [ ] ~~`closeWindow()`~~
    - [ ] ~~`setWindowRect()`~~
    - [ ] ~~`maximizeWindow()`~~
    - [ ] ~~`minimizeWindow()`~~
    - [ ] ~~`fullScreenWindow()`~~
    - [ ] ~~`getWindowHandle()`~~
- **Action** _(A lot of the possible actions chains cannot be fully supported via ARCE.)_:
    - [ ] performActions()
    - [ ] releaseActions()
- **Screenshot**:
    - [ ] `element.getElementScreenshot()` _(Can maybe be supported via `html2canvas` npm package or `getUserMedia`
      API)_
    - [ ] `driver.getScreenshot()`
- **Timeout** _(Not sure yet which ones are useful or expected to be implemented)_:
    - [ ] `driver.setNewCommandTimeout()`
    - [ ] `driver.implicitWait()`
    - [ ] `driver.setImplicitWait()`
    - [ ] `driver.implicitWaitForCondition()`
    - [ ] `driver.getTimeouts()`
    - [ ] `driver.implicitWaitW3C()`
    - [ ] `driver.pageLoadTimeoutW3C()`
    - [ ] `driver.scriptTimeoutW3C()`
    - [ ] `driver.newCommandTimeout()`
    - [ ] `driver.parseTimeoutArgument()`

  (List incomplete. A few misc commands omitted)

## License

MIT

---
_Source: https://npm.io/package/arce-appium-driver · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
