diff --git a/packages/compass-connections/src/components/end-of-life-connection-modal.tsx b/packages/compass-connections/src/components/end-of-life-connection-modal.tsx index 616f335ba10..dc8bf8d5d45 100644 --- a/packages/compass-connections/src/components/end-of-life-connection-modal.tsx +++ b/packages/compass-connections/src/components/end-of-life-connection-modal.tsx @@ -42,11 +42,12 @@ export function showEndOfLifeMongoDBWarningModal( Learn more from the MongoDB Lifecycle Schedules. ), + 'data-testid': 'end-of-life-connection-modal', }); } diff --git a/packages/compass-connections/src/stores/connections-store-redux.ts b/packages/compass-connections/src/stores/connections-store-redux.ts index 339f823cacf..68f3e9e3384 100644 --- a/packages/compass-connections/src/stores/connections-store-redux.ts +++ b/packages/compass-connections/src/stores/connections-store-redux.ts @@ -1823,13 +1823,14 @@ const connectWithOptions = ( .isGenuine === false ) { dispatch(showNonGenuineMongoDBWarningModal(connectionInfo.id)); - } else if (preferences.getPreferences().networkTraffic) { + } else { + const { networkTraffic } = preferences.getPreferences(); void dataService .instance() .then(async (instance) => { const { version } = instance.build; const latestEndOfLifeServerVersion = - await getLatestEndOfLifeServerVersion(); + await getLatestEndOfLifeServerVersion(networkTraffic); if (isEndOfLifeVersion(version, latestEndOfLifeServerVersion)) { dispatch( showEndOfLifeMongoDBWarningModal( diff --git a/packages/compass-connections/src/utils/end-of-life-server.ts b/packages/compass-connections/src/utils/end-of-life-server.ts index a73704b7f70..bd069796fec 100644 --- a/packages/compass-connections/src/utils/end-of-life-server.ts +++ b/packages/compass-connections/src/utils/end-of-life-server.ts @@ -13,7 +13,13 @@ const { let latestEndOfLifeServerVersion: Promise | null = null; -export async function getLatestEndOfLifeServerVersion(): Promise { +export async function getLatestEndOfLifeServerVersion( + allowNetworkRequests = true +): Promise { + if (!allowNetworkRequests) { + return FALLBACK_END_OF_LIFE_SERVER_VERSION; + } + if (!HADRON_AUTO_UPDATE_ENDPOINT) { log.debug( mongoLogId(1_001_000_356), @@ -68,7 +74,7 @@ export async function getLatestEndOfLifeServerVersion(): Promise { export function isEndOfLifeVersion( version: string, - latestEndOfLifeServerVersion: string + latestEndOfLifeServerVersion = FALLBACK_END_OF_LIFE_SERVER_VERSION ) { try { const coercedVersion = semverCoerce(version); diff --git a/packages/compass-e2e-tests/helpers/commands/connect.ts b/packages/compass-e2e-tests/helpers/commands/connect.ts index ce5bc3f3050..abb59154651 100644 --- a/packages/compass-e2e-tests/helpers/commands/connect.ts +++ b/packages/compass-e2e-tests/helpers/commands/connect.ts @@ -2,6 +2,7 @@ import { DEFAULT_CONNECTION_STRING_1, DEFAULT_CONNECTION_NAME_1, connectionNameFromString, + serverSatisfies, } from '../compass'; import type { CompassBrowser } from '../compass-browser'; import type { ConnectFormState } from '../connect-form-state'; @@ -33,6 +34,7 @@ export async function getConnectFormConnectionString( type ConnectionResultOptions = { connectionStatus?: 'success' | 'failure' | 'either'; timeout?: number; + dismissEndOfLifeModal?: boolean; }; type ConnectOptions = ConnectionResultOptions & { @@ -130,10 +132,22 @@ export async function doConnect( export async function waitForConnectionResult( browser: CompassBrowser, connectionName: string, - { connectionStatus = 'success', timeout }: ConnectionResultOptions = {} + { + connectionStatus = 'success', + timeout, + dismissEndOfLifeModal = serverSatisfies('<=4.4'), + }: ConnectionResultOptions = {} ): Promise { const waitOptions = typeof timeout !== 'undefined' ? { timeout } : undefined; + if (dismissEndOfLifeModal) { + await browser.$(Selectors.EndOfLifeConnectionModal).waitForDisplayed(); + await browser.clickVisible(Selectors.EndOfLifeConnectionModalConfirmButton); + await browser + .$(Selectors.EndOfLifeConnectionModal) + .waitForDisplayed({ reverse: true }); + } + if ( (await browser.$(Selectors.SidebarFilterInput).isDisplayed()) && (await browser diff --git a/packages/compass-e2e-tests/helpers/selectors.ts b/packages/compass-e2e-tests/helpers/selectors.ts index b53a0242a64..a1e970cebd6 100644 --- a/packages/compass-e2e-tests/helpers/selectors.ts +++ b/packages/compass-e2e-tests/helpers/selectors.ts @@ -231,6 +231,11 @@ export const ConnectionModalCloseButton = `${ConnectionModal} [aria-label="Close export const ConnectionModalConnectButton = '[data-testid="connect-button"]'; export const ConnectionModalSaveButton = '[data-testid="save-button"]'; +// End of life connection modal +export const EndOfLifeConnectionModal = + '[data-testid="end-of-life-connection-modal"]'; +export const EndOfLifeConnectionModalConfirmButton = `${EndOfLifeConnectionModal} [data-testid="lg-confirmation_modal-footer-confirm_button"]`; + // Connection process toast export const connectionToastById = (connectionId: string) => { return `[data-testid="toast-connection-status--${connectionId}"]`; diff --git a/packages/compass-e2e-tests/tests/connection.test.ts b/packages/compass-e2e-tests/tests/connection.test.ts index 542ab573466..a326d863da8 100644 --- a/packages/compass-e2e-tests/tests/connection.test.ts +++ b/packages/compass-e2e-tests/tests/connection.test.ts @@ -306,6 +306,7 @@ describe('Connection string', function () { // connect await browser.connectWithConnectionString(`${protocol}://a:b@${url}`, { connectionStatus: 'failure', + dismissEndOfLifeModal: false, }); // check the error