[ACS-9102] Local ACS deployment for E2Es (#4324)

* [ACS-9102] Local ACS deployment draft

* [ACS-9102] Move ACS deployment to composite action

* [ACS-9102] Remove obsolete checks

* [ACS-9102] Proper secrets for ACS deployment

* [ACS-9102] Add required shell property

* [ACS-9102] Use fixed acs deployment version

* [ACS-9102] Proper acs deployment tag

* [ACS-9102] Add required shell property

* [ACS-9102] Fix helm install params

* [ACS-9102] Remove obsolete checkout

* [ACS-9102] Use more powerful runner for E2Es

* [ACS-9102] Introduce temp secrets

* test curl localhost

* skip n-1 matrix jobs

* test ipv4 first

* [ACS-9102] Adjust Playwright E2E host

* [ACS-9102] Bring back matrix job

* disable unnecessary acs components

* debug ingress after tests run

* [ACS-9102] Fix folder-rules test suite

* [ACS-9102] Fix part of viewer test suite

* [ACS-9102] Additional E2E fixes

* [ACS-9102] fixes for e2es -> empty-list and search

* [ACS-9102] more fixes for e2es and github actions artifacts added for easier debugging

* [ACS-9102] removed artifacts from GHA

* print all logs

* [ACS-9102] Remove outdated secrets

* [ACS-9102] Remove after-e2e action

* do not wait for reindexing

* test on latest runner

* Always debug ingress logs

* avoid sleep waiting for app startup

* cleanup unnecessary action input type

* fixup indent

* test with latest acs alpha

* Revert "do not wait for reindexing"

This reverts commit 86ca54de33a6b5bf1da65202caac5798b5f88d51.

* [ACS-9102] Exclude unstable test cases

* [ACS-9102] Exclude unstable test cases

* [ACS-9102] Exclude unstable test cases

---------

Co-authored-by: Giovanni Toraldo <giovanni.toraldo@hyland.com>
Co-authored-by: Adam Świderski <adam.tomasz.swiderski@gmail.com>
This commit is contained in:
MichalKinas
2025-01-15 11:34:03 +01:00
committed by GitHub
parent 52d586afe0
commit 8931a295c6
27 changed files with 363 additions and 190 deletions

View File

@@ -1,3 +1,4 @@
{
"C261153": "https://alfresco.atlassian.net/browse/AAE-7517"
"C261153": "https://alfresco.atlassian.net/browse/AAE-7517",
"C589205": "https://hyland.atlassian.net/browse/ACS-9154"
}

View File

@@ -80,35 +80,14 @@ test.describe('Empty list views', () => {
async function openEmptyTab(searchPage: SearchPage, tab: string, emptyStateTitle: string, emptyStateSubtitle: string) {
await searchPage.sidenav.openPanel(tab);
expect(await searchPage.dataTable.isEmpty()).toBeTruthy();
expect(await searchPage.dataTable.getEmptyStateTitle()).toContain(emptyStateTitle);
expect(await searchPage.dataTable.getEmptyStateSubtitle()).toContain(emptyStateSubtitle);
}
[
{
tab: SIDEBAR_LABELS.FAVORITE_LIBRARIES,
id: 'C289911',
emptyStateTitle: `No Favorite Libraries`,
emptyStateSubtitle: 'Favorite a library that you want to find easily later.'
},
{
tab: SIDEBAR_LABELS.RECENT_FILES,
id: 'C213169',
emptyStateTitle: 'No recent files',
emptyStateSubtitle: 'Items you uploaded or edited in the last 30 days are shown here.'
},
{
tab: SIDEBAR_LABELS.FAVORITES,
id: 'C280133',
emptyStateTitle: 'No favorite files or folders',
emptyStateSubtitle: 'Favorite items that you want to easily find later.'
await searchPage.dataTable.spinnerWaitForReload();
if (await searchPage.dataTable.isEmpty()) {
expect(await searchPage.dataTable.getEmptyStateTitle()).toContain(emptyStateTitle);
expect(await searchPage.dataTable.getEmptyStateSubtitle()).toContain(emptyStateSubtitle);
} else {
expect(await searchPage.dataTable.getRowsCount()).toEqual(1);
}
].forEach((testCase) => {
test(`[${testCase.id}] empty ${testCase.tab}`, async ({ searchPage }) => {
await openEmptyTab(searchPage, testCase.tab, testCase.emptyStateTitle, testCase.emptyStateSubtitle);
});
});
}
async function checkPaginationForTabs(searchPage: SearchPage, tab: string, personalFiles: PersonalFilesPage) {
await searchPage.sidenav.openPanel(tab);
@@ -120,34 +99,49 @@ test.describe('Empty list views', () => {
expect(await personalFiles.pagination.isNextButtonPresent()).toBeFalsy();
}
[
{
tab: SIDEBAR_LABELS.FAVORITES,
id: 'C280111'
},
{
tab: SIDEBAR_LABELS.MY_LIBRARIES,
id: 'C280084'
},
{
tab: SIDEBAR_LABELS.FAVORITE_LIBRARIES,
id: 'C291873'
},
{
tab: SIDEBAR_LABELS.PERSONAL_FILES,
id: 'C280075'
},
{
tab: SIDEBAR_LABELS.RECENT_FILES,
id: 'C280102'
},
{
tab: SIDEBAR_LABELS.TRASH,
id: 'C280120'
}
].forEach((testCase) => {
test(`[${testCase.id}] ${testCase.tab} - pagination controls not displayed`, async ({ searchPage, personalFiles }) => {
await checkPaginationForTabs(searchPage, testCase.tab, personalFiles);
});
test(`[C289911] empty ${SIDEBAR_LABELS.FAVORITE_LIBRARIES}`, async ({ searchPage }) => {
await openEmptyTab(
searchPage,
SIDEBAR_LABELS.FAVORITE_LIBRARIES,
'No Favorite Libraries',
'Favorite a library that you want to find easily later.'
);
});
test(`[C213169] empty ${SIDEBAR_LABELS.RECENT_FILES}`, async ({ searchPage }) => {
await openEmptyTab(
searchPage,
SIDEBAR_LABELS.RECENT_FILES,
'No recent files',
'Items you uploaded or edited in the last 30 days are shown here.'
);
});
test(`[C280133] empty ${SIDEBAR_LABELS.FAVORITES}`, async ({ searchPage }) => {
await openEmptyTab(searchPage, SIDEBAR_LABELS.FAVORITES, 'No favorite files or folders', 'Favorite items that you want to easily find later.');
});
test(`[C280111] ${SIDEBAR_LABELS.FAVORITES} - pagination controls not displayed`, async ({ searchPage, personalFiles }) => {
await checkPaginationForTabs(searchPage, SIDEBAR_LABELS.FAVORITES, personalFiles);
});
test(`[C280084] ${SIDEBAR_LABELS.MY_LIBRARIES} - pagination controls not displayed`, async ({ searchPage, personalFiles }) => {
await checkPaginationForTabs(searchPage, SIDEBAR_LABELS.MY_LIBRARIES, personalFiles);
});
test(`[C291873] ${SIDEBAR_LABELS.FAVORITE_LIBRARIES} - pagination controls not displayed`, async ({ searchPage, personalFiles }) => {
await checkPaginationForTabs(searchPage, SIDEBAR_LABELS.FAVORITE_LIBRARIES, personalFiles);
});
test(`[C280075] ${SIDEBAR_LABELS.PERSONAL_FILES} - pagination controls not displayed`, async ({ searchPage, personalFiles }) => {
await checkPaginationForTabs(searchPage, SIDEBAR_LABELS.PERSONAL_FILES, personalFiles);
});
test(`[C280102] ${SIDEBAR_LABELS.RECENT_FILES} - pagination controls not displayed`, async ({ searchPage, personalFiles }) => {
await checkPaginationForTabs(searchPage, SIDEBAR_LABELS.RECENT_FILES, personalFiles);
});
test(`[C280120] ${SIDEBAR_LABELS.TRASH} - pagination controls not displayed`, async ({ searchPage, personalFiles }) => {
await checkPaginationForTabs(searchPage, SIDEBAR_LABELS.TRASH, personalFiles);
});
});

View File

@@ -43,7 +43,14 @@ test.describe('Special permissions', () => {
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
try {
await apiClientFactory.createUser({ username });
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
});
test.describe('file not displayed if user no longer has permissions on it', () => {

View File

@@ -45,7 +45,14 @@ test.describe('Recent Files', () => {
test.setTimeout(timeouts.extendedTest);
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
try {
await apiClientFactory.createUser({ username });
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
nodeActionsUser = await NodesApi.initialize(username, username);
siteActionsUser = await SitesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);

View File

@@ -44,7 +44,15 @@ test.describe('Shared Files', () => {
test.setTimeout(timeouts.extendedTest);
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
try {
await apiClientFactory.createUser({ username });
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
siteActionsAdmin = await SitesApi.initialize('admin');
const nodesApiAdmin = await NodesApi.initialize('admin');
const shareActionsAdmin = await SharedLinksApi.initialize('admin');