diff --git a/e2e/protractor/protractor.excludes.json b/e2e/protractor/protractor.excludes.json index 03eedcb8f4..94ba967406 100644 --- a/e2e/protractor/protractor.excludes.json +++ b/e2e/protractor/protractor.excludes.json @@ -6,11 +6,6 @@ "C286252": "temp, see https://alfresco.atlassian.net/browse/ACS-5189", "C284666": "temp, see https://alfresco.atlassian.net/browse/ACS-5189", "C286269": "temp, see https://alfresco.atlassian.net/browse/ACS-5189", - "C279186": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-4986", - "C279230": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-4986", - "C279231": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-4986", - "C279232": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-4986", - "C279233": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-4986", "C279191": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-5183", "C279192": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-5183", "C279193": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-5183", @@ -19,6 +14,7 @@ "C280052": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-5183", "C279188": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-5183", "C308042": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-5183", + "C279186": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-4985", "C279219": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-4985", "C279221": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-4985", "C279220": "temp, will be fixed in https://alfresco.atlassian.net/browse/ACS-4985", diff --git a/e2e/protractor/suites/search/search-filters.test.ts b/e2e/protractor/suites/search/search-filters.test.ts index 4c735de7b1..c8a14853df 100644 --- a/e2e/protractor/suites/search/search-filters.test.ts +++ b/e2e/protractor/suites/search/search-filters.test.ts @@ -482,8 +482,7 @@ describe('Search filters', () => { await locationFilter.openDialog(); expect(await locationFilter.isDialogPresent()).toBe(true, 'Location filter panel not expanded'); - expect(await locationFilter.getFiltersValues()).toEqual(expectedLocations, 'Incorrect Location filters facets'); - expect(await locationFilter.isFilterCategoryInputDisplayed()).toBe(true, 'Location filter categories not displayed'); + expect(await locationFilter.isFilterAutocompleteInputDisplayed()).toBe(true, 'Location filter categories not displayed'); await locationFilter.closeDialog(); expect(await locationFilter.isDialogPresent()).toBe(false, 'Location filter panel is expanded'); @@ -491,7 +490,7 @@ describe('Search filters', () => { it('[C279231] Results are filtered by Location', async () => { await locationFilter.openDialog(); - await locationFilter.checkCategory(site); + await locationFilter.setAutocompleteInputValue(site); await locationFilter.clickApplyButton(); expect(await dataTable.isItemPresent(filePdfUser2.name)).toBe(false, 'PDF file is displayed'); @@ -499,17 +498,17 @@ describe('Search filters', () => { expect(await locationFilter.getChipTitle()).toEqual(site, 'Incorrect location filter selected'); await locationFilter.openDialog(); - await locationFilter.checkCategory('_REPOSITORY_'); + await locationFilter.setAutocompleteInputValue('_REPOSITORY_'); await locationFilter.clickApplyButton(); expect(await dataTable.isItemPresent(filePdfUser2.name)).toBe(true, 'PDF file not displayed'); expect(await dataTable.isItemPresent(fileJpgUser1.name)).toBe(true, 'JPG file not displayed'); - expect(await locationFilter.getChipTitle()).toEqual(`_REPOSITORY_, ${site}`, 'Incorrect location filter selected'); + expect(await locationFilter.getChipTitle()).toEqual(`${site}, _REPOSITORY_`, 'Incorrect location filter selected'); }); it('[C279232] Clear the Location filter options', async () => { await locationFilter.openDialog(); - await locationFilter.checkCategory(site); + await locationFilter.setAutocompleteInputValue(site); await locationFilter.clickApplyButton(); expect(await dataTable.isItemPresent(filePdfUser2.name)).toBe(false, 'PDF file is displayed'); @@ -517,7 +516,7 @@ describe('Search filters', () => { expect(await locationFilter.getChipTitle()).toEqual(`${site}`, 'Incorrect location filter selected'); await locationFilter.openDialog(); - expect(await locationFilter.getFiltersCheckedValues()).toEqual([`${site} (1)`]); + expect(await locationFilter.getFiltersSelectedValues()).toEqual([`${site}`]); await locationFilter.clickResetButton(); expect(await dataTable.isItemPresent(filePdfUser2.name)).toBe(true, 'PDF file not displayed'); @@ -527,9 +526,9 @@ describe('Search filters', () => { it('[C279233] Search for a specific location', async () => { await locationFilter.openDialog(); - expect(await locationFilter.getFiltersValues()).toEqual(expectedLocations, 'Incorrect Location filters facets'); - await locationFilter.filterCategoriesBy(site); - expect(await locationFilter.getFiltersValues()).toEqual([`${site} (1)`], 'Incorrect Location filters facets'); + expect(await locationFilter.getFiltersSelectedValues()).toEqual([], 'Incorrect Location filters facets'); + await locationFilter.setAutocompleteInputValue(site); + expect(await locationFilter.getFiltersSelectedValues()).toEqual([`${site}`], 'Incorrect Location filters facets'); }); }); @@ -621,7 +620,7 @@ describe('Search filters', () => { await creatorFilter.clickApplyButton(); await locationFilter.openDialog(); - await locationFilter.checkCategory(site); + await locationFilter.setAutocompleteInputValue(site); await locationFilter.clickApplyButton(); expect(await dataTable.isItemPresent(filePdfUser2.name)).toBe(false, 'PDF file is displayed'); @@ -682,7 +681,7 @@ describe('Search filters', () => { await modifierFilter.closeDialog(); await locationFilter.openDialog(); - expect(await locationFilter.getFiltersValues()).toEqual(expectedLocations); + expect(await locationFilter.getFiltersSelectedValues()).toEqual(expectedLocations); await locationFilter.closeDialog(); await searchInput.clickSearchButton(); @@ -702,7 +701,7 @@ describe('Search filters', () => { await modifierFilter.closeDialog(); await locationFilter.openDialog(); - expect(await locationFilter.getFiltersValues()).toEqual([`${site} (1)`]); + expect(await locationFilter.getFiltersSelectedValues()).toEqual([`${site}`]); await locationFilter.closeDialog(); }); }); diff --git a/projects/aca-testing-shared/src/components/search/filters/autocomplete-chips-filter.ts b/projects/aca-testing-shared/src/components/search/filters/autocomplete-chips-filter.ts new file mode 100644 index 0000000000..ef7f4156ee --- /dev/null +++ b/projects/aca-testing-shared/src/components/search/filters/autocomplete-chips-filter.ts @@ -0,0 +1,58 @@ +/*! + * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Alfresco Example Content Application + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +import { browser, by, ElementArrayFinder, ElementFinder, protractor } from 'protractor'; +import { GenericFilter } from './generic-filter'; + +export class AutocompleteChipsFilter extends GenericFilter { + private readonly locators = { + selectedOption: '.mat-chip span', + input: '.mat-menu-content input', + }; + + constructor(filterName: string) { + super(filterName); + } + + selectedOptions: ElementArrayFinder = this.filterDialogOpened.all(by.css(this.locators.selectedOption)); + + get filterInput(): ElementFinder { + return this.filterDialogOpened.element(by.css(this.locators.input)); + } + + async getFiltersSelectedValues(): Promise { + return this.selectedOptions.map((option) => { + return option.getText(); + }); + } + + async isFilterAutocompleteInputDisplayed(): Promise { + return this.filterInput.isDisplayed(); + } + + async setAutocompleteInputValue(value: string): Promise { + await this.filterInput.sendKeys(value); + await browser.actions().sendKeys(protractor.Key.ENTER).perform(); + } +} diff --git a/projects/aca-testing-shared/src/components/search/index.ts b/projects/aca-testing-shared/src/components/search/index.ts index 9c1f195633..27d1710fe4 100644 --- a/projects/aca-testing-shared/src/components/search/index.ts +++ b/projects/aca-testing-shared/src/components/search/index.ts @@ -22,6 +22,7 @@ * along with Alfresco. If not, see . */ +export * from './filters/autocomplete-chips-filter'; export * from './filters/created-date-filter'; export * from './filters/facet-filter'; export * from './filters/generic-filter'; diff --git a/projects/aca-testing-shared/src/components/search/search-filters.ts b/projects/aca-testing-shared/src/components/search/search-filters.ts index a86f719dc1..2c5206eb21 100755 --- a/projects/aca-testing-shared/src/components/search/search-filters.ts +++ b/projects/aca-testing-shared/src/components/search/search-filters.ts @@ -27,6 +27,7 @@ import { Component } from '../component'; import { SizeFilter } from './filters/size-filter'; import { CreatedDateFilter } from './filters/created-date-filter'; import { FacetFilter } from './filters/facet-filter'; +import { AutocompleteChipsFilter } from './filters/autocomplete-chips-filter'; export class SearchFilters extends Component { resetAllButton = browser.element(by.css('button[adf-reset-search]')); @@ -36,7 +37,7 @@ export class SearchFilters extends Component { fileType = new FacetFilter('File type'); creator = new FacetFilter('Creator'); modifier = new FacetFilter('Modifier'); - location = new FacetFilter('Location'); + location = new AutocompleteChipsFilter('Location'); modifiedDate = new FacetFilter('Modified date'); constructor(ancestor?: string) {