/*!
* Copyright © 2005-2025 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
* from Hyland Software. If not, see .
*/
import { test as base } from '@playwright/test';
import {
FavoritesLibrariesPage,
LoginPage,
MyLibrariesPage,
NodesPage,
PersonalFilesPage,
RecentFilesPage,
SharedPage,
SearchPage,
FavoritesPage,
TrashPage
} from '../page-objects';
import { FileActionsApi, SharedLinksApi, FavoritesPageApi, NodesApi, SitesApi } from '../api';
import { users } from '../base-config';
interface Pages {
personalFiles: PersonalFilesPage;
nodesPage: NodesPage;
myLibrariesPage: MyLibrariesPage;
recentFilesPage: RecentFilesPage;
sharedPage: SharedPage;
searchPage: SearchPage;
favoritePage: FavoritesPage;
favoritesLibrariesPage: FavoritesLibrariesPage;
trashPage: TrashPage;
loginPage: LoginPage;
favoriteLibrariesPage: FavoritesLibrariesPage;
}
interface Api {
fileAction: FileActionsApi;
shareAction: SharedLinksApi;
favoritesPageAction: FavoritesPageApi;
nodesApiAction: NodesApi;
sitesApiAction: SitesApi;
}
export const test = base.extend({
personalFiles: async ({ page }, use) => {
await use(new PersonalFilesPage(page));
},
nodesPage: async ({ page }, use) => {
await use(new NodesPage(page));
},
recentFilesPage: async ({ page }, use) => {
await use(new RecentFilesPage(page));
},
sharedPage: async ({ page }, use) => {
await use(new SharedPage(page));
},
searchPage: async ({ page }, use) => {
await use(new SearchPage(page));
},
favoritePage: async ({ page }, use) => {
await use(new FavoritesPage(page));
},
favoritesLibrariesPage: async ({ page }, use) => {
await use(new FavoritesLibrariesPage(page));
},
trashPage: async ({ page }, use) => {
await use(new TrashPage(page));
},
loginPage: async ({ page }, use) => {
await use(new LoginPage(page));
},
// eslint-disable-next-line no-empty-pattern
fileAction: async ({}, use) => {
await use(await FileActionsApi.initialize(users.hruser.username));
},
// eslint-disable-next-line no-empty-pattern
shareAction: async ({}, use) => {
await use(await SharedLinksApi.initialize(users.hruser.username));
},
// eslint-disable-next-line no-empty-pattern
favoritesPageAction: async ({}, use) => {
await use(await FavoritesPageApi.initialize(users.hruser.username));
},
// eslint-disable-next-line no-empty-pattern
nodesApiAction: async ({}, use) => {
await use(await NodesApi.initialize(users.admin.username, users.admin.password));
},
// eslint-disable-next-line no-empty-pattern
sitesApiAction: async ({}, use) => {
await use(await SitesApi.initialize(users.hruser.username));
},
myLibrariesPage: async ({ page }, use) => {
await use(new MyLibrariesPage(page));
},
favoriteLibrariesPage: async ({ page }, use) => {
await use(new FavoritesLibrariesPage(page));
}
});