⚙️ Step-by-Step Installation (Appium 3.x)
Step-by-Step Installation (Appium 3.x): Think of Appium setup like equipping a professional kitchen — the order is life-or-death, just like you cannot ignite a stove before the g
Think of Appium setup like equipping a professional kitchen — the order is life-or-death, just like you cannot ignite a stove before the gas line is connected: without JDK + JAVA_HOME, Android SDK tools cannot run; without Android SDK, ADB cannot find devices; without ADB, UIAutomator2 cannot bridge to the device; without UIAutomator2, even a running Appium Server cannot start a session. But if you already manage a Java project with Maven or Gradle, why do you need to install Node.js separately? Because Appium Server itself is written in Node.js — your Java test code is only the HTTP client, the actual server is a Node.js process. Just as you must order Maven dependencies correctly, here you must install system dependencies in sequence: JDK → Android SDK → Node.js → Appium → UIAutomator2 driver. The critical QA truth: if any link in this chain is missing or on the wrong version, your CI/CD pipeline fails silently with an "environment not ready" error — you get no test results, just setup noise that masks real bugs.
1. Prerequisites — Node.js & JDK
Windows — Node.js 20+ and JDK 21
Why Do You Need Node.js AND JDK Separately on Windows?
winget install OpenJS.NodeJS.LTS installs…
`winget install OpenJS.NodeJS.LTS` installs Node.js — this is the runtime the Appium Server ITSELF is written in, it has NOTHING to do with your test code language.
winget install Microsoft.OpenJDK.21…
`winget install Microsoft.OpenJDK.21` installs the JDK SEPARATELY — this is the environment that compiles and runs YOUR Java test code (Appium Java Client).
Moving to the next step WITHOUT…
Moving to the next step WITHOUT verifying with `node --version` and `java -version` means proceeding WITHOUT knowing which component is MISSING.
The JAVA_HOME Registry variable is set…
The `JAVA_HOME` Registry variable is set SEPARATELY because Android SDK tools and Appium READ exactly where the JDK lives from this variable — even if `java` works on PATH, some tools FAIL without JAVA_HOME.
Mac — Homebrew Installation
How Do Homebrew's Two Different Packages (node@20 and temurin@21) Coexist?