Skip to content

Instantly share code, notes, and snippets.

@dpgraham
Created March 25, 2019 23:10
Show Gist options
  • Save dpgraham/83ee35e52124abe81ec7b5cf2b39bbac to your computer and use it in GitHub Desktop.
Save dpgraham/83ee35e52124abe81ec7b5cf2b39bbac to your computer and use it in GitHub Desktop.

Move appium/appium, all of the drivers, appium-adb, appium-remote-debugger, appium-chromedriver, appium-support, appium-ios-simulator, node-simctl into a single repo so that they can be released simultaneously and so that they can be symlinked (using Lerna) to eachother. Then make Appium into a "Builder" that can create a custom Appium server by passing it instances of drivers

STAGE 1: Use another CI for the packges that supports multiple builds (Travis does not). This has already been started with Azure. I'd be open to other options, but Azure looks really promising.

STAGE 2: Move the packages one-by-one into one repository (temporarily call it appium/monorepo) and deprecate the repositories that were left behind.

  • Will require a little bit of refactoring to make CI work
  • Should rename everything to @appium/<package-name>
  • Add Lerna to the root of the repository to support sibling package symlinking, shared dependency symlinking and Lerna's versioning/publishing

STAGE 3: Split appium/appium into two packages. One called @appium/builder which changes the existing appium/appium to be a builder that takes drivers as arguments (instead of importing them) and runs a server. Have appium/appium import @appium/builder and then export all of the drivers and runs it as a server (like we currently do)

STAGE 4: Refactor the drivers to all import @appium/builder and make themselves standalone Appium servers. This will give us higher fidelity E2E tests, will allow us to create single driver bundles to upload to cloud services and we can use npm as an option for installing individual drivers (npm install -g @appium/xcuitest-driver)

STAGE 5: Create @appium/cli that installs and manages drivers

STAGE 6: Once we're happy with the reliability of @appium/cli rename it to appium/appium, bump the version to 2.0 and deprecate the old appium/appium.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment