-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathstorage.test.ts
157 lines (110 loc) · 5.42 KB
/
storage.test.ts
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
import {expect, test} from '@playwright/test';
import {ClusterStorageTable} from '../paginatedTable/paginatedTable';
import {StoragePage} from './StoragePage';
test.describe('Test Storage page', async () => {
test('Storage page is OK', async ({page}) => {
const storagePage = new StoragePage(page);
const response = await storagePage.goto();
expect(response?.ok()).toBe(true);
});
test('Storage page has groups table', async ({page}) => {
const storagePage = new StoragePage(page);
await storagePage.goto();
await storagePage.selectEntityType('Groups');
await expect(storagePage.table).toBeVisible();
});
test('Storage page has nodes table', async ({page}) => {
const storagePage = new StoragePage(page);
await storagePage.goto();
await storagePage.selectEntityType('Nodes');
await expect(storagePage.table).toBeVisible();
});
});
test.describe('Test Storage Paginated Table', async () => {
test.beforeEach(async ({page}) => {
const nodesPage = new StoragePage(page);
const response = await nodesPage.goto();
expect(response?.ok()).toBe(true);
// Wil be removed since it's an experiment
await page.evaluate(() => {
localStorage.setItem('useBackendParamsForTables', 'true');
location.reload();
});
await page.waitForLoadState('networkidle');
});
test('Table loads and displays data', async ({page}) => {
const paginatedTable = new ClusterStorageTable(page);
await paginatedTable.waitForTableToLoad();
await paginatedTable.waitForTableData();
const rowCount = await paginatedTable.getRowCount();
expect(rowCount).toBeGreaterThan(0);
});
test('Search by pool name filters the table', async ({page}) => {
const paginatedTable = new ClusterStorageTable(page);
await paginatedTable.waitForTableToLoad();
await paginatedTable.waitForTableData();
const initialRowCount = await paginatedTable.getRowCount();
await paginatedTable.search('static');
await page.waitForTimeout(1000); // Wait for the table to update
const filteredRowCount = await paginatedTable.getRowCount();
expect(filteredRowCount).toBeLessThanOrEqual(initialRowCount);
});
test('Radio button selection changes displayed data', async ({page}) => {
const paginatedTable = new ClusterStorageTable(page);
await paginatedTable.waitForTableToLoad();
await paginatedTable.waitForTableData();
const initialRowCount = await paginatedTable.getRowCount();
await paginatedTable.getControls().selectRadioOption(0, 'Nodes');
await page.waitForTimeout(1000); // Wait for the table to update
const nodesRowCount = await paginatedTable.getRowCount();
expect(nodesRowCount).not.toEqual(initialRowCount);
});
test('Groups count is displayed correctly', async ({page}) => {
const paginatedTable = new ClusterStorageTable(page);
await paginatedTable.waitForTableToLoad();
await paginatedTable.waitForTableData();
const nodeCount = await paginatedTable.getCount();
const rowCount = await paginatedTable.getRowCount();
expect(nodeCount).toBe(rowCount);
});
test('Row data can be retrieved correctly', async ({page}) => {
const storageTable = new ClusterStorageTable(page);
await storageTable.waitForTableToLoad();
await storageTable.waitForTableData();
const rowData = await storageTable.getRowData(0);
expect(rowData).toHaveProperty('Group ID');
expect(rowData).toHaveProperty('Pool Name');
expect(rowData).toHaveProperty('Erasure');
expect(rowData).toHaveProperty('Used');
expect(rowData).toHaveProperty('VDisks');
});
test('Column values can be retrieved correctly', async ({page}) => {
const paginatedTable = new ClusterStorageTable(page);
await paginatedTable.waitForTableToLoad();
await paginatedTable.waitForTableData();
const poolValues = await paginatedTable.getColumnValues('Pool Name');
const erasureValues = await paginatedTable.getColumnValues('Erasure');
expect(poolValues.length).toBeGreaterThan(0);
expect(erasureValues.length).toBeGreaterThan(0);
expect(poolValues.length).toBe(erasureValues.length);
});
test('Clicking on Group ID header sorts the table', async ({page}) => {
const storageTable = new ClusterStorageTable(page);
await storageTable.waitForTableToLoad();
await storageTable.waitForTableData();
const initialGroupIds = await storageTable.getColumnValues('Group ID');
await storageTable.sortByColumn('Group ID');
const sortedGroupIds = await storageTable.getColumnValues('Group ID');
expect(sortedGroupIds).not.toEqual(initialGroupIds);
const sortedDescending = [...sortedGroupIds].sort((a, b) => {
return parseInt(b, 10) - parseInt(a, 10);
});
expect(sortedGroupIds).toEqual(sortedDescending);
await storageTable.sortByColumn('Group ID');
const sortedAscGroupIds = await storageTable.getColumnValues('Group ID');
const sortedAscending = [...sortedAscGroupIds].sort((a, b) => {
return parseInt(a, 10) - parseInt(b, 10);
});
expect(sortedAscGroupIds).toEqual(sortedAscending);
});
});