Code Monkey home page Code Monkey logo

vscode-appium's Introduction

Appium Toolbox for VSCode

A set of tools for Appium servers

Features

  • Easily run local Appium servers
  • Monitor server status
  • Save and load server configurations
  • Good feels

Project Goals

The point of this project is to provide an interface to Appium for developers. Developers live in their IDEs, and VS Code is certainly a popular one. We want to make it as easy as possible for a developer to leverage Appium's automation capabilities--especially for the mobile web. I hear we all could stand to do a bit more testing in Safari iOS...

Requirements

Appium is bundled with this extension. However, its prerequisites are not. Please see Appium's getting started guide for more information.

Extension Settings

This extension contributes two sets of settings, which are described in detail via the UI:

  • appium.serverDefaults.*: Defaults to use when running a local Appium server.
  • appium.sessionDefaults.*: Defaults to use when creating saved sessions (.appiumserver files).

Known Issues

This extension should be considered an early alpha. It is not feature-complete, nor is it well-tested. It probably won't hose your filesystem, but we make no promises.

Roadmap

There's a lot to do, and a lot we could do. What's the most useful thing this extension doesn't do? Let's discuss.

  • Implement server configuration like Appium Inspector (including cloud vendors, etc.)
  • Provide an example .appiumserver file
  • Where it makes sense, provide commands for various Appium API endpoints.
  • Greater focus on mobile web. What can we do here?
  • Selenium Grid integration?
  • Greater control over server monitoring behavior
  • Interaction with the appium v2 CLI -- driver and plugin management
  • More more more

Anti-Roadmap

  • Appium Inspector provides a high level of interaction which we don't need to implement.
  • This isn't the place to make installing Appium's prerequisites easier, either.
  • Other IDEs could use Appium plugins! Xcode and Android Studio (Jetbrains) might make a lot of sense! But not here.

License

Authored by Christopher Hiller. Copyright 2021 Sauce Labs. Licensed Apache-2.0

vscode-appium's People

Contributors

boneskull avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

vscode-appium's Issues

automatically create tree item when local server task starts

If someone creates an appium task and runs it, the tree should know about this and create a transient tree item (a configuration which is not bound to an .appiumserver file).

The user should be able to save this file to persist the setting (so it will show the server as "offline" when not running). This would be a new UI element somewhere.

Do not create a new file to do this unless there's no other way to do it.

configure tests & setup CI

I am not sure if these are working right now. But we should make it work and add a GH action to run it.

We may or may not want webdriverio to automate a local server. But to fully test everything, the Appium server needs to have active sessions. I have had some success with webdriverio/appium-boilerplate for config (and there may be some stubs hanging around). Using fake-driver may make more sense than trying to run an android or iOS emulator in CI though, since driver behavior is really out of scope (for now)...

react to config file changes

  1. When the extensions's configuration changes, the extension should react accordingly.
  2. For example, if the server polling interval is adjusted, the extension should make an adjustment.
  3. ConfigService has some weird bespoke thing I wrote before I fully grokked vscode.Event, so remove that and replace it with vscode.Event.

Determine what exactly needs to happen when x changes. I should probably do this.

dev env: automated linting and formatting

Some people don't like this, but I do.

  • add lint-staged and husky to run a precommit hook which calls eslint --fix
  • configure eslint to work with the prettier plugin (so that eslint reports formatting issues, and eslint --fix formats via prettier)
  • ensure .ts, .d.ts, .js, .mjs, .md and .json files are formatted
  • do not format package-lock.json or package.json
  • run prettier on CHANGELOG.md after standard-version updates it, but before standard-version commits it (and make sure it's staged).

This would be a good task for someone who knows about this sort of configuration but otherwise doesn't know much about Appium or VS Code extensions.

do not bundle appium

This extension has to bundle Appium, but Appium is like 30MB of stuff (at least).
Attempting to bundle it using esbuild was met with failure (love those dynamic requires), but someone might get it to work if they keep trying. It would still be a couple MB, minified.

The extension may be able to actually just go download and install Appium into its storage directory if it is needed. e.g. if someone wants to run a local server but doesn't have Appium installed--automatically download and install it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.