diff --git a/packages/element-web-playwright-common/Dockerfile b/packages/element-web-playwright-common/Dockerfile index 5ae83e4bcf..ef6bd176ed 100644 --- a/packages/element-web-playwright-common/Dockerfile +++ b/packages/element-web-playwright-common/Dockerfile @@ -6,6 +6,13 @@ WORKDIR /work # fonts-dejavu is needed for the same RTL rendering as on CI RUN apt-get update && apt-get -y install docker.io fonts-dejavu +# Set up corepack +RUN corepack enable +ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 + +# Add environment variable so consumers can skip developer-centric scripts +ENV PLAYWRIGHT_COMMON_DOCKER=1 + COPY docker-entrypoint.sh /docker-entrypoint.sh ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/packages/element-web-playwright-common/package.json b/packages/element-web-playwright-common/package.json index ed6481c824..e6be5b6ea7 100644 --- a/packages/element-web-playwright-common/package.json +++ b/packages/element-web-playwright-common/package.json @@ -1,7 +1,7 @@ { "name": "@element-hq/element-web-playwright-common", "type": "module", - "version": "2.2.6", + "version": "2.2.7", "license": "SEE LICENSE IN README.md", "repository": { "type": "git", diff --git a/packages/element-web-playwright-common/playwright-screenshots.sh b/packages/element-web-playwright-common/playwright-screenshots.sh index 5a3a014e2f..1fa0f537d9 100755 --- a/packages/element-web-playwright-common/playwright-screenshots.sh +++ b/packages/element-web-playwright-common/playwright-screenshots.sh @@ -56,6 +56,7 @@ RUN_ARGS=( ) DEFAULT_ARGS=(--grep @screenshot) +LINK_MODULES=true # Some arguments to customise behaviour so the same script / image can be # re-used for other screenshot generation. @@ -72,6 +73,11 @@ while [[ $# -gt 0 ]]; do RUN_ARGS+=(--mount "${mount_param}" -e YARN_INSTALL=true) shift ;; + # Disables the automatic detection & linking of node_modules which can clash with developer tooling e.g. pnpm-link + --no-link-modules) + LINK_MODULES=false + shift + ;; # Sets a different entrypoint (in which case the default arguments to the script will be ignored) --entrypoint) shift @@ -87,16 +93,17 @@ done build_image -# Ensure we pass all symlinked node_modules to the container -pushd node_modules > /dev/null -SYMLINKS=$(find . -maxdepth 2 -type l -not -path "./.bin/*") -popd > /dev/null -for LINK in $SYMLINKS; do - TARGET=$(readlink -f "node_modules/$LINK") || true - if [ -d "$TARGET" ]; then - if [ -n "$docker_is_podman" ]; then - echo -e "\033[31m" >&2 - cat <<'EOF' >&2 +if [[ $LINK_MODULES == true ]]; then + # Ensure we pass all symlinked node_modules to the container + pushd node_modules > /dev/null + SYMLINKS=$(find . -maxdepth 2 -type l -not -path "./.bin/*") + popd > /dev/null + for LINK in $SYMLINKS; do + TARGET=$(readlink -f "node_modules/$LINK") || true + if [ -d "$TARGET" ]; then + if [ -n "$docker_is_podman" ]; then + echo -e "\033[31m" >&2 + cat <<'EOF' >&2 WARNING: `node_modules` contains symlinks, and the support for this in `playwright-screenshots.sh` is broken under podman due to https://github.com/containers/podman/issues/25947. @@ -104,12 +111,13 @@ https://github.com/containers/podman/issues/25947. If you get errors such as 'Error: crun: creating ``', then retry this having `yarn unlink`ed the relevant node modules. EOF - echo -e "\033[0m" >&2 + echo -e "\033[0m" >&2 + fi + echo "mounting linked package ${LINK:2} in container" + RUN_ARGS+=( "-v" "$TARGET:/work/node_modules/${LINK:2}" ) fi - echo "mounting linked package ${LINK:2} in container" - RUN_ARGS+=( "-v" "$TARGET:/work/node_modules/${LINK:2}" ) - fi -done + done +fi # Our Playwright fixtures use Testcontainers [1], which uses a docker image # called Ryuk [2], which will clean up any dangling containers/networks/etc