Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
f8357e7
agentHost: build every remote connection through a registered factory
connor4312 Aug 31, 2026
95bb5d3
Merge remote-tracking branch 'origin/main' into connor4312/agent-host…
connor4312 Aug 31, 2026
94db63f
agentHost: stop remote connect attempts from piling up
connor4312 Aug 31, 2026
1c1a412
sessions: give every remote host kind its own provider owner
connor4312 Aug 31, 2026
ab3de3e
sessions: make removing a tunnel from the picker stick
connor4312 Aug 31, 2026
a2379ac
sessions: drop the persisted entry before disconnecting SSH and WSL h…
connor4312 Aug 31, 2026
ec7a047
cli: reap orphaned staging directories and satisfy clippy
connor4312 Aug 31, 2026
d62f879
agentHost: address review feedback on remote connection factories
connor4312 Aug 31, 2026
eb84d81
Enable custom glyphs in auxiliary terminals (#333706)
anthonykim1 Sep 1, 2026
aaa6261
agentHost: keep host-key denial identifiable while terminal
connor4312 Sep 1, 2026
1d88dcf
Fix missing changes for migrated legacy Copilot CLI sessions (#333710)
vijayupadya Sep 1, 2026
cf3079e
ci: Split Electron unit and integration tests (#333662)
dmitrivMS Sep 1, 2026
214e65a
agentHost: fix regressions found in review
connor4312 Sep 1, 2026
23a3a95
Merge pull request #333655 from microsoft/connor4312/agent-host-conne…
connor4312 Sep 1, 2026
e8423c4
ci: Run Copilot static checks once (#333654)
dmitrivMS Sep 1, 2026
3e33b21
sessions: Avoid resolving canceled Changes editor inputs (#333647)
benibenj Sep 1, 2026
9b8b69a
chat: remove unused inline edits displayLine setting (#333649)
dmitrivMS Sep 1, 2026
494b970
Fix shallow merge-base handling for component fixtures
hediet Aug 31, 2026
d6fff64
sessions: Keep recently updated sessions in Recent (#333734)
benibenj Sep 1, 2026
c88fff4
ci: Limit test runtime downloads (#333687)
dmitrivMS Sep 1, 2026
e6094c9
Add GrepResultService and RegionContextProviderService implementation…
dbaeumer Sep 1, 2026
9e59633
[cherry-pick] Avoid Agent Host session listing starvation (#333646)
vs-code-engineering[bot] Sep 1, 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
14 changes: 9 additions & 5 deletions .github/workflows/component-fixtures.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ jobs:
with:
# Need enough history for the merge-base lookup below to succeed even
# when the target branch has advanced since the PR was opened. Full
# clone would be wasteful for this large repo, so cap at 50.
fetch-depth: 50
# clone would be wasteful for this large repo, so cap at 150.
fetch-depth: 150

- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
Expand Down Expand Up @@ -184,8 +184,11 @@ jobs:
if [ "${{ github.event_name }}" = "pull_request" ]; then
# For PRs, diff against the merge-base with the target branch.
TARGET_REF="origin/$BASE_REF"
git fetch --no-tags --depth=50 origin "$BASE_REF"
BASE_SHA=$(git merge-base "$EVENT_SHA" "$TARGET_REF")
git fetch --no-tags --depth=150 origin "$BASE_REF"
if ! BASE_SHA=$(git merge-base "$EVENT_SHA" "$TARGET_REF"); then
echo "::warning::Unable to find a merge base between $EVENT_SHA and $TARGET_REF. The depth-150 shallow history may not contain their common ancestor; skipping screenshot comparison."
exit 0
fi
else
# For push events, diff against the parent commit.
BASE_SHA=$(git rev-parse "$EVENT_SHA^")
Expand Down Expand Up @@ -229,6 +232,7 @@ jobs:

- name: Fetch base commit manifest
id: base_manifest
if: steps.base.outputs.base_sha != ''
env:
BASE_SHA: ${{ steps.base.outputs.base_sha }}
run: |
Expand All @@ -250,7 +254,7 @@ jobs:

- name: Diff screenshots
id: diff
if: always()
if: always() && steps.base.outputs.base_sha != ''
run: |
node build/lib/screenshotDiffReport.ts \
https://hediet-screenshots.azurewebsites.net \
Expand Down
52 changes: 41 additions & 11 deletions .github/workflows/pr-darwin-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ on:
remote_tests:
type: boolean
default: false
unit_and_integration_tests:
unit_tests:
type: boolean
default: true
integration_tests:
type: boolean
default: true
smoke_tests:
Expand All @@ -25,7 +28,7 @@ jobs:
name: ${{ inputs.job_name }}
runs-on: macos-26-xlarge
env:
ARTIFACT_NAME: ${{ (inputs.electron_tests && 'electron') || (inputs.browser_tests && 'browser') || (inputs.remote_tests && 'remote') || 'unknown' }}${{ (!inputs.unit_and_integration_tests && inputs.smoke_tests) && '-smoke' || '' }}
ARTIFACT_NAME: ${{ (inputs.electron_tests && 'electron') || (inputs.browser_tests && 'browser') || (inputs.remote_tests && 'remote') || 'unknown' }}${{ (inputs.unit_tests && !inputs.integration_tests && '-unit') || (!inputs.unit_tests && !inputs.integration_tests && inputs.smoke_tests && '-smoke') || '' }}
NPM_ARCH: arm64
VSCODE_ARCH: arm64
steps:
Expand All @@ -35,7 +38,7 @@ jobs:
lfs: true

- name: Detect Agent Host E2E changes
if: ${{ inputs.electron_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.electron_tests && inputs.integration_tests }}
id: agent-host-e2e-changes
uses: ./.github/actions/detect-agent-host-e2e-changes
with:
Expand Down Expand Up @@ -104,12 +107,13 @@ jobs:
- name: Transpile client and extensions
run: npm run gulp transpile-client-esbuild transpile-extensions

- name: Download Electron and Playwright
- name: Download Electron
if: ${{ inputs.electron_tests || inputs.remote_tests }}
run: |
set -e

for i in {1..3}; do # try 3 times (matching retryCountOnTaskFailure: 3)
if npm exec -- npm-run-all2 -lp "electron ${{ env.VSCODE_ARCH }}" "playwright-install"; then
if npm run electron -- ${{ env.VSCODE_ARCH }}; then
echo "Download successful on attempt $i"
break
fi
Expand All @@ -125,26 +129,52 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Compile browser integration test runner
if: ${{ inputs.browser_tests && inputs.integration_tests }}
working-directory: test/integration/browser
run: npm run compile

- name: Install Playwright Chromium and WebKit
if: ${{ inputs.browser_tests }}
run: |
set -e

for i in {1..3}; do
if npm exec -- playwright install --only-shell chromium webkit; then
echo "Install successful on attempt $i"
break
fi

if [ $i -eq 3 ]; then
echo "Install failed after 3 attempts" >&2
exit 1
fi

echo "Install failed on attempt $i, retrying..."
sleep 5
done

- name: 🧪 Run unit tests (Electron)
if: ${{ inputs.electron_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.electron_tests && inputs.unit_tests }}
timeout-minutes: 15
run: ./scripts/test.sh --tfs "Unit Tests"
env:
VSCODE_SKIP_PRELAUNCH: '1'

- name: 🧪 Run unit tests (node.js)
if: ${{ inputs.electron_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.electron_tests && inputs.unit_tests }}
timeout-minutes: 15
run: npm run test-node

- name: 🧪 Run unit tests (Browser, Webkit)
if: ${{ inputs.browser_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.browser_tests && inputs.unit_tests }}
timeout-minutes: 30
run: npm run test-browser-no-install -- --browser webkit --tfs "Browser Unit Tests"
env:
DEBUG: "*browser*"

- name: Compile extensions for integration tests & smoke tests
if: ${{ inputs.integration_tests || inputs.smoke_tests }}
run: |
set -e
npm run gulp \
Expand All @@ -167,20 +197,20 @@ jobs:
compile-extension:vscode-test-resolver

- name: 🧪 Run integration tests (Electron)
if: ${{ inputs.electron_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.electron_tests && inputs.integration_tests }}
timeout-minutes: 20
run: ./scripts/test-integration.sh --tfs "Integration Tests"
env:
VSCODE_SKIP_AGENT_HOST_E2E: ${{ steps.agent-host-e2e-changes.outputs.affected == 'false' && '1' || '0' }}
VSCODE_SKIP_PRELAUNCH: '1'

- name: 🧪 Run integration tests (Browser, Webkit)
if: ${{ inputs.browser_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.browser_tests && inputs.integration_tests }}
timeout-minutes: 20
run: ./scripts/test-web-integration.sh --browser webkit

- name: 🧪 Run integration tests (Remote)
if: ${{ inputs.remote_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.remote_tests && inputs.integration_tests }}
timeout-minutes: 20
run: ./scripts/test-remote-integration.sh
env:
Expand Down
52 changes: 41 additions & 11 deletions .github/workflows/pr-linux-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ on:
remote_tests:
type: boolean
default: false
unit_and_integration_tests:
unit_tests:
type: boolean
default: true
integration_tests:
type: boolean
default: true
smoke_tests:
Expand All @@ -25,7 +28,7 @@ jobs:
name: ${{ inputs.job_name }}
runs-on: ubuntu-24.04
env:
ARTIFACT_NAME: ${{ (inputs.electron_tests && 'electron') || (inputs.browser_tests && 'browser') || (inputs.remote_tests && 'remote') || 'unknown' }}${{ (!inputs.unit_and_integration_tests && inputs.smoke_tests) && '-smoke' || '' }}
ARTIFACT_NAME: ${{ (inputs.electron_tests && 'electron') || (inputs.browser_tests && 'browser') || (inputs.remote_tests && 'remote') || 'unknown' }}${{ (inputs.unit_tests && !inputs.integration_tests && '-unit') || (!inputs.unit_tests && !inputs.integration_tests && inputs.smoke_tests && '-smoke') || '' }}
NPM_ARCH: x64
VSCODE_ARCH: x64
steps:
Expand All @@ -35,7 +38,7 @@ jobs:
lfs: true

- name: Detect Agent Host E2E changes
if: ${{ inputs.electron_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.electron_tests && inputs.integration_tests }}
id: agent-host-e2e-changes
uses: ./.github/actions/detect-agent-host-e2e-changes
with:
Expand Down Expand Up @@ -304,12 +307,13 @@ jobs:
- name: Transpile client and extensions
run: npm run gulp transpile-client-esbuild transpile-extensions

- name: Download Electron and Playwright
- name: Download Electron
if: ${{ inputs.electron_tests || inputs.remote_tests }}
run: |
set -e

for i in {1..3}; do # try 3 times (matching retryCountOnTaskFailure: 3)
if npm exec -- npm-run-all2 -lp "electron ${{ env.VSCODE_ARCH }}" "playwright-install"; then
if npm run electron -- ${{ env.VSCODE_ARCH }}; then
echo "Download successful on attempt $i"
break
fi
Expand All @@ -325,27 +329,53 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Compile browser integration test runner
if: ${{ inputs.browser_tests && inputs.integration_tests }}
working-directory: test/integration/browser
run: npm run compile

- name: Install Playwright Chromium
if: ${{ inputs.browser_tests }}
run: |
set -e

for i in {1..3}; do
if npm exec -- playwright install --only-shell chromium; then
echo "Install successful on attempt $i"
break
fi

if [ $i -eq 3 ]; then
echo "Install failed after 3 attempts" >&2
exit 1
fi

echo "Install failed on attempt $i, retrying..."
sleep 5
done

- name: 🧪 Run unit tests (Electron)
if: ${{ inputs.electron_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.electron_tests && inputs.unit_tests }}
timeout-minutes: 15
run: ./scripts/test.sh --tfs "Unit Tests"
env:
DISPLAY: ":10"
VSCODE_SKIP_PRELAUNCH: '1'

- name: 🧪 Run unit tests (node.js)
if: ${{ inputs.electron_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.electron_tests && inputs.unit_tests }}
timeout-minutes: 15
run: npm run test-node

- name: 🧪 Run unit tests (Browser, Chromium)
if: ${{ inputs.browser_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.browser_tests && inputs.unit_tests }}
timeout-minutes: 30
run: npm run test-browser-no-install -- --browser chromium --tfs "Browser Unit Tests"
env:
DEBUG: "*browser*"

- name: Compile extensions for integration tests & smoke tests
if: ${{ inputs.integration_tests || inputs.smoke_tests }}
run: |
set -e
npm run gulp \
Expand All @@ -368,7 +398,7 @@ jobs:
compile-extension:vscode-test-resolver

- name: 🧪 Run integration tests (Electron)
if: ${{ inputs.electron_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.electron_tests && inputs.integration_tests }}
timeout-minutes: 20
run: ./scripts/test-integration.sh --tfs "Integration Tests"
env:
Expand All @@ -377,12 +407,12 @@ jobs:
VSCODE_SKIP_PRELAUNCH: '1'

- name: 🧪 Run integration tests (Browser, Chromium)
if: ${{ inputs.browser_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.browser_tests && inputs.integration_tests }}
timeout-minutes: 20
run: ./scripts/test-web-integration.sh --browser chromium

- name: 🧪 Run integration tests (Remote)
if: ${{ inputs.remote_tests && inputs.unit_and_integration_tests }}
if: ${{ inputs.remote_tests && inputs.integration_tests }}
timeout-minutes: 20
run: ./scripts/test-remote-integration.sh
env:
Expand Down
Loading
Loading