@@ -116,33 +116,49 @@ jobs:
116116 docker exec "$C" tail -200 /tmp/entrypoint.log || true
117117 exit 1
118118
119- - name : Screenshot 1 — initial paint
119+ - name : Display + tooling sanity check
120120 run : |
121121 C=${{ steps.container.outputs.id }}
122- docker exec "$C" bash -c 'DISPLAY=:99 import -window root /tmp/shot1.png'
123- docker cp "$C:/tmp/shot1.png" ./shot1.png
124- ls -la ./shot1.png
122+ echo '--- which import / xdotool / xwininfo ---'
123+ docker exec "$C" bash -c 'which import xdotool xwininfo xdpyinfo 2>&1 || true'
124+ echo '--- xdpyinfo (X server reachable on :99?) ---'
125+ docker exec -u node "$C" bash -c 'DISPLAY=:99 xdpyinfo 2>&1 | head -10' || echo "xdpyinfo failed exit=$?"
126+ echo '--- xwininfo -root -tree ---'
127+ docker exec -u node "$C" bash -c 'DISPLAY=:99 xwininfo -root -tree 2>&1' || true
128+ echo '--- xdotool search --name ToolHive ---'
129+ docker exec -u node "$C" bash -c 'DISPLAY=:99 xdotool search --name ToolHive 2>&1' || true
125130
126- - name : Inspect window tree (sanity check)
131+ - name : Screenshot 1 — initial paint
127132 run : |
133+ set -x
128134 C=${{ steps.container.outputs.id }}
129- echo '--- xwininfo -root -tree ---'
130- docker exec "$C" bash -c 'DISPLAY=:99 xwininfo -root -tree' || true
131- echo '--- xdotool search --name ToolHive ---'
132- docker exec "$C" bash -c 'DISPLAY=:99 xdotool search --name ToolHive' || true
135+ # Run as `node` to match the X server owner. Capture stderr explicitly
136+ # so we can see *why* import fails if it does, instead of inferring.
137+ docker exec -u node "$C" bash -c '
138+ set -x
139+ DISPLAY=:99 import -window root /tmp/shot1.png 2>&1
140+ echo "import exit=$?"
141+ ls -la /tmp/shot1.png 2>&1
142+ '
143+ docker cp "$C:/tmp/shot1.png" ./shot1.png
144+ ls -la ./shot1.png
133145
134146 - name : Drive xdotool — focus app and send Tab
135147 run : |
136148 C=${{ steps.container.outputs.id }}
137- docker exec "$C" bash -c 'DISPLAY=:99 xdotool search --name ToolHive windowactivate' || true
149+ docker exec -u node "$C" bash -c 'DISPLAY=:99 xdotool search --name ToolHive windowactivate' || true
138150 sleep 2
139- docker exec "$C" bash -c 'DISPLAY=:99 xdotool key Tab' || true
151+ docker exec -u node "$C" bash -c 'DISPLAY=:99 xdotool key Tab' || true
140152 sleep 1
141153
142154 - name : Screenshot 2 — after input
143155 run : |
144156 C=${{ steps.container.outputs.id }}
145- docker exec "$C" bash -c 'DISPLAY=:99 import -window root /tmp/shot2.png'
157+ docker exec -u node "$C" bash -c '
158+ DISPLAY=:99 import -window root /tmp/shot2.png 2>&1
159+ echo "import exit=$?"
160+ ls -la /tmp/shot2.png 2>&1
161+ '
146162 docker cp "$C:/tmp/shot2.png" ./shot2.png
147163 ls -la ./shot2.png
148164
0 commit comments