fix(composio): show waiting state before opening browser (#2406)

This commit is contained in:
Aqil Aziz
2026-05-23 00:58:21 -07:00
committed by GitHub
parent ae164f58a7
commit 2f913a248c
2 changed files with 22 additions and 1 deletions
@@ -292,6 +292,23 @@ describe('<ComposioConnectModal>', () => {
);
});
});
it('shows the waiting state even when the OS browser opener rejects', async () => {
vi.mocked(composioApi.authorize).mockResolvedValue({
connectUrl: 'https://hosted.composio.dev/test-token',
connectionId: '',
});
vi.mocked(composioApi.listConnections).mockResolvedValue({ connections: [] });
vi.mocked(openUrlModule.openUrl).mockRejectedValueOnce(new Error('opener unavailable'));
render(<ComposioConnectModal toolkit={mockToolkit} onClose={() => {}} />);
fireEvent.click(screen.getByRole('button', { name: /Connect Gmail/ }));
expect(await screen.findByRole('button', { name: /Reopen browser/i })).toBeInTheDocument();
expect(screen.getByText(/Waiting for Gmail/i)).toBeInTheDocument();
expect(screen.queryByText(/Something went wrong/i)).not.toBeInTheDocument();
});
});
});
@@ -374,9 +374,13 @@ export default function ComposioConnectModal({
resp.connectionId
);
setConnectUrl(resp.connectUrl);
await openUrl(resp.connectUrl);
setPhase('waiting');
startPolling();
try {
await openUrl(resp.connectUrl);
} catch (openErr) {
console.warn('[composio][authorize] failed to open connectUrl:', openErr);
}
} catch (err) {
console.error(
'[composio][authorize] failed toolkit=%s slug_check=%s',