Skip to content

Commit 2fd9ff5

Browse files
authored
chore: take screenshots of the modals encountered in E2E tests (#3614)
take screenshots of the modals encountered in E2E tests
1 parent 3b69f72 commit 2fd9ff5

20 files changed

+171
-52
lines changed

packages/compass-e2e-tests/helpers/commands/add-collection.ts

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { CompassBrowser } from '../compass-browser';
22
import * as Selectors from '../selectors';
33

4-
type AddCollectionOptions = {
4+
export type AddCollectionOptions = {
55
capped?: {
66
size: number;
77
};
@@ -32,7 +32,8 @@ type AddCollectionOptions = {
3232
export async function addCollection(
3333
browser: CompassBrowser,
3434
collectionName: string,
35-
options?: AddCollectionOptions
35+
collectionOptions?: AddCollectionOptions,
36+
screenshotPath?: string
3637
): Promise<void> {
3738
const createModalElement = await browser.$(Selectors.CreateCollectionModal);
3839
await createModalElement.waitForDisplayed();
@@ -42,28 +43,30 @@ export async function addCollection(
4243
);
4344
await collectionInput.setValue(collectionName);
4445

45-
if (options) {
46+
if (collectionOptions) {
4647
await browser.clickVisible(
4748
Selectors.CreateCollectionCollectionOptionsAccordion
4849
);
4950
}
5051

51-
if (options && options.capped) {
52+
if (collectionOptions && collectionOptions.capped) {
5253
await browser.clickVisible(Selectors.CreateCollectionCappedCheckboxLabel);
5354

5455
const sizeElement = await browser.$(
5556
Selectors.CreateCollectionCappedSizeInput
5657
);
5758
await sizeElement.waitForDisplayed();
58-
await sizeElement.setValue(options.capped.size.toString());
59+
await sizeElement.setValue(collectionOptions.capped.size.toString());
5960
}
6061

61-
if (options && options.customCollation) {
62+
if (collectionOptions && collectionOptions.customCollation) {
6263
await browser.clickVisible(
6364
Selectors.CreateCollectionCustomCollationCheckboxLabel
6465
);
6566

66-
for (const [key, value] of Object.entries(options.customCollation)) {
67+
for (const [key, value] of Object.entries(
68+
collectionOptions.customCollation
69+
)) {
6770
await browser.clickVisible(
6871
Selectors.createCollectionCustomCollationFieldButton(key)
6972
);
@@ -84,7 +87,7 @@ export async function addCollection(
8487
await localeButton.scrollIntoView();
8588
}
8689

87-
if (options && options.timeseries) {
90+
if (collectionOptions && collectionOptions.timeseries) {
8891
await browser.clickVisible(
8992
Selectors.CreateCollectionTimeseriesCheckboxLabel
9093
);
@@ -93,13 +96,13 @@ export async function addCollection(
9396
Selectors.CreateCollectionTimeseriesTimeField
9497
);
9598
await timeField.waitForDisplayed();
96-
await timeField.setValue(options.timeseries.timeField);
99+
await timeField.setValue(collectionOptions.timeseries.timeField);
97100

98101
const metaField = await browser.$(
99102
Selectors.CreateCollectionTimeseriesMetaField
100103
);
101104
await metaField.waitForDisplayed();
102-
await metaField.setValue(options.timeseries.metaField);
105+
await metaField.setValue(collectionOptions.timeseries.metaField);
103106

104107
await browser.clickVisible(
105108
Selectors.CreateCollectionTimeseriesGranularityButton
@@ -108,7 +111,9 @@ export async function addCollection(
108111
Selectors.CreateCollectionTimeseriesGranularityMenu
109112
);
110113
await menu.waitForDisplayed();
111-
const span = await menu.$(`span=${options.timeseries.granularity}`);
114+
const span = await menu.$(
115+
`span=${collectionOptions.timeseries.granularity}`
116+
);
112117
await span.waitForDisplayed();
113118
await span.click();
114119

@@ -117,11 +122,11 @@ export async function addCollection(
117122
);
118123
await expireField.waitForDisplayed();
119124
await expireField.setValue(
120-
options.timeseries.expireAfterSeconds.toString()
125+
collectionOptions.timeseries.expireAfterSeconds.toString()
121126
);
122127
}
123128

124-
if (options && options.clustered) {
129+
if (collectionOptions && collectionOptions.clustered) {
125130
await browser.clickVisible(
126131
Selectors.CreateCollectionClusteredCheckboxLabel
127132
);
@@ -130,23 +135,29 @@ export async function addCollection(
130135
Selectors.CreateCollectionClusteredNameField
131136
);
132137
await nameField.waitForDisplayed();
133-
await nameField.setValue(options.clustered.name);
138+
await nameField.setValue(collectionOptions.clustered.name);
134139

135140
const expireField = await browser.$(
136141
Selectors.CreateCollectionClusteredExpireAfterSeconds
137142
);
138143
await expireField.waitForDisplayed();
139-
await expireField.setValue(options.clustered.expireAfterSeconds.toString());
144+
await expireField.setValue(
145+
collectionOptions.clustered.expireAfterSeconds.toString()
146+
);
140147
}
141148

142-
if (options && options.encryptedFields) {
149+
if (collectionOptions && collectionOptions.encryptedFields) {
143150
await browser.clickVisible(Selectors.CreateCollectionFLE2CheckboxLabel);
144151
await browser.setAceValue(
145152
Selectors.CreateCollectionFLE2,
146-
options.encryptedFields
153+
collectionOptions.encryptedFields
147154
);
148155
}
149156

157+
if (screenshotPath) {
158+
await browser.screenshot(screenshotPath);
159+
}
160+
150161
await browser.clickVisible(Selectors.CreateCollectionCreateButton);
151162
await createModalElement.waitForDisplayed({ reverse: true });
152163
}

packages/compass-e2e-tests/helpers/commands/add-database.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import type { CompassBrowser } from '../compass-browser';
22
import * as Selectors from '../selectors';
33

4+
import type { AddCollectionOptions } from './add-collection';
5+
46
export async function addDatabase(
57
browser: CompassBrowser,
68
dbName: string,
7-
collectionName: string
8-
// TODO: options for capped collection, use custom collation and time-series
9+
collectionName: string,
10+
collectionOptions?: AddCollectionOptions,
11+
screenshotPath?: string
912
): Promise<void> {
1013
const createModalElement = await browser.$(Selectors.CreateDatabaseModal);
1114
await createModalElement.waitForDisplayed();
@@ -17,6 +20,11 @@ export async function addDatabase(
1720
await collectionInput.setValue(collectionName);
1821
const createButton = await browser.$(Selectors.CreateDatabaseCreateButton);
1922
await createButton.waitForEnabled();
23+
24+
if (screenshotPath) {
25+
await browser.screenshot(screenshotPath);
26+
}
27+
2028
await createButton.click();
2129
await createModalElement.waitForDisplayed({ reverse: true });
2230
}

packages/compass-e2e-tests/helpers/commands/close-settings-modal.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ export async function closeSettingsModal(
1111
const settingsModalElement = await browser.$(Selectors.SettingsModal);
1212

1313
await settingsModalElement.waitForDisplayed();
14+
await browser.screenshot('settings-modal.png');
15+
1416
await browser.clickVisible(Selectors.CloseSettingsModalButton);
1517
await settingsModalElement.waitForDisplayed({
1618
reverse: true,

packages/compass-e2e-tests/helpers/commands/close-welcome-modal.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export async function closeWelcomeModal(
99
}
1010

1111
const welcomeModalElement = await browser.$(Selectors.WelcomeModal);
12+
await browser.screenshot('welcome-modal.png');
1213

1314
await welcomeModalElement.waitForDisplayed();
1415
await browser.clickVisible(Selectors.CloseWelcomeModalButton);

packages/compass-e2e-tests/helpers/commands/drop-collection.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ export async function dropCollection(
1111
await confirmInput.setValue(collectionName);
1212
const confirmButton = await browser.$(Selectors.DropCollectionDropButton);
1313
await confirmButton.waitForEnabled();
14+
15+
await browser.screenshot('drop-collection-modal.png');
16+
1417
await confirmButton.click();
1518
await dropModalElement.waitForDisplayed({ reverse: true });
1619
}

packages/compass-e2e-tests/helpers/commands/drop-database.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ export async function dropDatabase(
1111
await confirmInput.setValue(dbName);
1212
const confirmButton = await browser.$(Selectors.DropDatabaseDropButton);
1313
await confirmButton.waitForEnabled();
14+
15+
await browser.screenshot('drop-database-modal.png');
16+
1417
await confirmButton.click();
1518
await dropModalElement.waitForDisplayed({ reverse: true });
1619
}

packages/compass-e2e-tests/helpers/commands/export-to-language.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ export async function exportToLanguage(
7676
text = await clipboard.read();
7777
}
7878

79+
await browser.screenshot('export-to-language-modal.png');
80+
7981
// close the modal again
8082
await browser.clickVisible(Selectors.ExportToLanguageCloseButton);
8183
await exportModal.waitForDisplayed({ reverse: true });

packages/compass-e2e-tests/helpers/commands/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,4 @@ export * from './select-favorite';
4545
export * from './select-connection-menu-item';
4646
export * from './open-settings-modal';
4747
export * from './wait-for-connection-result';
48+
export * from './screenshot';

packages/compass-e2e-tests/helpers/commands/save-favorite.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ export async function saveFavorite(
1717
expect(await browser.$(Selectors.FavoriteSaveButton).getText()).to.equal(
1818
'Save'
1919
);
20+
21+
await browser.screenshot('save-favorite-modal.png');
22+
2023
await browser.clickVisible(Selectors.FavoriteSaveButton);
2124
await browser.$(Selectors.FavoriteModal).waitForExist({ reverse: true });
2225
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import path from 'path';
2+
import type { CompassBrowser } from '../compass-browser';
3+
import { LOG_PATH } from '../compass';
4+
5+
export async function screenshot(
6+
browser: CompassBrowser,
7+
filename: string
8+
): Promise<void> {
9+
// Give animations a second. Hard to have a generic way to know if animations
10+
// are still in progress or not.
11+
await browser.pause(1000);
12+
await browser.saveScreenshot(path.join(LOG_PATH, 'screenshots', filename));
13+
}

0 commit comments

Comments
 (0)