feat(driver): bundle playwright-core in driver, keep only Node.js in driver-bundle (#1936)
This commit is contained in:
+31
-26
@@ -9,9 +9,11 @@ cd "$(dirname $0)"
|
||||
if [[ ($1 == '-h') || ($1 == '--help') ]]; then
|
||||
echo ""
|
||||
echo "This script downloads and assembles the Playwright driver for all platforms."
|
||||
echo "Each driver is assembled from the 'playwright-core' npm package and the matching"
|
||||
echo "Node.js binary from https://nodejs.org, the same way the upstream Playwright build"
|
||||
echo "does it. The result is put under 'driver-bundle/src/main/resources/driver'."
|
||||
echo "The platform-independent 'playwright-core' npm package is assembled once into the driver"
|
||||
echo "module ('driver/src/main/resources/driver/package'), and the matching Node.js binary from"
|
||||
echo "https://nodejs.org for each platform goes into the driver-bundle module"
|
||||
echo "('driver-bundle/src/main/resources/driver/<platform>'), the same way the upstream"
|
||||
echo "Playwright build does it."
|
||||
echo ""
|
||||
echo "Usage: scripts/download_driver.sh [option]"
|
||||
echo ""
|
||||
@@ -56,20 +58,26 @@ echo "Driver version: $DRIVER_VERSION"
|
||||
echo "Upstream commit: $GIT_HEAD"
|
||||
echo "Node.js version: $NODE_VERSION"
|
||||
|
||||
cd ../driver-bundle/src/main/resources
|
||||
# The platform-independent driver code (playwright-core) is assembled once into the driver module;
|
||||
# the Node.js binary for each platform is assembled into the driver-bundle module. See issue #1196.
|
||||
ROOT="$(cd .. && pwd)"
|
||||
CORE_DEST="$ROOT/driver/src/main/resources/driver"
|
||||
NODE_DEST="$ROOT/driver-bundle/src/main/resources/driver"
|
||||
|
||||
if [[ -d 'driver' ]]; then
|
||||
echo "Deleting existing drivers from $(pwd)"
|
||||
rm -rf driver
|
||||
fi
|
||||
TMP_DIR="$(mktemp -d)"
|
||||
trap 'rm -rf "$TMP_DIR"' EXIT
|
||||
|
||||
mkdir -p driver
|
||||
cd driver
|
||||
|
||||
# Download the platform-independent driver package (playwright-core) once.
|
||||
CORE_TGZ="$(pwd)/playwright-core-$DRIVER_VERSION.tgz"
|
||||
# 1. playwright-core package -> driver module (once, shared by every platform).
|
||||
echo "Assembling playwright-core package to $CORE_DEST/package"
|
||||
rm -rf "$CORE_DEST/package"
|
||||
mkdir -p "$CORE_DEST"
|
||||
CORE_TGZ="$TMP_DIR/playwright-core-$DRIVER_VERSION.tgz"
|
||||
download "https://registry.npmjs.org/playwright-core/-/playwright-core-$DRIVER_VERSION.tgz" "$CORE_TGZ"
|
||||
# The npm tarball has a top-level package/ directory, so this creates $CORE_DEST/package.
|
||||
tar -xzf "$CORE_TGZ" -C "$CORE_DEST"
|
||||
rm -f "$CORE_TGZ"
|
||||
|
||||
# 2. Node.js binary for each platform -> driver-bundle module.
|
||||
# <java platform dir>:<nodejs platform suffix>:<archive extension>
|
||||
for ENTRY in \
|
||||
"mac:darwin-x64:tar.gz" \
|
||||
@@ -79,28 +87,25 @@ for ENTRY in \
|
||||
"win32_x64:win-x64:zip"
|
||||
do
|
||||
IFS=':' read -r PLATFORM NODE_SUFFIX ARCHIVE <<< "$ENTRY"
|
||||
echo "Assembling driver for $PLATFORM to $(pwd)/$PLATFORM"
|
||||
mkdir "$PLATFORM"
|
||||
DEST="$NODE_DEST/$PLATFORM"
|
||||
echo "Assembling Node.js for $PLATFORM to $DEST"
|
||||
rm -rf "$DEST"
|
||||
mkdir -p "$DEST"
|
||||
|
||||
# 1. playwright-core package contents -> $PLATFORM/package
|
||||
tar -xzf "$CORE_TGZ" -C "$PLATFORM"
|
||||
|
||||
# 2. Node.js binary and its license from the official Node.js distribution.
|
||||
# Node.js binary and its license from the official Node.js distribution.
|
||||
NODE_DIR="node-v$NODE_VERSION-$NODE_SUFFIX"
|
||||
NODE_ARCHIVE="$NODE_DIR.$ARCHIVE"
|
||||
NODE_ARCHIVE="$TMP_DIR/$NODE_DIR.$ARCHIVE"
|
||||
download "https://nodejs.org/dist/v$NODE_VERSION/$NODE_DIR.$ARCHIVE" "$NODE_ARCHIVE"
|
||||
if [[ $ARCHIVE == "zip" ]]; then
|
||||
unzip -joq "$NODE_ARCHIVE" "$NODE_DIR/node.exe" -d "$PLATFORM"
|
||||
unzip -joq "$NODE_ARCHIVE" "$NODE_DIR/LICENSE" -d "$PLATFORM"
|
||||
unzip -joq "$NODE_ARCHIVE" "$NODE_DIR/node.exe" -d "$DEST"
|
||||
unzip -joq "$NODE_ARCHIVE" "$NODE_DIR/LICENSE" -d "$DEST"
|
||||
else
|
||||
tar -xzf "$NODE_ARCHIVE" -C "$PLATFORM" --strip-components=2 "$NODE_DIR/bin/node"
|
||||
tar -xzf "$NODE_ARCHIVE" -C "$PLATFORM" --strip-components=1 "$NODE_DIR/LICENSE"
|
||||
tar -xzf "$NODE_ARCHIVE" -C "$DEST" --strip-components=2 "$NODE_DIR/bin/node"
|
||||
tar -xzf "$NODE_ARCHIVE" -C "$DEST" --strip-components=1 "$NODE_DIR/LICENSE"
|
||||
fi
|
||||
rm -f "$NODE_ARCHIVE"
|
||||
done
|
||||
|
||||
rm -f "$CORE_TGZ"
|
||||
|
||||
echo ""
|
||||
echo "All drivers have been successfully assembled."
|
||||
echo ""
|
||||
|
||||
Reference in New Issue
Block a user