Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
34 changes: 31 additions & 3 deletions .github/workflows/fix.agent.lock.yml

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

55 changes: 52 additions & 3 deletions .github/workflows/polypilot-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,15 @@ name: "PolyPilot Integration Test"
on:
workflow_dispatch:
inputs:
issue_number:
description: 'Issue number to analyze (optional)'
pr_number:
description: 'PR number to test (optional — posts results as comment)'
required: false
type: number
ref:
description: 'Git ref to build (branch or SHA). Defaults to main.'
required: false
type: string
default: ''
scenario:
description: 'Test scenario to run (smoke, full)'
required: false
Expand All @@ -32,6 +37,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.sha }}

- name: Setup .NET 10
uses: actions/setup-dotnet@v5
Expand Down Expand Up @@ -279,6 +286,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.sha }}

- name: Setup .NET 10
uses: actions/setup-dotnet@v5
Expand Down Expand Up @@ -555,6 +564,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.sha }}

- name: Setup .NET 10
uses: actions/setup-dotnet@v5
Expand Down Expand Up @@ -661,4 +672,42 @@ jobs:
run: |
$appPid = $env:APP_PID
if ($appPid) { Stop-Process -Id $appPid -Force -ErrorAction SilentlyContinue }
# CI trigger

# ─── Report Results to PR ────────────────────────────────────
report:
name: Report Integration Results
runs-on: ubuntu-latest
needs: [integration-linux, integration-maccatalyst, integration-windows]
if: always() && inputs.pr_number
permissions:
pull-requests: write
steps:
- name: Post results to PR
env:
GH_TOKEN: ${{ github.token }}
LINUX: ${{ needs.integration-linux.result }}
CATALYST: ${{ needs.integration-maccatalyst.result }}
WINDOWS: ${{ needs.integration-windows.result }}
PR: ${{ inputs.pr_number }}
run: |
if [ "$LINUX" = "success" ] && [ "$CATALYST" = "success" ] && [ "$WINDOWS" = "success" ]; then
STATUS="✅ All platforms passed"
else
STATUS="❌ Integration test failures"
fi

cat > /tmp/report.md << EOF
## 🧪 Integration Test Report — PR #${PR}

| Platform | Build | Launch | DevFlow | Smoke |
|----------|-------|--------|---------|-------|
| Linux/GTK (xvfb) | $([ "$LINUX" = "success" ] && echo "✅" || echo "❌") | $([ "$LINUX" = "success" ] && echo "✅" || echo "❌") | $([ "$LINUX" = "success" ] && echo "✅" || echo "⚠️") | $([ "$LINUX" = "success" ] && echo "✅" || echo "❌") |
| Mac Catalyst | $([ "$CATALYST" = "success" ] && echo "✅" || echo "❌") | — | — | — |
| Windows | $([ "$WINDOWS" = "success" ] && echo "✅" || echo "❌") | $([ "$WINDOWS" = "success" ] && echo "✅" || echo "❌") | $([ "$WINDOWS" = "success" ] && echo "⚠️" || echo "❌") | $([ "$WINDOWS" = "success" ] && echo "⚠️" || echo "❌") |

**${STATUS}**

[View full run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
EOF

gh pr comment "$PR" --body "$(cat /tmp/report.md)"
18 changes: 15 additions & 3 deletions .github/workflows/shared/fix-shared.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ safe-outputs:
max: 1
protected-files: fallback-to-issue
dispatch-workflow:
workflows: [verify-build]
workflows: [verify-build, polypilot-integration]
max: 1
create-pull-request-review-comment:
max: 30
Expand Down Expand Up @@ -219,9 +219,9 @@ If the initial review (Round 1) found **zero findings** and no fix commits were

**🚨 CRITICAL:** You MUST call at least one safe-output tool before finishing — either `add_comment` (if findings exist), `push-to-pull-request-branch` (if fixes were made), or `noop` (if clean). Failing to call any safe-output tool causes the workflow to report as failed.

## Step 5: Cross-Platform Verification
## Step 5: Cross-Platform Verification & Integration Tests

After fixes are pushed, dispatch the `verify-build` workflow to build and test on macOS and Windows:
After fixes are pushed, dispatch **both** verification workflows:

```
dispatch_workflow({
Expand All @@ -231,8 +231,20 @@ dispatch_workflow({
"ref": "<PR branch name>"
}
})

dispatch_workflow({
"workflow": "polypilot-integration.yml",
"inputs": {
"pr_number": "<PR number>",
"ref": "<PR branch name>",
"scenario": "smoke"
}
})
```

- **verify-build** — compiles Mac Catalyst + Windows + runs unit tests
- **polypilot-integration** — builds and launches the GTK app under xvfb, connects MauiDevFlow, runs UI smoke tests (visual tree, screenshots), and validates on Windows too. Posts results back to the PR.

**Only dispatch if fixes were pushed.** If the review found zero findings and no changes were made, skip this step.

## Rules
Expand Down
Loading