{"_id":"appium-desktop","_rev":"1-dd3e64acfc74bdadc81e3015e3ecce39","name":"appium-desktop","dist-tags":{"latest":"1.14.1"},"versions":{"1.14.1":{"name":"appium-desktop","version":"1.14.1","description":"Graphical interface for the Appium server, and an app inspector","repository":{"type":"git","url":"git+https://github.com/appium/appium-desktop.git"},"author":{"name":"Appium Developers","url":"https://github.com/appium"},"license":"APACHE2","bugs":{"url":"https://github.com/appium/appium-desktop/issues"},"keywords":["appium"],"assetsPath":"assets","homepage":"https://github.com/appium/appium-desktop","main":"dist/main.js","scripts":{"test":"run-s test:*","test:integration":"cross-env NODE_ENV=test mocha --reporter mocha-multi-reporters --reporter-options configFile=./test/mochareporters.json ./test/integration","test:unit":"cross-env NODE_ENV=test mocha --reporter mocha-multi-reporters --reporter-options configFile=./test/mochareporters.json ./test/unit/","test:lint":"eslint app/ test/","e2e":"cross-env FORCE_NO_WRONG_FOLDER=true NODE_ENV=test RUNNING_IN_SPECTRON=true mocha --reporter mocha-multi-reporters --reporter-options configFile=./test/mochareporters.json ./test/e2e","build":"run-s build:*","build:main":"cross-env NODE_ENV=production parcel build --target node --public-url . --out-dir ./dist --out-file main.js ./app/main.js","build:renderer":"cross-env NODE_ENV=production parcel build --no-content-hash --out-dir ./dist --target electron --public-url . ./app/renderer/index.html","watch":"concurrently \"npm run watch-main\" \"npm run watch-renderer\"","watch:main":"cross-env NODE_ENV=development parcel --target node --out-dir ./dist --out-file main.js ./app/main.js","watch:renderer":"cross-env NODE_ENV=development parcel --out-dir ./dist --target electron --public-url . ./app/renderer/index.html","start":"cross-env RUNNING_LOCALLY=true FORCE_NO_WRONG_FOLDER=true electron ./","clean":"rimraf dist/","watch-main":"cross-env NODE_ENV=development parcel --target node --out-dir ./dist --out-file main.js ./app/main.js","watch-renderer":"cross-env NODE_ENV=development parcel --out-dir ./dist --target electron --public-url . ./app/renderer/index.html","build-main-dev":"cross-env NODE_ENV=development parcel build --target node --out-dir ./dist --out-file main.js ./app/main.js","build-renderer-dev":"cross-env NODE_ENV=development parcel build --out-dir ./dist --target electron --public-url . ./app/renderer/index.html","start-dev":"cross-env RUNNING_LOCALLY=true FORCE_NO_WRONG_FOLDER=true NODE_ENV=development electron --inspect ./","dev":"cross-env NODE_ENV=development npm run build-main-dev && npm run build-renderer-dev && concurrently --kill-others \"npm run start-dev\" \"npm run watch:main\" \"npm run watch:renderer\" ","dev-wrong-folder":"cross-env WRONG_FOLDER=true npm run dev","postinstall":"node ./check-engines package.json package.json && rimraf node_modules/jimp/browser","postversion":"git pull --tags && git push && git push --tags","pre-commit":"npm run test:lint","pre-push":"npm test","crowdin-update":"node crowdin-update-resources.js","crowdin-sync":"node crowdin-sync-translations.js"},"husky":{"hooks":{"pre-commit":"npm run pre-commit","pre-push":"npm run pre-push"}},"build":{"productName":"Appium","appId":"io.appium.desktop","asar":false,"directories":{"output":"release"},"dmg":{"artifactName":"${productName}-mac-${version}.${ext}","contents":[{"x":410,"y":150,"type":"link","path":"/Applications"},{"x":130,"y":150,"type":"file"}]},"files":["dist/","node_modules/**/*","main.js","main.js.map","package.json"],"win":{"artifactName":"${productName}-windows-${version}.${ext}","target":"nsis","icon":"build/icon.ico"},"nsisWeb":{"oneClick":false},"nsis":{"oneClick":false},"linux":{"artifactName":"${productName}-linux-${version}.${ext}","target":["AppImage"],"category":"Development"},"publish":{"provider":"github","owner":"appium","vPrefixedTagName":true}},"bin":{"electron":"./node_modules/.bin/electron"},"dependencies":{"@babel/polyfill":"^7.4.0","ansi-to-html":"~0.6.7","antd":"^3.18.1","appium":"1.14.1","appium-support":"^2.25.0","bluebird":"^3.5.5","connected-react-router":"^6.0.0","css-modules-require-hook":"^4.2.3","electron-debug":"^3.0.0","electron-log":"^3.0.1","electron-settings":"^2.2.4","electron-updater":"^4.1.2","fix-path":"^2.1.0","font-awesome":"4.x","format-json":"1.x","highlight.js":"9.x","history":"^4.7.2","i18next":"^17.0.3","i18next-node-fs-backend":"^2.1.1","lodash":"4.x","moment":"^2.20.1","postcss":"^7.0.4","prop-types":"^15.6.2","react":"^16.8.1","react-click-outside-component":"^1.1.1","react-dom":"^16.8.1","react-hot-loader":"^4.3.12","react-i18next":"^10.0.4","react-redux":"^7.0.0","react-router":"^5.0.0","redux":"^4.0.1","redux-logger":"^3.0.6","redux-thunk":"2.x","request-promise":"^4.2.2","shell-env":"^3.0.0","source-map-support":"^0.5.0","teen_process":"^1.11.0","temp":"0.x","uuid":"3.x","wd":"^1.6.0","xpath":"0.0.27"},"devDependencies":{"7zip":"0.0.6","@babel/core":"^7.4.0","@babel/plugin-transform-runtime":"^7.4.0","@babel/register":"^7.4.0","appium-fake-driver":"^0.6.2","asar":"^2.0.0","asyncbox":"^2.5.3","babel-eslint":"^10.0.1","babel-plugin-transform-class-properties":"^6.24.1","chai":"^4.2.0","chai-as-promised":"^7.1.1","check-engines":"^1.5.0","concurrently":"^4.1.0","cross-env":"^5.2.0","devtron":"1.x","dir-compare":"^1.4.0","electron":"^5.0.6","electron-builder":"^21.1.0","electron-builder-lib":"^20.15.3","electron-devtools-installer":"^2.2.3","eslint":"^6.0.0","eslint-config-appium":"^4.0.1","eslint-plugin-babel":"^5.2.1","eslint-plugin-import":"^2.8.0","eslint-plugin-jsx-a11y":"^6.1.2","eslint-plugin-mocha":"^6.0.0","eslint-plugin-promise":"^4.0.1","eslint-plugin-react":"^7.12.4","eslint-plugin-react-native":"^3.6.0","eslint-plugin-shopify":"^30.0.0","express":"^4.16.2","greenkeeper-lockfile":"^1.15.1","husky":"^3.0.0","jquery":"^3.3.1","jsdom":"^15.0.0","less":"^2.7.3","mocha":"^6.0.0","mocha-junit-reporter":"^1.18.0","mocha-multi-reporters":"^1.1.7","node-libs-browser":"^2.1.0","npm-run-all":"^4.1.5","parcel-bundler":"^1.10.3","parcel-plugin-asset-copier":"^1.0.0","postcss-modules":"^1.4.1","react-addons-test-utils":"^15.6.2","release":"^6.0.1","request":"^2.88.0","rimraf":"^2.6.2","run-s":"0.0.0","sinon":"^7.3.1","spectron":"^7.0.0","xmldom":"^0.1.27"},"devEngines":{"node":">=6.x","npm":">=3.x"},"engines":{"node":">=10.x","npm":">=5.x"},"greenkeeper":{"ignore":["electron","less","electron-settings"]},"directories":{"doc":"docs","test":"test"},"gitHead":"46b7bc5c4d72b5c6770f57a8a2ab13d51eabe064","_id":"appium-desktop@1.14.1","_nodeVersion":"12.9.0","_npmVersion":"6.11.2","dist":{"integrity":"sha512-zlQ6rWUz6bu9WhNySGkUoizzdGDTC4l3yDdcucM/jak7EF3GpUXBr5ehf+UmgkXCcAj+/J+dgEwP0IOBjYUWuQ==","shasum":"00fb4b37898089d9290fcb70b03c5fdac692c3eb","tarball":"https://registry.npmjs.org/appium-desktop/-/appium-desktop-1.14.1.tgz","fileCount":258,"unpackedSize":7169119,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzYU6CRA9TVsSAnZWagAA3kAP/jxvao9s7S1JqW2d12n1\nbSCCVDiX5LY1Gjwt6oNLDZ5gsDtBwJglRm5UBnocWRHRYRs/gAKaf/nxt/vO\n9erMPzAwET0eVcRBpT01PmB5tkQ2MM1VsJtNP8fgJGSgAHadNtbfMicu8qD4\nxrUHE6/efKG21g14yVP4b8OK+to0qagx0JfbgKHeHzl5b/DvbYdXSJfTTomf\nO0/flF5kmQq5KW7jlIglIX2nDL1effIrlIywg885EEhjdV/3FgNjEF8XxIHQ\nxF0ppG8eUuUXkP/rbFLNNWcyEyS8Om47YZvh9+Js0GSJ8R1sd8tgx6g2we+o\ny2phqu8xByshotGabt7IagJFhb/cxEzcsyHgyRXRIBlJ0yS5BSnbeGIcfj7B\n0pKY2I8NLpiTBOLoGjCYj70hF/d2/Yifvq3Kco6f4cfO4OseCSWSD63Tw9lo\nq9vMa2VDGjVFo9PoGxz4EZoPsRu5KGnX4U/CIYmdZpKo8HGvGDWJPtb8zsPP\nbbfxPcKB4h5m6w1AZ/G4jiTNk3gMuIMlOXuUnyvDm25A/sQJF1HDA5XcZzOg\nZGvwdwY7LjHEZqvKo69FH7HXDwDNs+xHZXjVkaM4ixI1dcUFPUMUbUHssTgg\nj57rgGyZRhmSve0fMRSGj7RMF32m9kMn+sW5EVm/ByktzmwElndtWnw+l3zR\nEZAt\r\n=xB9s\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICHsse9RYR7O210rqfAo1BfaiUQAqtwdyOFmk7AzJtAiAiBwbRfur+wb9Rl3tuoo7OgIahPd3HH8bPHHMKkBNTCoGw=="}]},"maintainers":[{"name":"ozcan.durak","email":"info@ozcandurak.com"}],"_npmUser":{"name":"ozcan.durak","email":"info@ozcandurak.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/appium-desktop_1.14.1_1573750073361_0.16519518348736995"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-14T16:47:53.359Z","1.14.1":"2019-11-14T16:47:53.689Z","modified":"2022-04-11T14:51:09.070Z"},"maintainers":[{"name":"ozcan.durak","email":"info@ozcandurak.com"}],"description":"Graphical interface for the Appium server, and an app inspector","homepage":"https://github.com/appium/appium-desktop","keywords":["appium"],"repository":{"type":"git","url":"git+https://github.com/appium/appium-desktop.git"},"author":{"name":"Appium Developers","url":"https://github.com/appium"},"bugs":{"url":"https://github.com/appium/appium-desktop/issues"},"license":"APACHE2","readme":"# Appium Desktop \n[![Build Status](https://dev.azure.com/AppiumCI/Appium%20Desktop/_apis/build/status/appium.appium-desktop)](https://dev.azure.com/AppiumCI/Appium%20Desktop/_build/latest?definitionId=1)\n[![Crowdin](https://d322cqt584bo4o.cloudfront.net/appium-desktop/localized.svg)](https://crowdin.com/project/appium-desktop)\n[![Greenkeeper badge](https://badges.greenkeeper.io/dpgraham/appium-desktop.svg)](https://greenkeeper.io/)\n![Action screenshot](docs/images/screen-inspector-and-logs.png)\n\nAppium Desktop is an app for Mac, Windows, and Linux which gives you the power of the [Appium](http://appium.io) automation server in a beautiful and flexible UI. It is a combination of a few Appium-related tools:\n\n* A graphical interface for the Appium Server. You can set options, start/stop the server, see logs, etc... You also don't need to use Node/NPM to install Appium, as the Node runtime comes bundled with Appium Desktop.\n* An Inspector that you can use to look at your app's elements, get basic information about them, and perform basic interactions with them. This is useful as a way to learn about Appium or as a way to learn about your app so you can write tests for it.\n\n## Download Appium Desktop\n\nYou can always pick up the latest release at our\n[Release](https://github.com/appium/appium-desktop/releases/latest) page on\nGitHub.\n\nIf you're on Windows or macOS, Appium Desktop will automatically provide you\nwith updated versions of the app when they are released. If you encounter\na problem updating, simply delete or uninstall the app and re-download the\nlatest from the link above.\n\nNote that Appium Desktop _is not_ the same thing as Appium. Appium Desktop is\na graphical frontend to Appium with additional tools. Appium Desktop is\nreleased on its own cadence and has its own versioning system. If you are\nreporting an issue with Appium Desktop, always be sure to include _both_ the\nversion of Appium Desktop and the version of the Appium Server which is in use\n(see below).\n\nIf you're on macOS, you will need to install Appium Desktop by copying the app\nfrom the downloaded DMG file to your own file system (the best place is the\n\"Applications\" folder). Running Appium from in side the attached DMG itself is\nnot supported, and will not work.\n\n## Known Issues\n* Some Windows 10 Users experience a `PathTooLongException` when installing the EXE. The workaround for this is to update the setting on Windows to [enable long paths](https://superuser.com/questions/1119883/windows-10-enable-ntfs-long-paths-policy-option-missing)\n\n## Usage Instructions\n\nThese instructions assume you are already familiar with Appium and\nAppium-related concepts. If you are new to Appium, please visit\n[appium.io](http://appium.io) and read our introductory material.\n\nThis app provides a convenient way to download and run the Appium automation\nserver, as well as a tool for inspecting your Android or iOS application. Its\nvarious capabilities are described in the following sections.\n\n### The server start window\n\n#### Starting a simple server\n\n![Start a basic server](docs/images/screen-start-simple.png)\n\nWhen you open Appium Desktop, you are greeted with the server start window. The\nbasic option is to start an Appium server with all its defaults and the ability\nto modify the host and port. The start button will also let you know which\nversion of the Appium server you are running, which can be useful when\nreporting issues to the Appium team.\n\n#### Starting a server with advanced options\n\n![Start an advanced server](docs/images/screen-start-advanced.png)\n\nBy clicking on the 'Advanced' tab, you have the ability to set all the server\nflags that are available in Appium. This is for advanced users and should only\nbe modified after consulting the Appium documentation.\n\n#### Server presets\n\n![Server presets](docs/images/screen-start-presets.png)\n\nIf you use the advanced server options, you have the ability to save\na configuration for later use. Simply save the preset on the 'Advanced' tab,\nand you will subsequently be able to recall and start the server with that\nconfiguration from the 'Preset' tab.\n\n### The server console output window\n\nOnce you start the server, it will launch on the host and port you specified,\nand open a new window displaying the server log output.\n\n![Server console](docs/images/screen-logs.png)\n\nThis is fairly straightforward and no real interaction is possible, beyond\nusing the button to stop the server. You can also copy-and-paste the logs from\nthis window which is useful in reporting Appium issues.\n\nOne other button is available: 'Start New Session'. Clicking this will open up\nthe New Session window enabling you to start an Inspector session on the\ncurrently-running server.\n\n### The New Session window\n\nThe New Session window allows you to construct a set of Appium desired\ncapabilities used to launch an Appium session. You can launch a session against\nthe currently-running Appium Desktop server (which is the default), or you can\nlaunch a session against a variety of other endpoints.\n\n![New session window](docs/images/screen-new-session.png)\n\nSince it's not required to run against Appium Desktop's own server, you can get\nto the New Session window without starting an Appium Desktop server. Simply go\nto \"File\" (Windows/Linux) or \"Appium\" (Mac) and choose \"New Session...\", which\nwill open the New Session window without having to start a local server. In\nthis case, attaching to the local server will be disabled.\n\n#### Appium Endpoints\n\nThese are the options for launching a session against a non-local Appium server:\n\n|     Endpoint     |                                                        Description                                                         |\n| ---------------- | -------------------------------------------------------------------------------------------------------------------------- |\n| Automatic server | Automatically utilizes the currently-running Appium server                                                                 |\n| Custom Server    | Launch a session on an Appium server running on another machine over the network                                           |\n| Sauce Labs       | Launch a session on the [Sauce Labs](https://saucelabs.com) cloud. [Documentation](https://wiki.saucelabs.com/)            |\n| TestObject       | Launch a session on the [TestObject](https://testobject.com) cloud. [Documentation](https://wiki.saucelabs.com/)           |\n| Headspin         | Launch a session on the [Headspin](https://headspin.com) cloud. [Documentation](https://docs.headspin.io/)                 |\n| BrowserStack     | Launch a session on the [Browserstack](https://browserstack.com) cloud. [Documentation](https://www.browserstack.com/docs) |\n| Bitbar           | Launch a session on the [Bitbar](https://bitbar.com) cloud. [Documentation](http://docs.bitbar.com/)                       |\n| Kobiton           | Launch a session on the [Kobiton](https://kobiton.com) cloud. [Documentation](https://docs.kobiton.com/)                       |\n| Perfecto         | Launch a session on the [Perfecto](https://www.perfecto.io) cloud. [Documentation](https://developers.perfectomobile.com/display/PD/Appium) |\n| Pcloudy         | Launch a session on the [Pcloudy](https://www.pcloudy.com) cloud. [Documentation](https://www.pcloudy.com/mobile-application-testing-documentation) |\n| TestingBot       | Launch a session on the [TestingBot](https://testingbot.com) cloud. [Documentation](https://testingbot.com/support) |\n\nIt should be straightforward to get set up with any of these options. Simply\nenter your details in the input fields provided.\n\n#### Desired Capabilities\n\nDesired capabilities are how you configure your Appium session. They tell the\nAppium server what kind of platform and app you want to automate. If you are\nunfamiliar with the concept of desired capabilities, or which desired\ncapabilities are required to launch Appium sessions of various types, you\nshould consult the Appium documentation. Additionally, if you're using one of\nthe cloud providers, consult their documentation for possible vendor-specific\ndetails.\n\nAppium Desktop does not restrict your creation of desired capabilities in any\nway, nor will it validate them for you. It simply provides a nice UI for\nentering them in, and saving them for later use. Under the 'Desired\nCapabilities' tab, you can use the form fields and '+' button to enter as many\ndesired capabilities as you need. You will also see a representation of the\nresulting JSON, which is what is actually sent to the Appium server. This can\nbe useful for verifying your capabilities, or for copy-and-pasting when\nreporting issues.\n\nOnce you have set your desired capabilities, you might wish to save them so you\ncan run the same type of session later. Simply click the 'Save As...' button to\ngive your capability set a name. You can then access it under the 'Saved\nCapability Sets' tab, for later editing or session launching.\n\nOnce your server type and capabilities are set, click 'Start Session' to launch\nthe Appium Desktop Inspector.\n\n#### Attach to an Existing Session\n\nIf you click on the \"Attach to Session...\" tab, you can select an existing\nsession from a list of currently running sessions on your selected server, or you\ncan input a session ID of a currently-running session.  That session should be\nrunning on the server details you specified in the server type section above.\nAttaching to an existing session is possible because the Inspector is just an\nAppium client. This could be useful if you want to debug the middle of a running\ntest. When you quit the Inspector window of an existing session, Appium Desktop\nwill not quit the session as it does normally.\n\n### The Inspector\n\nThe Inspector is a visual representation of the state of your application along\nwith the ability to perform certain interactions in your application through\nAppium.\n\n![Inspector window](docs/images/screen-inspector.png)\n\nAppium sessions can take some time to load, especially on cloud services, so\nplease be patient. When the session loads, a screenshot of your app will appear\non the left. You can mouse over various UI elements in your application, and\nsee them highlighted.\n\nIn the middle of the Inspector window is your app's hierarchy, represented as\nXML. You can navigate this tree by clicking through it, or by clicking on\nelements in the screenshot view. They will then be highlighted.\n\nWhen an element is highlighted, its information will appear in the detail view\non the right side of the Inspector. This detail view consists of potential\nactions to take against the element, and a table of the element's properties.\nThese properties are valuable in determining how the element might accessed\nusing a particular Appium locator strategy. With an element selected, you can\nalso 'Tap' the element, or 'Send Keys' to the element (if it is a text field).\n\nWhen you take such an action with an element, the Inspector will send the\ncommand to Appium, which will execute it. If the action is successful, a new\nscreenshot will be generated and you should see the updated state and XML of\nyour app. If it's not successful, you'll have an opportunity to see the error\nmessage.\n\nThe top of the Inspector window contains a small toolbar with icons\nrepresenting the ability to take certain actions in the Inspector:\n\n* Back (call `driver.back`)\n* Refresh (refresh the source and screenshot)\n* Start Recording (open the recorder, see the next section for more information on the recorder)\n* Quit the session (call `driver.quit` and close the Inspector)\n\n### The Recorder\n\nAppium Desktop comes with a very basic action recorder, that watches for\nactions taken using Appium Desktop and displays language-and-framework-specific\ncode that represents those actions. The code can then be copied-and-pasted into\nthe appropriate Appium client code and used for tests.\n\n**NB:** the goal of the Recorder is not to produce production-ready test code.\nIt is designed as a tool to help explore the Appium API, and demonstrate how\ncertain automation behaviors correspond to method calls in a particular\nlanguage and Appium library. In sum, it is a learning tool, not a robust code\ngeneration feature, and should be used as such.\n\nWhen you start recording, the Inspector will show an additional window:\n\n![Inspector window with recorder](docs/images/screen-recorder-empty.png)\n\nAt first, the Recorder will show no code. You will first have to take some\naction, like finding an element in the hierarchy and tapping on it, or sending\nkeystrokes to it. When you do this, code will appear in the recorder window,\ncorresponding to the particular language and framework you have chosen (which\ncan be adjusted in the drop-down menu at the top right of the Recorder):\n\n![Recorder with code](docs/images/screen-recorder-detail.png)\n\nThis code can be copied to your clipboard using the appropriate button at the\ntop right of the Recorder pane. Note that by default what is shown are simply\nlines of code corresponding to the specific actions you have taken while\nrecording---in general you cannot paste these lines into an empty text file and\nrun the code. To run Appium test scripts in code requires that various\ndependencies (like the Appium client libraries) be installed, and that script\nboilerplate (like instantiating a driver and initializing a session) be\npresent. To show this additional code, you can click the \"Show Boilerplate\"\nbutton. With boilerplate code shown, it is possible to copy and paste the code\ninto a new file and run it.\n\n![Recorder with boilerplate](docs/images/screen-recorder-boilerplate.png)\n\nThe power of the Recorder will continue to grow as we add more languages,\nframeworks, and actions to Appium Desktop.\n\n### Conclusion\n\nThis is everything you need to know to use Appium Desktop successfully!\nRemember, Appium Desktop is not a replacement for understanding Appium\nitself---it is simply a convenient tool for working with Appium on your\ndesktop, and an Inspector for exploring your app. Have fun!\n\n## Reporting Issues and Requesting Features\n\nAppium Desktop is open source, and we use GitHub for issue tracking. Please\nsimply report issues at our [issue\ntracker](https://github.com/appium/appium-desktop/issues). We will endeavor to\ndetermine whether the issue you are reporting is related to Appium Desktop or\nAppium Server. If it's not related to Appium Desktop specifically, we will\nclose the issue and ask you to open a general Appium issue at [Appium's main\nissue tracker](https://github.com/appium/appium/issues). Please, save\nyourselves and us valuable time by getting clear on whether the issue you're\nexperiencing is related to Appium Desktop specifically or instead is a general\nAppium issue. You can do this by seeing whether the issue reproduces with the\nAppium command line server as well. If it does, direct your report to Appium's\nissue tracker.\n\nHave a feature request? Follow the same process and submit an issue to the\nappropriate tracker! (Either here in this repo if the request is specifically\nfor Appium Desktop, or Appium's main tracker if the request is for Appium more\ngenerally.)\n\n## Advanced Topics and Troubleshooting\n\n#### Appium can't detect environment variables on Mac\n\nAppium uses environment variables like `ANDROID_HOME` as well as relying on\nvarious binaries in your `PATH` and so on. When running from the command line\nin an environment where you have set these variables appropriately, Appium has\nno problem in picking them up. However, Appium Desktop does not run in a shell\nor a command-line environment, and so by default it does not have access to\nenvironment variables you have set in your shell startup script or profile. To\nwork around this, we use the\n[shell-env](https://github.com/sindresorhus/shell-env) package to pick up\nenvironment variables defined in your shell. This package only looks in certain\ncommon init scripts, however, like `~/.bashrc`, `~/.bash_profile`, and\n`~/.zshrc`. If you set your Appium environment variables in some other way, you\nwill need to create one of these default init scripts and set your environment\nvariables there as well, so that Appium Desktop will successfully pick them up.\n\n#### Warnings about being on a read-only file system\n\nThis probably means you tried to launch Appium Desktop from the downloaded disk\nimage (`.dmg` file). This is not a supported mode of running Appium Desktop. To\ncorrectly install Appium Desktop, copy the application from the disk image to\nyour local filesystem, to somewhere like `/Applications`. Then, run the app\nfrom that new location.\n\n## Developer Instructions\n\nWant to hack on Appium Desktop? Awesome! Head on over to our [Contributing\nDoc](CONTRIBUTING.md) for information on how to get a dev environment set up\nand submit changes back to the project.\n","readmeFilename":"README.md"}