1
+ #! /usr/bin/env bash
2
+ # Usage: chrome-driver.sh [install_dir]
3
+ # Determine install directory from first argument or ORB_PARAM_DRIVER_INSTALL_DIR
4
+ INSTALL_DIR=${1:- ${ORB_PARAM_DRIVER_INSTALL_DIR:- " ./tmp/webdrivers" } }
5
+ echo " Installing ChromeDriver into $INSTALL_DIR "
6
+
7
+ # Determine the OS platform
8
+ OS=" $( uname) "
9
+
10
+ if [ " $OS " == " Darwin" ]; then
11
+ # macOS systems
12
+ if [ -e " /Applications/Google Chrome.app/Contents/MacOS/Google Chrome" ]; then
13
+ version=$( " /Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --version)
14
+ echo " Google Chrome version on macOS: $version "
15
+ else
16
+ echo " Google Chrome is not installed on your macOS."
17
+ fi
18
+ elif [ " $OS " == " Linux" ]; then
19
+ # Linux systems
20
+ if command -v google-chrome > /dev/null; then
21
+ version=$( google-chrome --version)
22
+ echo " Google Chrome version on Linux: $version "
23
+ else
24
+ echo " Google Chrome is not installed on your Linux."
25
+ # exit without error
26
+ exit 0
27
+ fi
28
+ else
29
+ echo " Unsupported OS."
30
+ exit 0
31
+ fi
32
+
33
+ MAJORVERSION=$( echo " $version " | grep -Eo ' [0-9]+' | head -1)
34
+ echo " CHROME DRIVER INSTALL $MAJORVERSION "
35
+
36
+ # Determine target platform for ChromeDriver download
37
+ case " $OS " in
38
+ Darwin)
39
+ if [[ " $( uname -m) " == " arm64" ]]; then
40
+ PLATFORM=" mac-arm64"
41
+ else
42
+ PLATFORM=" mac-x64"
43
+ fi
44
+ ;;
45
+ Linux)
46
+ PLATFORM=" linux64"
47
+ ;;
48
+ * )
49
+ echo " Unsupported OS: $OS " ; exit 1
50
+ ;;
51
+ esac
52
+ echo " Detected platform for download: $PLATFORM "
53
+
54
+ # Determine ChromeDriver version and download URL
55
+ if [ " $MAJORVERSION " -lt 115 ]; then
56
+ # Chrome <115: use storage.googleapis.com
57
+ CHROMEDRIVER_VERSION=$( curl -sS " https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${MAJORVERSION} " | tr -d ' \r' )
58
+ CHROMEDRIVER_DOWNLOAD_URL=" https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION} /chromedriver_${PLATFORM} .zip"
59
+ else
60
+ # Chrome >=115: use Chrome for Testing JSON feed
61
+ FEED_URL=" https://googlechromelabs.github.io/chrome-for-testing/latest-versions-per-milestone-with-downloads.json"
62
+ CHROMEDRIVER_VERSION=$( curl -sS " $FEED_URL " | jq -r " .milestones.\" $MAJORVERSION \" .version" )
63
+ CHROMEDRIVER_DOWNLOAD_URL=$( curl -sS " $FEED_URL " \
64
+ | jq -r " .milestones.\" $MAJORVERSION \" .downloads.chromedriver[] \
65
+ | select(.platform==\" $PLATFORM \" ).url" )
66
+ fi
67
+
68
+ echo " Matching ChromeDriver version: $CHROMEDRIVER_VERSION "
69
+ echo " Downloading ChromeDriver from $CHROMEDRIVER_DOWNLOAD_URL "
70
+
71
+ # Prepare install directory
72
+ mkdir -p " $INSTALL_DIR "
73
+
74
+ # Download and install ChromeDriver
75
+ ZIP_PATH=" ${INSTALL_DIR} /chromedriver_${PLATFORM} .zip"
76
+ curl -sS -o " $ZIP_PATH " " $CHROMEDRIVER_DOWNLOAD_URL "
77
+ unzip -o " $ZIP_PATH " -d " $INSTALL_DIR "
78
+
79
+ # Move the extracted chromedriver binary to the root of INSTALL_DIR
80
+ EXTRACTED_DIR=" ${INSTALL_DIR} /chromedriver-${PLATFORM} "
81
+ ALT_DIR=" ${INSTALL_DIR} /chromedriver_${PLATFORM} "
82
+
83
+ if [ -f " ${EXTRACTED_DIR} /chromedriver" ]; then
84
+ mv " ${EXTRACTED_DIR} /chromedriver" " $INSTALL_DIR /chromedriver"
85
+ elif [ -f " ${ALT_DIR} /chromedriver" ]; then
86
+ mv " ${ALT_DIR} /chromedriver" " $INSTALL_DIR /chromedriver"
87
+ else
88
+ # Fallback: try to find chromedriver file inside any subdir
89
+ FOUND=$( find " $INSTALL_DIR " -type f -name chromedriver | head -n1)
90
+ if [ -n " $FOUND " ]; then
91
+ mv " $FOUND " " $INSTALL_DIR /chromedriver"
92
+ else
93
+ echo " Error: chromedriver binary not found"
94
+ exit 1
95
+ fi
96
+ fi
97
+
98
+ chmod +x " $INSTALL_DIR /chromedriver"
99
+ # Cleanup extracted directory and zip
100
+ rm -rf " $EXTRACTED_DIR "
101
+ rm -f " $ZIP_PATH "
102
+
103
+ echo " ChromeDriver installed at $INSTALL_DIR /chromedriver"
0 commit comments