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