cypress-ag-grid 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,34 +19,35 @@ describe("ag-grid get data scenarios", () => {
19
19
  it("verify paginated table data - include all columns", () => {
20
20
  const expectedPaginatedTableData = [
21
21
  [
22
- { Year: "2020", Make: "Toyota", Model: "Celica", Price: "35000" },
23
- { Year: "2020", Make: "Ford", Model: "Mondeo", Price: "32000" },
24
- { Year: "2020", Make: "Porsche", Model: "Boxter", Price: "72000" },
25
- { Year: "2020", Make: "BMW", Model: "3-series", Price: "45000" },
26
- { Year: "2020", Make: "Mercedes", Model: "GLC300", Price: "53000" },
22
+ { Year: "2020", Make: "Toyota", Model: "Celica", Condition: "fair", Price: "35000" },
23
+ { Year: "2020", Make: "Ford", Model: "Mondeo", Condition: "excellent", Price: "32000" },
24
+ { Year: "2020", Make: "Porsche", Model: "Boxter", Condition: "good", Price: "72000" },
25
+ { Year: "2020", Make: "BMW", Model: "3-series", Condition: "fair", Price: "45000" },
26
+ { Year: "2020", Make: "Mercedes", Model: "GLC300", Condition: "good", Price: "53000" },
27
27
  ],
28
28
  [
29
- { Year: "2020", Make: "Honda", Model: "Civic", Price: "22000" },
30
- { Year: "2020", Make: "Honda", Model: "Accord", Price: "32000" },
31
- { Year: "2020", Make: "Ford", Model: "Taurus", Price: "19000" },
32
- { Year: "2020", Make: "Hyundai", Model: "Elantra", Price: "22000" },
33
- { Year: "2020", Make: "Toyota", Model: "Celica", Price: "5000" },
29
+ { Year: "2020", Make: "Honda", Model: "Civic", Condition: "poor", Price: "22000" },
30
+ { Year: "2020", Make: "Honda", Model: "Accord", Condition: "poor", Price: "32000" },
31
+ { Year: "2020", Make: "Ford", Model: "Taurus", Condition: "excellent", Price: "19000" },
32
+ { Year: "2020", Make: "Hyundai", Model: "Elantra", Condition: "good", Price: "22000" },
33
+ { Year: "2020", Make: "Toyota", Model: "Celica", Condition: "poor", Price: "5000" },
34
34
  ],
35
35
  [
36
- { Year: "2020", Make: "Ford", Model: "Mondeo", Price: "25000" },
37
- { Year: "2020", Make: "Porsche", Model: "Boxter", Price: "99000" },
38
- { Year: "2020", Make: "BMW", Model: "3-series", Price: "32000" },
39
- { Year: "2020", Make: "Mercedes", Model: "GLC300", Price: "35000" },
40
- { Year: "2011", Make: "Honda", Model: "Civic", Price: "9000" },
36
+ { Year: "2020", Make: "Ford", Model: "Mondeo", Condition: "good", Price: "25000" },
37
+ { Year: "2020", Make: "Porsche", Model: "Boxter", Condition: "good", Price: "99000" },
38
+ { Year: "2020", Make: "BMW", Model: "3-series", Condition: "poor", Price: "32000" },
39
+ { Year: "2020", Make: "Mercedes", Model: "GLC300", Condition: "excellent", Price: "35000" },
40
+ { Year: "2011", Make: "Honda", Model: "Civic", Condition: "good", Price: "9000" },
41
41
  ],
42
42
  [
43
- { Year: "2020", Make: "Honda", Model: "Accord", Price: "34000" },
44
- { Year: "1990", Make: "Ford", Model: "Taurus", Price: "900" },
45
- { Year: "2020", Make: "Hyundai", Model: "Elantra", Price: "3000" },
46
- { Year: "2020", Make: "BMW", Model: "2002", Price: "88001" },
43
+ { Year: "2020", Make: "Honda", Model: "Accord", Condition: "good", Price: "34000" },
44
+ { Year: "1990", Make: "Ford", Model: "Taurus", Condition: "excellent", Price: "900" },
45
+ { Year: "2020", Make: "Hyundai", Model: "Elantra", Condition: "fair", Price: "3000" },
46
+ { Year: "2020", Make: "BMW", Model: "2002", Condition: "excellent", Price: "88001" },
47
+ { Year: "2023", Make: "Hyundai", Model: "Santa Fe", Condition: "excellent", Price: "" },
47
48
  ],
48
49
  ];
49
- cy.get(agGridSelector).agGridValidatePaginatedTable(
50
+ cy.get(agGridSelector).agGridValidatePaginatedTable(
50
51
  expectedPaginatedTableData
51
52
  );
52
53
  });
@@ -79,6 +80,7 @@ describe("ag-grid get data scenarios", () => {
79
80
  { Year: "1990", Make: "Ford", Model: "Taurus" },
80
81
  { Year: "2020", Make: "Hyundai", Model: "Elantra" },
81
82
  { Year: "2020", Make: "BMW", Model: "2002" },
83
+ { Year: "2023", Make: "Hyundai", Model: "Santa Fe"},
82
84
  ],
83
85
  ];
84
86
  cy.get(agGridSelector).agGridValidatePaginatedTable(
@@ -91,7 +93,7 @@ describe("ag-grid get data scenarios", () => {
91
93
 
92
94
  it("able to filter by checkbox", () => {
93
95
  const expectedTableData = [
94
- { Year: "2020", Make: "BMW", Model: "2002", Price: "88001" },
96
+ { Year: "2020", Make: "BMW", Model: "2002", Condition: "excellent", Price: "88001" },
95
97
  ];
96
98
  cy.get(agGridSelector).agGridColumnFilterCheckboxMenu({
97
99
  searchCriteria: {
@@ -110,10 +112,11 @@ describe("ag-grid get data scenarios", () => {
110
112
 
111
113
  it("able to filter by checkbox - multiple columns", () => {
112
114
  const expectedTableData = [
113
- { Year: "2020", Make: "BMW", Model: "3-series", Price: "45000" },
114
- { Year: "2020", Make: "BMW", Model: "3-series", Price: "32000" },
115
- { Year: "2020", Make: "BMW", Model: "2002", Price: "88001" },
115
+ { Year: "2020", Make: "BMW", Model: "3-series", Condition: "fair", Price: "45000" },
116
+ { Year: "2020", Make: "BMW", Model: "3-series", Condition: "poor", Price: "32000" },
117
+ { Year: "2020", Make: "BMW", Model: "2002", Condition: "excellent", Price: "88001" },
116
118
  ];
119
+
117
120
  cy.get(agGridSelector).agGridColumnFilterCheckboxMenu({
118
121
  searchCriteria: [
119
122
  {
@@ -130,15 +133,19 @@ describe("ag-grid get data scenarios", () => {
130
133
  cy.get(agGridSelector)
131
134
  .getAgGridData()
132
135
  .then((actualTableData) => {
133
- cy.agGridValidateRowsExactOrder(actualTableData, expectedTableData, true);
136
+ cy.agGridValidateRowsExactOrder(
137
+ actualTableData,
138
+ expectedTableData,
139
+ true
140
+ );
134
141
  });
135
142
  });
136
143
 
137
144
  it("able to filter by text - menu", () => {
138
145
  const expectedTableData = [
139
- { Year: "2020", Make: "BMW", Model: "3-series", Price: "32000" },
140
- { Year: "2020", Make: "Honda", Model: "Accord", Price: "32000" },
141
- { Year: "2020", Make: "Ford", Model: "Mondeo", Price: "32000" },
146
+ { Year: "2020", Make: "BMW", Model: "3-series", Condition: "poor", Price: "32000" },
147
+ { Year: "2020", Make: "Honda", Model: "Accord", Condition: "poor", Price: "32000" },
148
+ { Year: "2020", Make: "Ford", Model: "Mondeo", Condition: "excellent", Price: "32000" },
142
149
  ];
143
150
  cy.get(agGridSelector).agGridSortColumn("Model", sort.ascending);
144
151
  cy.get(agGridSelector).agGridColumnFilterTextMenu({
@@ -158,7 +165,7 @@ describe("ag-grid get data scenarios", () => {
158
165
 
159
166
  it("able to filter by text - menu - multiple columns", () => {
160
167
  const expectedTableData = [
161
- { Year: "2020", Make: "BMW", Model: "3-series", Price: "32000" },
168
+ { Year: "2020", Make: "BMW", Model: "3-series", Condition: "poor", Price: "32000" },
162
169
  ];
163
170
  cy.get(agGridSelector).agGridSortColumn("Model", sort.ascending);
164
171
  cy.get(agGridSelector).agGridColumnFilterTextMenu({
@@ -185,11 +192,12 @@ describe("ag-grid get data scenarios", () => {
185
192
 
186
193
  it("able to filter by text - floating filter", () => {
187
194
  const expectedTableData = [
188
- { Year: "2020", Make: "Ford", Model: "Mondeo", Price: "32000" },
189
- { Year: "2020", Make: "Ford", Model: "Mondeo", Price: "25000" },
190
- { Year: "2020", Make: "Ford", Model: "Taurus", Price: "19000" },
191
- { Year: "1990", Make: "Ford", Model: "Taurus", Price: "900" },
195
+ { Year: "2020", Make: "Ford", Model: "Mondeo", Condition: "excellent", Price: "32000" },
196
+ { Year: "2020", Make: "Ford", Model: "Mondeo", Condition: "good", Price: "25000" },
197
+ { Year: "2020", Make: "Ford", Model: "Taurus", Condition: "excellent", Price: "19000" },
198
+ { Year: "1990", Make: "Ford", Model: "Taurus", Condition: "excellent", Price: "900" },
192
199
  ];
200
+
193
201
  cy.get(agGridSelector).agGridSortColumn("Model", sort.ascending);
194
202
  cy.get(agGridSelector).agGridColumnFilterTextFloating({
195
203
  searchCriteria: {
@@ -207,10 +215,11 @@ describe("ag-grid get data scenarios", () => {
207
215
 
208
216
  it("able to filter by text - floating filter - multiple conditions", () => {
209
217
  const expectedTableData = [
210
- { Year: "2020", Make: "BMW", Model: "2002", Price: "88001" },
211
- { Year: "2020", Make: "BMW", Model: "3-series", Price: "45000" },
212
- { Year: "2020", Make: "BMW", Model: "3-series", Price: "32000" },
218
+ { Year: "2020", Make: "BMW", Model: "2002", Condition: "excellent", Price: "88001" },
219
+ { Year: "2020", Make: "BMW", Model: "3-series", Condition: "fair", Price: "45000" },
220
+ { Year: "2020", Make: "BMW", Model: "3-series", Condition: "poor", Price: "32000" },
213
221
  ];
222
+
214
223
  cy.get(agGridSelector).agGridSortColumn("Model", sort.ascending);
215
224
  cy.get(agGridSelector).agGridColumnFilterTextFloating({
216
225
  searchCriteria: {
@@ -237,7 +246,7 @@ describe("ag-grid get data scenarios", () => {
237
246
 
238
247
  it("able to filter by text - floating filter - multiple columns", () => {
239
248
  const expectedTableData = [
240
- { Year: "1990", Make: "Ford", Model: "Taurus", Price: "900" },
249
+ { Year: "1990", Make: "Ford", Model: "Taurus", Condition: "excellent", Price: "900" },
241
250
  ];
242
251
  cy.get(agGridSelector).agGridSortColumn("Model", sort.ascending);
243
252
  cy.get(agGridSelector).agGridColumnFilterTextFloating({
@@ -256,14 +265,17 @@ describe("ag-grid get data scenarios", () => {
256
265
  cy.get(agGridSelector)
257
266
  .getAgGridData()
258
267
  .then((actualTableData) => {
259
- cy.get(agGridSelector).agGridValidateRowsExactOrder(actualTableData, expectedTableData);
268
+ cy.get(agGridSelector).agGridValidateRowsExactOrder(
269
+ actualTableData,
270
+ expectedTableData
271
+ );
260
272
  });
261
273
  });
262
274
 
263
275
  it("able to filter by text - floating filter - multi filter", () => {
264
276
  const expectedTableData = [
265
- { Year: "2020", Make: "Ford", Model: "Taurus", Price: "19000" },
266
- { Year: "1990", Make: "Ford", Model: "Taurus", Price: "900" },
277
+ { Year: "2020", Make: "Ford", Model: "Taurus", Condition: "excellent", Price: "19000" },
278
+ { Year: "1990", Make: "Ford", Model: "Taurus", Condition: "excellent", Price: "900" },
267
279
  ];
268
280
  cy.get(agGridSelector).agGridSortColumn("Model", sort.ascending);
269
281
  cy.get(agGridSelector).agGridColumnFilterTextFloating({
@@ -271,7 +283,7 @@ describe("ag-grid get data scenarios", () => {
271
283
  {
272
284
  columnName: "Model",
273
285
  filterValue: "Taurus",
274
- isMultiFilter: true
286
+ isMultiFilter: true,
275
287
  },
276
288
  ],
277
289
  hasApplyButton: true,
@@ -279,11 +291,13 @@ describe("ag-grid get data scenarios", () => {
279
291
  cy.get(agGridSelector)
280
292
  .getAgGridData()
281
293
  .then((actualTableData) => {
282
- cy.get(agGridSelector).agGridValidateRowsExactOrder(actualTableData, expectedTableData);
294
+ cy.get(agGridSelector).agGridValidateRowsExactOrder(
295
+ actualTableData,
296
+ expectedTableData
297
+ );
283
298
  });
284
299
  });
285
300
 
286
-
287
301
  it("able to validate empty table", () => {
288
302
  //Search for an entry that does not exist
289
303
  cy.get(agGridSelector).agGridColumnFilterTextMenu({
@@ -417,6 +431,65 @@ describe("ag-grid get data scenarios", () => {
417
431
  cy.agGridValidateRowsSubset(actualTableData, expectedTableData);
418
432
  });
419
433
  });
434
+
435
+ it("able to filter by 'Blank'", () =>{
436
+ const expectedTableData = [
437
+ { Year: "2023", Make: "Hyundai", Model: "Santa Fe", Condition: "excellent", Price: "" }
438
+ ]
439
+
440
+ cy.get(agGridSelector).agGridColumnFilterTextMenu({
441
+ searchCriteria: {
442
+ columnName: "Price",
443
+ operator: filterOperator.blank,
444
+ },
445
+ hasApplyButton: true,
446
+ });
447
+ cy.get(agGridSelector)
448
+ .getAgGridData()
449
+ .then((actualTableData) => {
450
+ cy.agGridValidateRowsSubset(actualTableData, expectedTableData);
451
+ });
452
+
453
+ });
454
+
455
+ it('able to filter by agTextColumnFilter with join operator', ()=>{
456
+ const expectedTableData = [
457
+ { Year: "2020", Make: "Toyota", Model: "Celica", Condition: "fair", Price: "35000" },
458
+ { Year: "2020", Make: "BMW", Model: "3-series", Condition: "fair", Price: "45000" },
459
+ { Year: "2020", Make: "Hyundai", Model: "Elantra", Condition: "fair", Price: "3000" },
460
+ ]
461
+ cy.get(agGridSelector).agGridColumnFilterTextFloating({
462
+ searchCriteria:
463
+ {
464
+ columnName: "Condition",
465
+ operator: "Starts with",
466
+ filterValue: 'f',
467
+ searchInputIndex: 0,
468
+ },
469
+
470
+ multiple: true,
471
+ hasApplyButton: true,
472
+ });
473
+
474
+ cy.get(agGridSelector).agGridColumnFilterTextFloating({
475
+ searchCriteria:
476
+ {
477
+ columnName: "Condition",
478
+ operator:"Ends with",
479
+ filterValue: "ir",
480
+ searchInputIndex: 1,
481
+ },
482
+
483
+ multiple: true,
484
+ hasApplyButton: true,
485
+ });
486
+
487
+ cy.get(agGridSelector)
488
+ .getAgGridData()
489
+ .then((actualTableData) => {
490
+ cy.agGridValidateRowsSubset(actualTableData, expectedTableData);
491
+ });
492
+ });
420
493
  });
421
494
 
422
495
  function removePropertyFromCollection(expectedTableData, columnsToExclude) {
@@ -504,4 +577,4 @@ function removePropertyFromCollection(expectedTableData, columnsToExclude) {
504
577
  // .then(() => {
505
578
  // return paginatedTableData;
506
579
  // });
507
- // }
580
+ // }
@@ -1,21 +1,21 @@
1
1
  [
2
- { "Year": "2020", "Make": "Toyota", "Model": "Celica", "Price": "35000" },
3
- { "Year": "2020", "Make": "Ford", "Model": "Mondeo", "Price": "32000" },
4
- { "Year": "2020", "Make": "Porsche", "Model": "Boxter", "Price": "72000" },
5
- { "Year": "2020", "Make": "BMW", "Model": "3-series", "Price": "45000" },
6
- { "Year": "2020", "Make": "Mercedes", "Model": "GLC300", "Price": "53000" },
7
- { "Year": "2020", "Make": "Honda", "Model": "Civic", "Price": "22000" },
8
- { "Year": "2020", "Make": "Honda", "Model": "Accord", "Price": "32000" },
9
- { "Year": "2020", "Make": "Ford", "Model": "Taurus", "Price": "19000" },
10
- { "Year": "2020", "Make": "Hyundai", "Model": "Elantra", "Price": "22000" },
11
- { "Year": "2020", "Make": "Toyota", "Model": "Celica", "Price": "5000" },
12
- { "Year": "2020", "Make": "Ford", "Model": "Mondeo", "Price": "25000" },
13
- { "Year": "2020", "Make": "Porsche", "Model": "Boxter", "Price": "99000" },
14
- { "Year": "2020", "Make": "BMW", "Model": "3-series", "Price": "32000" },
15
- { "Year": "2020", "Make": "Mercedes", "Model": "GLC300", "Price": "35000" },
16
- { "Year": "2011", "Make": "Honda", "Model": "Civic", "Price": "9000" },
17
- { "Year": "2020", "Make": "Honda", "Model": "Accord", "Price": "34000" },
18
- { "Year": "1990", "Make": "Ford", "Model": "Taurus", "Price": "900" },
19
- { "Year": "2020", "Make": "Hyundai", "Model": "Elantra", "Price": "3000" },
20
- { "Year": "2020", "Make": "BMW", "Model": "2002", "Price": "88001" }
21
- ]
2
+ { "Year": "2020", "Make": "Toyota", "Model": "Celica", "Condition": "fair", "Price": "35000" },
3
+ { "Year": "2020", "Make": "Ford", "Model": "Mondeo", "Condition": "excellent", "Price": "32000" },
4
+ { "Year": "2020", "Make": "Porsche", "Model": "Boxter", "Condition": "good", "Price": "72000" },
5
+ { "Year": "2020", "Make": "BMW", "Model": "3-series", "Condition": "fair", "Price": "45000" },
6
+ { "Year": "2020", "Make": "Mercedes", "Model": "GLC300", "Condition": "good", "Price": "53000" },
7
+ { "Year": "2020", "Make": "Honda", "Model": "Civic", "Condition": "poor", "Price": "22000" },
8
+ { "Year": "2020", "Make": "Honda", "Model": "Accord", "Condition": "poor", "Price": "32000" },
9
+ { "Year": "2020", "Make": "Ford", "Model": "Taurus", "Condition": "excellent", "Price": "19000" },
10
+ { "Year": "2020", "Make": "Hyundai", "Model": "Elantra", "Condition": "good", "Price": "22000" },
11
+ { "Year": "2020", "Make": "Toyota", "Model": "Celica", "Condition": "poor", "Price": "5000" },
12
+ { "Year": "2020", "Make": "Ford", "Model": "Mondeo", "Condition": "good", "Price": "25000" },
13
+ { "Year": "2020", "Make": "Porsche", "Model": "Boxter", "Condition": "good", "Price": "99000" },
14
+ { "Year": "2020", "Make": "BMW", "Model": "3-series", "Condition": "poor", "Price": "32000" },
15
+ { "Year": "2020", "Make": "Mercedes", "Model": "GLC300", "Condition": "excellent", "Price": "35000" },
16
+ { "Year": "2011", "Make": "Honda", "Model": "Civic", "Condition": "good", "Price": "9000" },
17
+ { "Year": "2020", "Make": "Honda", "Model": "Accord", "Condition": "good", "Price": "34000" },
18
+ { "Year": "1990", "Make": "Ford", "Model": "Taurus", "Condition": "excellent", "Price": "900" },
19
+ { "Year": "2020", "Make": "Hyundai", "Model": "Elantra", "Condition": "fair", "Price": "3000" },
20
+ { "Year": "2020", "Make": "BMW", "Model": "2002", "Condition": "excellent", "Price": "88001" }
21
+ ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cypress-ag-grid",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "Cypress plugin to interact with ag grid",
5
5
  "main": "src/index.js",
6
6
  "repository": {
@@ -24,6 +24,6 @@
24
24
  "author": "Kerry McKeever <kerry@kerrymckeever.com>",
25
25
  "license": "MIT",
26
26
  "devDependencies": {
27
- "cypress": "^10.1.0"
27
+ "cypress": "^13.3.0"
28
28
  }
29
29
  }
@@ -1,6 +1,7 @@
1
1
  /// <reference types="cypress" />
2
2
  import { sort } from "./sort.enum";
3
3
  import { filterTab } from "./menuTab.enum";
4
+ import { filterOperator } from "./filterOperator.enum";
4
5
 
5
6
  /**
6
7
  * Uses the attribute value's index and sorts the data accordingly.
@@ -37,7 +38,7 @@ export const getAgGridElements = (agGridElement, options = {}) => {
37
38
 
38
39
  function _getAgGrid(agGridElement, options = {}, returnElements) {
39
40
  const agGridColumnSelectors =
40
- ".ag-pinned-left-cols-container^.ag-center-cols-clipper^.ag-pinned-right-cols-container";
41
+ ".ag-pinned-left-cols-container^.ag-center-cols-clipper^.ag-center-cols-viewport^.ag-pinned-right-cols-container";
41
42
  if (agGridElement.get().length > 1)
42
43
  throw new Error(
43
44
  `Selector "${agGridElement.selector}" returned more than 1 element.`
@@ -243,10 +244,12 @@ function getFilterColumnButtonElement(
243
244
  if (!noMenuTabs) {
244
245
  selectMenuTab(agGridElement, filterTab.filter);
245
246
  }
247
+
246
248
  if (operator) {
247
249
  cy.get(agGridElement)
248
250
  .find(".ag-picker-field-wrapper")
249
251
  .filter(":visible")
252
+ .eq(searchInputIndex)
250
253
  .click();
251
254
  cy.get(agGridElement)
252
255
  .find(".ag-popup")
@@ -276,13 +279,15 @@ function getFilterColumnButtonElement(
276
279
  }
277
280
 
278
281
  // Get the saved filter input and enter the search term
279
- cy.get("@filterInput").then(($ele)=>{
280
- cy.wrap($ele)
281
- .eq(searchInputIndex)
282
- .clear()
283
- .type(filterValue)
284
- .wait(500);
285
- })
282
+ if(operator !== filterOperator.blank && operator !== filterOperator.notBlank){
283
+ cy.get("@filterInput").then(($ele)=>{
284
+ cy.wrap($ele)
285
+ .eq(searchInputIndex)
286
+ .clear()
287
+ .type(filterValue)
288
+ .wait(500);
289
+ })
290
+ }
286
291
 
287
292
  // Finally, if a multi-filter, select the filter value's checkbox
288
293
  if(isMultiFilter){
@@ -9,5 +9,7 @@ export const filterOperator = {
9
9
  lessThanOrEquals: "Less than or equals",
10
10
  greaterThan: "Greater than",
11
11
  greaterThanOrEquals: "Greater than or equals",
12
- inRange: "In range"
12
+ inRange: "In range",
13
+ blank: "Blank",
14
+ notBlank: "Not Blank"
13
15
  }