-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
page-explorer.spec.js
78 lines (62 loc) · 3.01 KB
/
page-explorer.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
* This file holds end-to-end tests for the Product Explorer page.
* We use UTAM and WebdriverIO to run UI tests.
*/
import ProductFilter from '../../../pageObjects/productFilter';
import ProductTileList from '../../../pageObjects/productTileList';
import ProductCard from '../../../pageObjects/productCard';
import ProductExplorerPage from '../../../pageObjects/productExplorerPage';
import { logInSalesforce } from './utam-helper';
const PAGINATION_ALL_ITEMS = '16 items • page 1 of 2';
const PAGINATION_FILTERED_ITEMS = '4 items • page 1 of 1';
const SELECTION_EMPTY = 'Select a product to see details';
const RECORD_PAGE_URL = /lightning\/r\/Product__c\/[a-z0-9]{18}\/view/i;
describe('ProductExplorer', () => {
let domDocument;
beforeAll(async () => {
domDocument = await logInSalesforce();
});
it('displays, filters and selects product from list', async () => {
// Wait for home page to load
const page = await utam.load(ProductExplorerPage);
// Click 'Product Explorer' in app navigation menu and wait for URL navigation
const appNav = await page.getAppNav();
const appNavBar = await appNav.getAppNavBar();
const navItem = await appNavBar.getNavItem('Product Explorer');
await navItem.clickAndWaitForUrl('lightning/n/Product_Explorer');
// Wait for flexipage to load
await page.waitForFlexipage();
// Get page components from page template regions
const leftComponent = await page.getLeftComponent();
const productFilter = await leftComponent.getContent(ProductFilter);
const centerComponent = await page.getCenterComponent();
const productTileList =
await centerComponent.getContent(ProductTileList);
const rightComponent = await page.getRightComponent();
const productCard = await rightComponent.getContent(ProductCard);
// Check default pagination info in product tile list
const pageInfo = await productTileList.getPaginationInfo();
expect(pageInfo).toBe(PAGINATION_ALL_ITEMS);
// Check default empty selection in product card
const productCardBodyText = await productCard.getBodyText();
expect(productCardBodyText).toBe(SELECTION_EMPTY);
// Enter search term
const searchInput = await productFilter.getSearchInput();
await searchInput.setText('fuse');
// Wait for updated pagination info
await productTileList.waitForPaginationUpdate(
PAGINATION_FILTERED_ITEMS
);
// Select first product tile
const productTiles = await productTileList.getTiles();
await productTiles[0].click();
// Wait for product selection
await productCard.waitForSelectionUpdate('FUSE X1');
// Open selected product record
await productCard.clickOpenRecord();
// Ensure that product record page is open
await domDocument.waitFor(async () =>
RECORD_PAGE_URL.test(await domDocument.getUrl())
);
});
});