diff --git a/e2e/playwright/info-drawer/src/tests/file-preview.spec.ts b/e2e/playwright/info-drawer/src/tests/file-preview.spec.ts
new file mode 100755
index 0000000000..5330386340
--- /dev/null
+++ b/e2e/playwright/info-drawer/src/tests/file-preview.spec.ts
@@ -0,0 +1,86 @@
+/*!
+ * 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
+ * from Hyland Software. If not, see .
+ */
+
+import { expect, Page } from '@playwright/test';
+import { ApiClientFactory, test, TrashcanApi, NodesApi, FileActionsApi, TEST_FILES } from '@alfresco/playwright-shared';
+
+test.describe('File preview', () => {
+ const timestamp = new Date().getTime();
+ const username = `user1-${timestamp}`;
+ let nodesApi: NodesApi;
+ let trashcanApi: TrashcanApi;
+ let fileActionsApi: FileActionsApi;
+
+ test.afterAll(async () => {
+ try {
+ await nodesApi.deleteCurrentUserNodes();
+ await trashcanApi.emptyTrashcan();
+ } catch (error) {
+ console.error(`Main afterAll failed: ${error}`);
+ }
+ });
+
+ test.beforeAll(async () => {
+ try {
+ const apiClientFactory = new ApiClientFactory();
+ await apiClientFactory.setUpAcaBackend('admin');
+ await apiClientFactory.createUser({ username });
+ nodesApi = await NodesApi.initialize(username, username);
+ trashcanApi = await TrashcanApi.initialize(username, username);
+ fileActionsApi = await FileActionsApi.initialize(username, username);
+ } catch (error) {
+ console.error(`beforeAll failed : ${error}`);
+ }
+ });
+
+ test.beforeEach(async ({ loginPage }) => {
+ try {
+ await loginPage.loginUser({ username, password: username }, { withNavigation: true, waitForLoading: true });
+ } catch (error) {
+ console.error(`Main beforeEach failed: ${error}`);
+ }
+ });
+
+ async function checkFileContent(page: Page, pageNumber: number, text: string): Promise {
+ const allPages = page.locator('.canvasWrapper > canvas').first();
+ const pageLoaded = page.locator(`div[data-page-number="${pageNumber}"][data-loaded="true"]`);
+ const textLayerLoaded = page.locator(`div[data-page-number="${pageNumber}"] .textLayer`);
+ const specificText = textLayerLoaded.textContent();
+
+ await expect(allPages).toBeVisible();
+ await expect(pageLoaded).toBeVisible();
+ await expect(textLayerLoaded).toBeVisible();
+ expect(await specificText).toContain(text);
+ }
+
+ test('[C595967] Should preview document from the info drawer', async ({ personalFiles }) => {
+ const fileName = `file1-${timestamp}.pdf`;
+ await fileActionsApi.uploadFileWithRename(TEST_FILES.PDF.path, fileName, '-my-');
+ await fileActionsApi.waitForNodes(fileName, { expect: 1 });
+ await personalFiles.navigate();
+ await personalFiles.dataTable.getRowByName(fileName).click();
+ await personalFiles.acaHeader.viewButton.click();
+ await checkFileContent(personalFiles.page, 1, 'This is a small demonstration');
+ });
+});