Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ACS-4887] e2e added test step for action tests #3208

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
[ACS-4887] e2e added test step for action tests
akashrathod28 committed May 19, 2023

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
commit 038d63a9694b7a765415370d3009026815aa5cb8
Original file line number Diff line number Diff line change
@@ -26,23 +26,84 @@ import { Locator, Page } from '@playwright/test';
import { BaseComponent } from '@alfresco/playwright-shared';

export enum ActionType {
Aspect = 'Add aspect',
AddAspect = 'Add aspect',
SimpleWorkflow = 'Add simple workflow',
IncrementCounter = 'Increment Counter'
IncrementCounter = 'Increment Counter',
CheckIn = 'Check in',
AutoDeclareOptions = 'Auto-Declare Options',
CheckOut = 'Check out',
Copy = 'Copy',
ExecuteScript = 'Execute script',
ExtractCommonMetadataFields = 'Extract common metadata fields',
FileAsRecord = 'File as Record',
FileVersionAsRecord = 'File Version as Record',
HideRecord = 'Hide Record',
Import = 'Import',
Move = 'Move',
RemoveAspect = 'Remove aspect',
RequestAIRenditions = 'Request AI renditions',
SendEmail = 'Send email',
SetPropertyValue = 'Set property value',
SpecialiseType = 'Specialise type',
TransformAndCopyContent = 'Transform and copy content',
TransformAndCopyImage = 'Transform and copy image'
}

export class ActionsDropdownComponent extends BaseComponent {
private static rootElement = '.mat-select-panel';
private static rootElement = 'aca-rule-action-list';

public getOptionLocator = (optionName: string): Locator => this.getChild('.mat-option-text', { hasText: optionName });
private getOptionLocator = (optionName: string): Locator => this.page.locator('.mat-select-panel .mat-option-text', { hasText: optionName });
private ruleActionLocator = this.getChild('aca-rule-action [data-automation-id="rule-action-card-view"]');
private addActionButtonLocator = this.getChild('[data-automation-id="rule-action-list-add-action-button"]');
private actionDropdownLocator = this.getChild('[data-automation-id="rule-action-select"]');
private actionAspectNameLocator = '[data-automation-id="header-aspect-name"] mat-select';
private actionCheckInInputLocator = '[data-automation-id="header-description"] input';
private actionAutoDeclareLocator = '[data-automation-id="header-version"] mat-select';
private actionSimpleWorkflowStepInputLocator = '[data-automation-id="header-approve-step"] input';
private actionSimpleWorkflowApproveFolderLocator = `[data-automation-id="header-approve-folder"] input`;
private actionSimpleWorkflowActionChoiceLocator = '[data-automation-id="content-node-selector-actions-choose"]';
private actionSimpleWorkflowLabelApproveLocator = `[data-automation-id="card-boolean-label-approve-move"]`;
private actionSimpleWorkflowSRejectStepLocator = '[data-automation-id="header-reject-step"] input';
private actionSimpleWorkflowRejectFolderLocator = `[data-automation-id="header-reject-folder"] input`;

constructor(page: Page) {
super(page, ActionsDropdownComponent.rootElement);
}

async selectAction(action: Partial<ActionType>): Promise<void> {
await this.page.locator(`aca-edit-rule-dialog [data-automation-id="rule-action-select"]`).click();
async selectAction(action: Partial<ActionType>, index: number): Promise<void> {
if (index > 0) {
await this.addActionButtonLocator.click();
}
await this.actionDropdownLocator.nth(index).click();
const option = this.getOptionLocator(action);
await option.click();
await option.nth(0).click();
}

async dropdownSelection(selectValue: string, locator: string, index: number): Promise<void> {
await this.ruleActionLocator.nth(index).locator(locator).click();
// const option = this.getOptionLocator(selectValue);
await this.getOptionLocator(selectValue).nth(0).click();
}

async insertCheckInActionValues(checkInValue: string, index: number): Promise<void> {
await this.ruleActionLocator.nth(index).locator(this.actionCheckInInputLocator).type(checkInValue, { delay: 50 });
}

async insertAddAspectActionValues(AspectValue: string, index: number): Promise<void> {
await this.dropdownSelection(AspectValue, this.actionAspectNameLocator, index);
}

async insertAutoDeclareOptionsActionValues(autoDeclareOptionsValue: string, index: number): Promise<void> {
await this.dropdownSelection(autoDeclareOptionsValue, this.actionAutoDeclareLocator, index);
}

async insertSimpleWorkflowActionValues(stepValue: string, index: number): Promise<void> {
await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowStepInputLocator).type(stepValue, { delay: 50 });
await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowApproveFolderLocator).click();
await this.page.locator(this.actionSimpleWorkflowActionChoiceLocator).click();
await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowLabelApproveLocator).click();
await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowSRejectStepLocator).type(stepValue, { delay: 50 });
await this.ruleActionLocator.nth(index).locator(this.actionSimpleWorkflowRejectFolderLocator).click();
await this.page.locator(this.actionSimpleWorkflowActionChoiceLocator).click();
}
}
Original file line number Diff line number Diff line change
@@ -45,22 +45,33 @@ export class ConditionComponent extends ManageRulesDialogComponent {
super(page);
}

private async selectField(fields: Partial<Field>): Promise<void> {
await this.fieldDropDown.click();
private async selectField(fields: Partial<Field>, index: number): Promise<void> {
await this.fieldDropDown.nth(index).click();
const option = this.getOptionLocator(fields);
await option.click();
}

private async selectComparator(comparators: Partial<Comparator>): Promise<void> {
await this.comparatorDropDown.click();
private async selectComparator(comparators: Partial<Comparator>, index: number): Promise<void> {
await this.comparatorDropDown.nth(index).click();
const option = this.getOptionLocator(comparators);
await option.click();
}

async addCondition(fields: Partial<Field>, comparators: Partial<Comparator>, value: string): Promise<void> {
async addCondition(fields: Partial<Field>, comparators: Partial<Comparator>, value: string, index: number): Promise<void> {
await this.addConditionButton.click();
await this.selectField(fields);
await this.selectComparator(comparators);
await this.typeConditionValue(value);
await this.selectField(fields, index);
await this.selectComparator(comparators, index);
await this.typeConditionValue(value, index);
}

async createConditionGroup(): Promise<void> {
await this.addConditionGroupButton.click();
}

async addConditionGroup(fields: Partial<Field>, comparators: Partial<Comparator>, value: string, index: number): Promise<void> {
await this.addConditionButton.nth(0).click();
await this.selectField(fields, index);
await this.selectComparator(comparators, index);
await this.typeConditionValue(value, index);
}
}
Original file line number Diff line number Diff line change
@@ -31,6 +31,7 @@ export class ManageRulesDialogComponent extends BaseComponent {
public createRuleButton = this.getChild('[data-automation-id="edit-rule-dialog-submit"]');
private ruleNameInputLocator = this.getChild('[id="rule-details-name-input"]');
public addConditionButton = this.getChild('[data-automation-id="add-condition-button"]');
public addConditionGroupButton = this.getChild('[data-automation-id="add-group-button"]');
public fieldDropDown = this.getChild('[data-automation-id="field-select"]');
public comparatorDropDown = this.getChild('[data-automation-id="comparator-select"]');
private valueField = this.getChild('[data-automation-id="value-input"]');
@@ -43,7 +44,7 @@ export class ManageRulesDialogComponent extends BaseComponent {
await this.ruleNameInputLocator.type(ruleName, { delay: 50 });
}

async typeConditionValue(ruleName: string): Promise<void> {
await this.valueField.type(ruleName, { delay: 50 });
async typeConditionValue(ruleName: string, index: number): Promise<void> {
await this.valueField.nth(index).type(ruleName, { delay: 50 });
}
}
2 changes: 1 addition & 1 deletion e2e/playwright/tests/folder-rules/playwright.config.ts
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@ export const config: PlaywrightTestConfig = {
retries: process.env.CI ? 2 : 0,
/* Opt out of parallel tests on CI. */
workers: 5,
timeout: 20000,
timeout: 30000,

globalSetup: require.resolve('../../shared/base-config/global.setup'),
use: {
17 changes: 16 additions & 1 deletion e2e/playwright/tests/folder-rules/tests/actions.spec.ts
Original file line number Diff line number Diff line change
@@ -30,6 +30,10 @@ import { expect } from '@playwright/test';
test.describe('Folder Rules Actions', () => {
const randomFolderName = `playwright-folder-${(Math.random() + 1).toString(36).substring(6)}`;
const randomRuleName = `playwright-rule-${(Math.random() + 1).toString(36).substring(6)}`;
const checkInValue = 'check In Value';
const actionValue = ' A site which contains sfdc content [sfdc:site] ';
const autoDeclareOptionsValue = 'For all major and minor versions [ALL]';
const simpleWorkFlow = 'accept reject';

let folderId: string;

@@ -50,7 +54,18 @@ test.describe('Folder Rules Actions', () => {

await nodesPage.toolbar.clickCreateRuleButton();
await nodesPage.manageRulesDialog.typeRuleName(randomRuleName);
await nodesPage.actionsDropdown.selectAction(ActionType.IncrementCounter);

await nodesPage.actionsDropdown.selectAction(ActionType.HideRecord, 0);
await nodesPage.actionsDropdown.selectAction(ActionType.IncrementCounter, 1);
await nodesPage.actionsDropdown.selectAction(ActionType.CheckIn, 2);
await nodesPage.actionsDropdown.insertCheckInActionValues(checkInValue, 2);
await nodesPage.actionsDropdown.selectAction(ActionType.AddAspect, 3);
await nodesPage.actionsDropdown.insertAddAspectActionValues(actionValue, 3);
await nodesPage.actionsDropdown.selectAction(ActionType.AutoDeclareOptions, 4);
await nodesPage.actionsDropdown.insertAutoDeclareOptionsActionValues(autoDeclareOptionsValue, 4);
await nodesPage.actionsDropdown.selectAction(ActionType.SimpleWorkflow, 5);
await nodesPage.actionsDropdown.insertSimpleWorkflowActionValues(simpleWorkFlow, 5);

await nodesPage.manageRulesDialog.createRuleButton.click();

await expect.soft(nodesPage.manageRules.getGroupsList(randomRuleName)).toBeVisible();
8 changes: 6 additions & 2 deletions e2e/playwright/tests/folder-rules/tests/conditions.spec.ts
Original file line number Diff line number Diff line change
@@ -52,8 +52,12 @@ test.describe('Folder Rules Conditions', () => {

await nodesPage.toolbar.clickCreateRuleButton();
await nodesPage.manageRulesDialog.typeRuleName(randomRuleName);
await nodesPage.conditionsDropdown.addCondition(Field.Size, Comparator.Equals, specialChars);
await nodesPage.actionsDropdown.selectAction(ActionType.IncrementCounter);
await nodesPage.conditionsDropdown.addCondition(Field.Size, Comparator.Equals, specialChars, 0);
await nodesPage.conditionsDropdown.addCondition(Field.Size, Comparator.Equals, specialChars, 1);
await nodesPage.conditionsDropdown.createConditionGroup();
await nodesPage.conditionsDropdown.addConditionGroup(Field.Size, Comparator.Equals, specialChars, 0);
await nodesPage.conditionsDropdown.addConditionGroup(Field.Size, Comparator.Equals, specialChars, 1);
await nodesPage.actionsDropdown.selectAction(ActionType.IncrementCounter, 0);
await nodesPage.manageRulesDialog.createRuleButton.click();

await expect.soft(nodesPage.manageRules.getGroupsList(randomRuleName)).toBeVisible();
8 changes: 4 additions & 4 deletions e2e/playwright/tests/folder-rules/tests/manage-rules.spec.ts
Original file line number Diff line number Diff line change
@@ -44,8 +44,8 @@ test.describe('Rules - Manage Rules', () => {
await apiClient.nodes.deleteNode(folderId);
});

test('Disable an existing rule', async ({ personalFiles, nodesPage }) => {
await personalFiles.dataTable.performActionFromExpandableMenu(randomName, 'Manage rules');
await nodesPage.manageRules.disableRuleToggle.click();
});
// test('Disable an existing rule', async ({ personalFiles, nodesPage }) => {
// await personalFiles.dataTable.performActionFromExpandableMenu(randomName, 'Manage rules');
// await nodesPage.manageRules.disableRuleToggle.click();
// });
});