Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
331fe82
Initial plan
Copilot Jul 17, 2026
b5dd925
chore: plan for multi-device docs tester fixes
Copilot Jul 17, 2026
b027287
fix: Chrome sandbox SUID and docs server accessibility in multi-devic…
Copilot Jul 17, 2026
6c381cd
chore: recompile workflows
Copilot Jul 17, 2026
bfc7ef2
Apply remaining changes
Copilot Jul 18, 2026
4a42004
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 19, 2026
ebf5c8e
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 19, 2026
beec28b
chore: refresh lock file engine version and add trimleftright to lint…
Copilot Jul 19, 2026
424a4d4
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 19, 2026
091b5a7
chore: recompile after main merge (refresh frontmatter hash)
Copilot Jul 19, 2026
83aeb38
Merge branch 'main' into copilot/multi-device-docs-testing-report-202…
github-actions[bot] Jul 19, 2026
f652d1f
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 19, 2026
3a4e698
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 19, 2026
0bc1aab
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 20, 2026
83908d3
chore: merge origin/main (firewall v0.27.37 bump) and recompile lock …
Copilot Jul 20, 2026
93c71b4
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 20, 2026
187f854
fix(pr-sous-chef): restore behavioral contract strings removed by tok…
Copilot Jul 20, 2026
086fffb
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 20, 2026
6f6f62d
chore: merge origin/main and recompile lock files (12 new commits)
Copilot Jul 20, 2026
30e1ddf
Merge branch 'main' into copilot/multi-device-docs-testing-report-202…
github-actions[bot] Jul 20, 2026
d7fbf7b
Merge branch 'main' into copilot/multi-device-docs-testing-report-202…
github-actions[bot] Jul 20, 2026
f3b8815
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 20, 2026
bc56f31
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 20, 2026
b0cc975
Merge branch 'main' into copilot/multi-device-docs-testing-report-202…
github-actions[bot] Jul 21, 2026
c710eb9
fix: recompile smoke-call-workflow.lock.yml to pick up aw_context and…
Copilot Jul 21, 2026
6f4e5f7
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 21, 2026
5856276
Merge remote-tracking branch 'origin/main' into copilot/multi-device-…
Copilot Jul 21, 2026
87b5657
chore: merge origin/main (27 new commits: mcpg v0.4.3, eslint fixes, …
Copilot Jul 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/daily-multi-device-docs-tester.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 18 additions & 8 deletions .github/workflows/daily-multi-device-docs-tester.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,16 @@ pre-agent-steps:
run: |
cd "$EXPR_GITHUB_WORKSPACE/docs"
node ../scripts/ensure-docs-slide-pdf.js
- name: Configure Chrome sandbox
run: |
# The chrome-sandbox helper must be owned by root with mode 4755 (SUID) for Chrome
# to launch inside the agent container. The runner has mode 0777 by default.
if [ -f /opt/google/chrome/chrome-sandbox ]; then
sudo chmod 4755 /opt/google/chrome/chrome-sandbox
echo "chrome-sandbox configured (mode 4755)"
else
echo "chrome-sandbox not found — skipping"
fi
- name: Start docs server
env:
EXPR_GITHUB_RUN_ID: ${{ github.run_id }}
Expand All @@ -103,7 +113,7 @@ pre-agent-steps:
PID_FILE="/tmp/gh-aw/agent/docs-server-$EXPR_GITHUB_RUN_ID.pid"
cd "$EXPR_GITHUB_WORKSPACE/docs"
npm run build
nohup npm run preview -- --host 127.0.0.1 --port 4321 > "$LOG_FILE" 2>&1 &
nohup npm run preview -- --host 0.0.0.0 --port 4321 > "$LOG_FILE" 2>&1 &
PID=$!
echo $PID > "$PID_FILE"
echo "Server PID: $PID"
Expand Down Expand Up @@ -183,11 +193,11 @@ Start the documentation preview server and perform comprehensive multi-device te

## Step 1: Verify Server Availability

The workflow pre-agent steps already installed docs dependencies, built the docs site, and started the Astro preview server.
The workflow pre-agent steps already installed docs dependencies, built the docs site, and started the Astro preview server **bound to all interfaces on port 4321**.
Quickly verify it is reachable before testing:

```bash
curl -sf http://localhost:4321/gh-aw/ > /dev/null && echo "Docs server is ready"
curl -sf http://host.docker.internal:4321/gh-aw/ > /dev/null && echo "Docs server is ready"
```

## Step 2: Device Configuration
Expand All @@ -204,7 +214,7 @@ Test these device types based on input `${{ inputs.devices }}`:

Playwright is pre-installed as `@playwright/cli`. Use `playwright-cli <command>` in bash — no MCP tools or Docker container is involved:

- ✅ **Correct**: `playwright-cli browser_navigate --url "http://localhost:4321/gh-aw/"`
- ✅ **Correct**: `playwright-cli browser_navigate --url "http://host.docker.internal:4321/gh-aw/"`
- ✅ **Correct**: Use `playwright-cli browser_run_code --code "async (page) => { ... }"` for custom Playwright code
- ❌ **Incorrect**: Do NOT use `playwright-cli open` in this workflow (it is less reliable in CI than explicit `browser_*` commands)
- ❌ **Incorrect**: Do NOT try to `require('playwright')` or create standalone Node.js scripts
Expand All @@ -217,16 +227,16 @@ Use `waitUntil: 'domcontentloaded'` for navigation to keep checks fast and consi
```bash
playwright-cli browser_run_code --code "async (page) => {
await page.setViewportSize({ width: 390, height: 844 });
await page.goto('http://localhost:4321/gh-aw/', { waitUntil: 'domcontentloaded', timeout: 30000 });
await page.goto('http://host.docker.internal:4321/gh-aw/', { waitUntil: 'domcontentloaded', timeout: 30000 });
return { url: page.url(), title: await page.title() };
}"
```

- ✅ **Use `localhost` directly** — playwright-cli runs on the runner, so `localhost` reaches the dev server
- ❌ **Do NOT use bridge IP detection** — that is only needed in the deprecated MCP mode
- ✅ **Use `host.docker.internal`** — the agent runs inside a container; `host.docker.internal` reaches the docs server that was started in the pre-agent step on the host
- ❌ **Do NOT use `localhost`** — the container's loopback is isolated from the runner's loopback; `localhost:4321` will not be reachable

For each device viewport, use playwright-cli to:
- Set viewport size and navigate to `http://localhost:4321/gh-aw/`
- Set viewport size and navigate to `http://host.docker.internal:4321/gh-aw/`
- Take screenshots and run accessibility audits
- Test interactions (navigation, search, buttons)
- Check for layout issues (overflow, truncation, broken layouts)
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/smoke-call-workflow.lock.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading