Skip to content

Commit 5aac0f1

Browse files
committed
test(session): add retry logic for plot tests to avoid timeouts on Windows
1 parent b9fb9c2 commit 5aac0f1

1 file changed

Lines changed: 27 additions & 10 deletions

File tree

‎src/test/suite/session.test.ts‎

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,21 @@ suite('Session Communication', () => {
154154
assert.ok(createWebviewPanelSpy.calledWith('r.standardPlot'), 'r.standardPlot should be triggered for svglite');
155155

156156
assert.ok(session.activeSession, 'activeSession should be defined');
157-
const svgliteResp = await session.sessionRequest(session.activeSession.server, {
158-
method: 'plot_latest',
159-
params: { width: 800, height: 600, format: 'svglite' }
160-
}) as { data?: string, format?: string, error?: unknown };
161157

162-
assert.ok(svgliteResp.data, 'svglite data should be returned');
158+
let svgliteResp: { data?: string, format?: string, error?: unknown } | undefined;
159+
await waitFor(async () => {
160+
try {
161+
svgliteResp = await session.sessionRequest(session.activeSession!.server, {
162+
method: 'plot_latest',
163+
params: { width: 800, height: 600, format: 'svglite' }
164+
}) as { data?: string, format?: string, error?: unknown };
165+
return svgliteResp && svgliteResp.data;
166+
} catch (e) {
167+
return false;
168+
}
169+
}, 15000, 500);
170+
171+
assert.ok(svgliteResp && svgliteResp.data, 'svglite data should be returned');
163172
assert.strictEqual(svgliteResp.format, 'svglite', 'format should be svglite');
164173

165174
// Reset history to ensure we track the next plot if we were to recreate the panel
@@ -177,12 +186,20 @@ suite('Session Communication', () => {
177186
await waitFor(() => createWebviewPanelSpy.calledWith('r.standardPlot'), 10000, 200);
178187
assert.ok(createWebviewPanelSpy.calledWith('r.standardPlot'), 'r.standardPlot should be active for png');
179188

180-
const pngResp = await session.sessionRequest(session.activeSession.server, {
181-
method: 'plot_latest',
182-
params: { width: 800, height: 600, format: 'png' }
183-
}) as { data?: string, format?: string };
189+
let pngResp: { data?: string, format?: string } | undefined;
190+
await waitFor(async () => {
191+
try {
192+
pngResp = await session.sessionRequest(session.activeSession!.server, {
193+
method: 'plot_latest',
194+
params: { width: 800, height: 600, format: 'png' }
195+
}) as { data?: string, format?: string };
196+
return pngResp && pngResp.data;
197+
} catch (e) {
198+
return false;
199+
}
200+
}, 15000, 500);
184201

185-
assert.ok(pngResp.data, 'png data should be returned');
202+
assert.ok(pngResp && pngResp.data, 'png data should be returned');
186203
assert.strictEqual(pngResp.format, 'png', 'format should be png');
187204

188205
// 3. Test View() -> dataview

0 commit comments

Comments
 (0)