Skip to content

Commit 6a819e7

Browse files
LPD-54813 Create functional tests
1 parent 4f0eacd commit 6a819e7

File tree

2 files changed

+120
-0
lines changed

2 files changed

+120
-0
lines changed

modules/test/playwright/pages/object-web/object-entries/ViewObjectEntriesPage.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export class ViewObjectEntriesPage {
1919
readonly frameSelect: FrameLocator;
2020
readonly frontendDatasetActions: Locator;
2121
readonly frontendDatasetDeleteAction: Locator;
22+
readonly neverReview: Locator;
2223
readonly page: Page;
2324
readonly saveObjectEntryButton: Locator;
2425
readonly saveObjectEntryButtonArabic: Locator;
@@ -54,6 +55,7 @@ export class ViewObjectEntriesPage {
5455
this.frontendDatasetDeleteAction = page.getByRole('menuitem', {
5556
name: 'Delete',
5657
});
58+
this.neverReview = page.getByLabel('Never Review', {exact: true});
5759
this.page = page;
5860
this.searchBar = this.frameSelect.getByPlaceholder('Search for');
5961
this.searchButton = this.frameSelect.getByRole('button', {
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
/**
2+
* SPDX-FileCopyrightText: (c) 2025 Liferay, Inc. https://liferay.com
3+
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
4+
*/
5+
6+
import {expect, mergeTests} from '@playwright/test';
7+
8+
import {dataApiHelpersTest} from '../../../fixtures/dataApiHelpersTest';
9+
import {featureFlagsTest} from '../../../fixtures/featureFlagsTest';
10+
import {loginTest} from '../../../fixtures/loginTest';
11+
import {objectPagesTest} from '../../../fixtures/objectPagesTest';
12+
import {waitForAlert} from '../../../utils/waitForAlert';
13+
import {getObjectEntryUIDateTimeFormat} from './utils/dateFormat';
14+
15+
export const test = mergeTests(
16+
dataApiHelpersTest,
17+
featureFlagsTest({
18+
'LPD-17564': {enabled: true},
19+
}),
20+
loginTest(),
21+
objectPagesTest
22+
);
23+
24+
test.describe('Manage schedule properties through Object Entries', () => {
25+
test('can create, read, update, and delete a reviewDate of an object entry', async ({
26+
apiHelpers,
27+
page,
28+
viewObjectEntriesPage,
29+
}) => {
30+
const objectDefinition =
31+
await apiHelpers.objectAdmin.postRandomObjectDefinition({
32+
objectFolderExternalReferenceCode: 'default',
33+
status: {code: 0},
34+
titleObjectFieldName: 'textField',
35+
});
36+
37+
apiHelpers.data.push({
38+
id: objectDefinition.id,
39+
type: 'objectDefinition',
40+
});
41+
42+
await viewObjectEntriesPage.goto(objectDefinition.className);
43+
44+
await viewObjectEntriesPage.clickAddObjectEntry(
45+
objectDefinition.label['en_US']
46+
);
47+
48+
await viewObjectEntriesPage.neverReview.uncheck();
49+
50+
await page.getByRole('button', {name: 'Choose date'}).click();
51+
52+
await page.getByLabel('Select Current Date').click();
53+
54+
await page.keyboard.press('Escape');
55+
56+
await viewObjectEntriesPage.saveObjectEntryButton.click();
57+
58+
await waitForAlert(page);
59+
60+
const reviewDateInput = page.locator('input[id$="reviewDate"]');
61+
62+
const date1 = getObjectEntryUIDateTimeFormat(new Date());
63+
64+
await expect(reviewDateInput).toHaveValue(date1);
65+
66+
const newDate = new Date();
67+
68+
newDate.setDate(newDate.getDate() + 1);
69+
70+
const date2 = getObjectEntryUIDateTimeFormat(newDate);
71+
72+
await reviewDateInput.fill(date2);
73+
74+
await viewObjectEntriesPage.saveObjectEntryButton.click();
75+
76+
await waitForAlert(page);
77+
78+
await expect(reviewDateInput).toHaveValue(date2);
79+
80+
await viewObjectEntriesPage.neverReview.check();
81+
82+
await viewObjectEntriesPage.saveObjectEntryButton.click();
83+
84+
await waitForAlert(page);
85+
86+
await expect(reviewDateInput).toHaveValue('');
87+
});
88+
89+
test('cannot submit an empty reviewDate when neverReview is not checked', async ({
90+
apiHelpers,
91+
page,
92+
viewObjectEntriesPage,
93+
}) => {
94+
const objectDefinition =
95+
await apiHelpers.objectAdmin.postRandomObjectDefinition({
96+
objectFolderExternalReferenceCode: 'default',
97+
status: {code: 0},
98+
titleObjectFieldName: 'textField',
99+
});
100+
101+
apiHelpers.data.push({
102+
id: objectDefinition.id,
103+
type: 'objectDefinition',
104+
});
105+
106+
await viewObjectEntriesPage.goto(objectDefinition.className);
107+
108+
await viewObjectEntriesPage.clickAddObjectEntry(
109+
objectDefinition.label['en_US']
110+
);
111+
112+
await viewObjectEntriesPage.neverReview.uncheck();
113+
114+
await viewObjectEntriesPage.saveObjectEntryButton.click();
115+
116+
await expect(page.getByText('This field is required')).toBeVisible();
117+
});
118+
});

0 commit comments

Comments
 (0)