3 Commits

Author SHA1 Message Date
5c0e19d08f Replay on network host 2026-02-05 15:30:24 +01:00
cf9aa5bf88 Release version 1.1.1 2026-02-05 15:21:47 +01:00
a739a3fc5c fix(playwright): run codegen and replay containers as host user
Run Playwright Docker containers with the current host UID/GID to avoid
root-owned files in bind-mounted workspaces.

- Add --user UID:GID and HOME override to codegen and replay
- Harden replay workspace cleanup against leftover permission issues

https://chatgpt.com/share/6984a73c-14a0-800f-a40d-778972e518b7
2026-02-05 15:20:33 +01:00
3 changed files with 24 additions and 1 deletions

View File

@@ -1,3 +1,8 @@
## [1.1.1] - 2026-02-05
* Fix permission issues by running Playwright Docker containers with the host UID/GID, preventing root-owned files during codegen and replay.
## [1.1.0] - 2026-02-05
* 🎬 Enable replay of recorded Playwright tests in headless mode

View File

@@ -37,6 +37,10 @@ require_cmd xhost
: "${DISPLAY:=:0}"
# Run containers as the current host user to avoid root-owned files in bind mounts.
USER_ID="$(id -u)"
GROUP_ID="$(id -g)"
ROOT="$(repo_root)"
REC_DIR="${ROOT}/${RECORDINGS_DIR}"
WORK_DIR="${REC_DIR}/.work"
@@ -107,6 +111,8 @@ if [[ -n "${START_URL}" ]]; then
fi
docker run --rm -it \
--user "${USER_ID}:${GROUP_ID}" \
-e HOME=/tmp \
--ipc=host \
--network host \
-e "DISPLAY=${DISPLAY}" \

View File

@@ -38,6 +38,10 @@ repo_root() {
require_cmd docker
# Run containers as the current host user to avoid root-owned files in bind mounts.
USER_ID="$(id -u)"
GROUP_ID="$(id -g)"
ROOT="$(repo_root)"
REC_DIR="${ROOT}/${RECORDINGS_DIR}"
@@ -46,7 +50,12 @@ REC_DIR="${ROOT}/${RECORDINGS_DIR}"
# Build ephemeral workspace
WORK_DIR="${REC_DIR}/.replay-work"
rm -rf "${WORK_DIR}"
# Robust cleanup: handle possible permission issues from previous runs.
if [[ -e "${WORK_DIR}" ]]; then
chmod -R u+rwX "${WORK_DIR}" 2>/dev/null || true
rm -rf "${WORK_DIR}" 2>/dev/null || true
fi
mkdir -p "${WORK_DIR}/tests"
cleanup() {
@@ -97,6 +106,9 @@ echo "Tests : ${TEST_FILE:-all recordings}"
echo
docker run --rm \
--network host \
--user "${USER_ID}:${GROUP_ID}" \
-e HOME=/tmp \
-v "${WORK_DIR}:/work" \
-w /work \
"${PLAYWRIGHT_IMAGE}" \