Skip to content

Commit

Permalink
LPD-30312 Create test to assert selected node style consistency
Browse files Browse the repository at this point in the history
  • Loading branch information
larissacribeiro authored and brianchandotcom committed Jul 25, 2024
1 parent e5e80fe commit 1b32686
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 0 deletions.
14 changes: 14 additions & 0 deletions modules/test/playwright/pages/object-web/ModelBuilderPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export class ModelBuilderPage {
readonly deleteObjectDefinitionOption: Locator;
readonly deleteObjectRelationshipButton: Locator;
readonly deleteTrashButton: Locator;
readonly diagramArea: Locator;
readonly editInPageViewOption: Locator;
readonly editObjectFolderDetailsButton: Locator;
readonly fitViewButton: Locator;
Expand Down Expand Up @@ -60,6 +61,7 @@ export class ModelBuilderPage {
this.deleteTrashButton = page
.getByRole('tabpanel')
.getByTitle('Delete');
this.diagramArea = page.locator('.react-flow');
this.editInPageViewOption = page.getByRole('menuitem', {
name: 'Edit in page view',
});
Expand Down Expand Up @@ -265,6 +267,18 @@ export class ModelBuilderPage {
await this.modalDeleteObjectRelationshipConfirmationButton.click();
}

async dragNodeThroughDiagram(
objectDefinitionLabel: string,
targetX: number,
targetY: number
) {
await this.objectDefinitionNodes
.getByText(objectDefinitionLabel, {exact: true})
.dragTo(this.diagramArea, {
targetPosition: {x: targetX, y: targetY},
});
}

async fillNewObjectFieldLabel(objectFieldLabel: string) {
await this.newObjectFieldLabel.fill(objectFieldLabel);
}
Expand Down
51 changes: 51 additions & 0 deletions modules/test/playwright/tests/object-web/objectDefinitions.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,57 @@ test.describe('Manage object definitions through Model Builder', () => {
page.setViewportSize({height: 1080, width: 1920});
});

test('assert presence of selected node style on click and its transition after dragging an unselected one', async ({
apiHelpers,
modelBuilderPage,
}) => {
const objectDefinition =
await apiHelpers.objectAdmin.postRandomObjectDefinition({
objectFolderExternalReferenceCode: 'default',
status: {code: 0},
});

const commerceOrderItemLabel = 'Commerce Order Item';

objectDefinitions.push(objectDefinition);

await modelBuilderPage.goto({objectFolderName: 'Default'});

await modelBuilderPage.toggleSidebarsButton.click();

await modelBuilderPage.fitViewButton.click();

await modelBuilderPage.objectDefinitionNodes
.filter({hasText: commerceOrderItemLabel})
.click();

await expect(
modelBuilderPage.objectDefinitionNodes.filter({
hasText: commerceOrderItemLabel,
})
).toHaveClass(/selected/);

await modelBuilderPage.dragNodeThroughDiagram(
objectDefinition.label['en_US'],
1400,
940
);

await modelBuilderPage.fitViewButton.click();

await expect(
modelBuilderPage.objectDefinitionNodes.filter({
hasText: commerceOrderItemLabel,
})
).not.toHaveClass(/selected/);

await expect(
modelBuilderPage.objectDefinitionNodes.filter({
hasText: objectDefinition.label['en_US'],
})
).toHaveClass(/selected/);
});

test('can create an object definition by model builder', async ({
modalAddObjectDefinitionPage,
modelBuilderPage,
Expand Down

0 comments on commit 1b32686

Please sign in to comment.