Skip to content

Commit dee83d9

Browse files
committed
Add a test
1 parent 6a9ff1a commit dee83d9

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

packages/compass-e2e-tests/helpers/selectors.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,8 @@ export const Single = {
282282
export const Multiple = {
283283
ConnectionsTitle: '[data-testid="connections-header"]',
284284
ConnectButton: '[data-action="connection-connect"]',
285+
ConnectInNewWindowButton: '[data-action="connection-connect-in-new-window"]',
286+
ConnectDropdownButton: '[aria-label="see more connection options"]',
285287
SidebarNewConnectionButton: '[data-action="add-new-connection"]',
286288
ConnectionMenu: '[data-testid="sidebar-navigation-item-actions"]',
287289
CreateDatabaseButton:
@@ -406,6 +408,14 @@ export const sidebarConnectionButton = (connectionName: string): string => {
406408
return `${sidebarConnection(connectionName)} ${Multiple.ConnectButton}`;
407409
};
408410

411+
export const sidebarConnectionDropdownButton = (
412+
connectionName: string
413+
): string => {
414+
return `${sidebarConnection(connectionName)} ${
415+
Multiple.ConnectDropdownButton
416+
}`;
417+
};
418+
409419
export const sidebarConnectionActionButton = (
410420
connectionName: string,
411421
selector: string

packages/compass-e2e-tests/tests/connection.test.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
import type { Compass } from '../helpers/compass';
2121
import type { ConnectFormState } from '../helpers/connect-form-state';
2222
import * as Selectors from '../helpers/selectors';
23+
import { DEFAULT_CONNECTION_NAMES } from '../helpers/test-runner-context';
2324

2425
async function disconnect(browser: CompassBrowser) {
2526
try {
@@ -643,6 +644,50 @@ describe('Connection string', function () {
643644
});
644645
});
645646

647+
describe('Connect in a new window', () => {
648+
let compass: Compass;
649+
let browser: CompassBrowser;
650+
651+
before(async function () {
652+
compass = await init(this.test?.fullTitle(), {
653+
firstRun: false,
654+
});
655+
browser = compass.browser;
656+
await browser.setupDefaultConnections();
657+
});
658+
659+
after(async function () {
660+
await cleanup(compass);
661+
});
662+
663+
it('can connect in new window', async function (this) {
664+
skipForWeb(this, 'connecting in new window is not supported on web');
665+
const connectionName = DEFAULT_CONNECTION_NAMES[0];
666+
const connectionSelector = Selectors.sidebarConnection(connectionName);
667+
await browser.hover(connectionSelector);
668+
669+
expect((await browser.getWindowHandles()).length).equals(1);
670+
671+
const connectionElement = browser.$(connectionSelector);
672+
await browser.clickVisible(
673+
connectionElement.$(Selectors.Multiple.ConnectDropdownButton)
674+
);
675+
await browser.clickVisible(
676+
connectionElement.$(Selectors.Multiple.ConnectInNewWindowButton)
677+
);
678+
679+
const windowsAfter = await browser.getWindowHandles();
680+
expect(windowsAfter.length).equals(2);
681+
const [, newWindowHandle] = windowsAfter;
682+
await browser.switchToWindow(newWindowHandle);
683+
await browser.waitForConnectionResult(connectionName, {
684+
connectionStatus: 'success',
685+
});
686+
});
687+
688+
// TODO: Add a test for we to ensure the SplitButton isn't visible on Web
689+
});
690+
646691
describe('Connection form', function () {
647692
let compass: Compass;
648693
let browser: CompassBrowser;

0 commit comments

Comments
 (0)