diff --git a/packages/insomnia-smoke-test/playwright/test.ts b/packages/insomnia-smoke-test/playwright/test.ts index 06e3bd5a1a..d643d318b1 100644 --- a/packages/insomnia-smoke-test/playwright/test.ts +++ b/packages/insomnia-smoke-test/playwright/test.ts @@ -41,6 +41,7 @@ interface EnvOptions { INSOMNIA_VAULT_KEY: string; INSOMNIA_VAULT_SALT: string; INSOMNIA_VAULT_SRP_SECRET: string; + KONNECT_API_URL: string; } interface AESMessage { @@ -95,6 +96,7 @@ export const test = baseTest.extend<{ INSOMNIA_VAULT_KEY: userConfig.vaultKey || '', INSOMNIA_VAULT_SALT: userConfig.vaultSalt || '', INSOMNIA_VAULT_SRP_SECRET: userConfig.vaultSrpSecret || '', + KONNECT_API_URL: echoServer, ...(userConfig.session ? { INSOMNIA_SESSION: JSON.stringify(userConfig.session) } : {}), }; const { ELECTRON_RUN_AS_NODE: _ignored, ...launchEnv } = process.env; diff --git a/packages/insomnia-smoke-test/server/insomnia-api.ts b/packages/insomnia-smoke-test/server/insomnia-api.ts index 7475854130..86bb85a815 100644 --- a/packages/insomnia-smoke-test/server/insomnia-api.ts +++ b/packages/insomnia-smoke-test/server/insomnia-api.ts @@ -653,4 +653,8 @@ export default function setup(app: Application) { isAllowed: true, }); }); + + app.get('/v2/control-planes', (_req, res) => { + res.status(200).json({ data: [] }); + }); } diff --git a/packages/insomnia-smoke-test/tests/smoke/konnect.test.ts b/packages/insomnia-smoke-test/tests/smoke/konnect.test.ts new file mode 100644 index 0000000000..172592bd35 --- /dev/null +++ b/packages/insomnia-smoke-test/tests/smoke/konnect.test.ts @@ -0,0 +1,40 @@ +import { expect } from '@playwright/test'; + +import { test } from '../../playwright/test'; + +test.describe('Konnect sidebar tab', () => { + test('shows intro card without a PAT, configure it, then sync', async ({ page, insomnia }) => { + await page.getByTestId('sidebar-tab-konnect').click(); + await expect.soft(page.getByText('Auto-sync your gateway service routes')).toBeVisible(); + + await page.getByRole('button', { name: 'Configure' }).click(); + await page.getByLabel('Personal Access Token').fill('kpat_test'); + await page.getByRole('button', { name: 'Connect & Sync' }).click(); + await expect.soft(page.getByText('Connected')).toBeVisible(); + await page.getByRole('button', { name: 'Close' }).click(); + + await expect.soft(page.getByRole('button', { name: 'Sync Konnect' })).toBeVisible(); + + await page.getByTestId('sidebar-tab-projects').click(); + await expect.soft(page.getByRole('button', { name: 'Create new Project' })).toBeVisible(); + }); + + test.describe('with konnectSync feature flag disabled', () => { + test.beforeEach(async ({ request }) => { + await request.post('http://127.0.0.1:4010/v1/test-utils/organizations/features', { + data: { features: { gitSync: { enabled: true }, konnectSync: { enabled: false } } }, + }); + }); + + test.afterEach(async ({ request }) => { + await request.post('http://127.0.0.1:4010/v1/test-utils/organizations/features', { + data: { features: { gitSync: { enabled: true }, konnectSync: { enabled: true } } }, + }); + }); + + test('hides the Konnect tab', async ({ page }) => { + await page.reload(); + await expect.soft(page.getByTestId('sidebar-tab-konnect')).toBeHidden(); + }); + }); +}); diff --git a/packages/insomnia/src/ui/components/modals/konnect-settings-modal.tsx b/packages/insomnia/src/ui/components/modals/konnect-settings-modal.tsx index 9e338d158e..4cbb489fc2 100644 --- a/packages/insomnia/src/ui/components/modals/konnect-settings-modal.tsx +++ b/packages/insomnia/src/ui/components/modals/konnect-settings-modal.tsx @@ -114,6 +114,7 @@ export const KonnectSettingsModal = ({ {showDisconnectConfirm ? 'Disconnect Kong Konnect?' : 'Kong Konnect settings'}