Skip to content

Commit 2c4ae98

Browse files
committed
Stabilize release and Windows transport CI
1 parent d4c5f7b commit 2c4ae98

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

playwright.release.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { defineConfig } from '@playwright/test';
22

33
export default defineConfig({
44
testDir: './tests/e2e',
5+
workers: 1,
56
use: {
67
baseURL: 'http://127.0.0.1:4173'
78
},

tests/e2e/transport.spec.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ test.describe('workspace transport baseline', () => {
116116
});
117117
expect(Object.values(baseline.initialCounts).every((count) => count >= 1)).toBe(true);
118118
expect(baseline.countsBeforeNextPoll).toEqual(baseline.initialCounts);
119-
expect(baseline.countsAfterNextPoll).toEqual(incrementCounts(baseline.initialCounts));
119+
expectPollCountsToAdvanceFrom(baseline.countsAfterNextPoll, baseline.initialCounts);
120120
});
121121

122122
test('terminal and agent streams still arrive over /ws', async ({ page }) => {
@@ -169,7 +169,7 @@ test.describe('workspace transport baseline', () => {
169169
const baseline = await observeGitIndexInvalidationBaseline(page);
170170

171171
expect(baseline.countsAfterGitAdd).toBeGreaterThan(baseline.countsAfterFileWrite);
172-
expect(baseline.workspacePath).toBe(WORKSPACE_PATH);
172+
expect(normalizePathForComparison(baseline.workspacePath)).toBe(normalizePathForComparison(WORKSPACE_PATH));
173173
});
174174
});
175175

@@ -184,7 +184,7 @@ async function observePollingBaseline(page: Page): Promise<PollingBaseline> {
184184

185185
await page.waitForTimeout(3000);
186186
const countsBeforeNextPoll = snapshotCounts(probe.counts);
187-
await waitForCounts(probe.counts, incrementCounts(initialCounts));
187+
await waitForCountsAtLeast(probe.counts, incrementCounts(initialCounts));
188188
const countsAfterNextPoll = snapshotCounts(probe.counts);
189189

190190
return {
@@ -608,6 +608,13 @@ function snapshotCounts(counts: PollCounts): PollCounts {
608608
};
609609
}
610610

611+
function expectPollCountsToAdvanceFrom(actual: PollCounts, baseline: PollCounts) {
612+
expect(actual.git_status).toBeGreaterThan(baseline.git_status);
613+
expect(actual.git_changes).toBeGreaterThan(baseline.git_changes);
614+
expect(actual.worktree_list).toBeGreaterThan(baseline.worktree_list);
615+
expect(actual.workspace_tree).toBeGreaterThan(baseline.workspace_tree);
616+
}
617+
611618
function rpcCommand(url: string) {
612619
return url.split('/api/rpc/')[1]?.split('?')[0] ?? '';
613620
}
@@ -620,14 +627,18 @@ function isWindowsNativeTarget(target: WorkspaceHandle['target']) {
620627
return process.platform === 'win32' && target.type === 'native';
621628
}
622629

630+
function normalizePathForComparison(value: string) {
631+
return value.replaceAll('\\', '/').replace(/\/+$/u, '').toLowerCase();
632+
}
633+
623634
function buildTerminalProbeInput(target: WorkspaceHandle['target']) {
624635
return isWindowsNativeTarget(target)
625636
? 'echo transport-terminal\r'
626637
: 'printf "transport-terminal\\n"\r';
627638
}
628639

629640
function buildAgentProbeCommand(target: WorkspaceHandle['target']) {
630-
return isWindowsNativeTarget(target) ? 'findstr "^"' : 'cat';
641+
return isWindowsNativeTarget(target) ? 'more' : 'cat';
631642
}
632643

633644
function countTrackedSockets(tracker: TransportTrackerSnapshot, fragment: string) {

0 commit comments

Comments
 (0)