Skip to content

Commit 8670808

Browse files
Add test for testrun view and issues
1 parent 5de02b9 commit 8670808

File tree

21 files changed

+449
-177
lines changed

21 files changed

+449
-177
lines changed

e2e/api/base.api.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ export class BaseAPI {
2020
}
2121

2222
expect(atError).toBeDefined(ApiAssertMessages.errorNotRaised);
23-
expect(atError.message).toBe(expectedError, ApiAssertMessages.errorIsWrong);
23+
expect(atError).toBe(expectedError, ApiAssertMessages.errorIsWrong);
2424
}
2525
}

e2e/elements/autocomplete.element.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ export class Autocomplete extends BaseElement implements WithSearch {
1010

1111
private input = new Input(this.element.element(by.tagName('input')));
1212
private disabledElement = this.element.element(by.css('.disabled-lookup'));
13+
private selectedOptionAction = this.element.element(by.css('.input-group-append > .autocomplete-action, .disabled-lookup > .autocomplete-action'));
1314

1415
public enterValue(value: string) {
1516
return this.input.typeText(value);
1617
}
1718

19+
public async clickAddOption(value: string) {
20+
await this.enterValue(value);
21+
return this.selectOption('Add');
22+
}
23+
1824
public selectOption(value: string) {
1925
const option = this.findOption(value);
2026
browser.executeScript('arguments[0].scrollIntoView();', option.getWebElement());
@@ -27,7 +33,7 @@ export class Autocomplete extends BaseElement implements WithSearch {
2733
}
2834

2935
private findOption(value: string) {
30-
return this.element.element(by.xpath(`.//*[contains(@class, "selector-suggestions")]//li[@title="${value}"]`));
36+
return this.element.element(by.xpath(`.//*[contains(@class, "selector-suggestions")]//li[contains(@title,"${value}")]`));
3137
}
3238

3339
public async getValue() {
@@ -51,4 +57,13 @@ export class Autocomplete extends BaseElement implements WithSearch {
5157
await this.enterValue(value);
5258
return this.findOption(value).isPresent();
5359
}
60+
61+
clickActionForSelected() {
62+
return this.selectedOptionAction.click();
63+
}
64+
65+
async clickActionForOption(option: string) {
66+
await this.enterValue(option);
67+
return this.findOption(option).element(by.css('.autocomplete-action')).click();
68+
}
5469
}

e2e/elements/lookup.element.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export class Lookup extends BaseElement {
1414
return this.selector.getText();
1515
}
1616

17-
logger.warn(`Colored Lookup '${this.element.locator()}' is hidden!`);
17+
logger.warn(`Lookup '${this.element.locator()}' is hidden!`);
1818
return '';
1919
}
2020

@@ -32,7 +32,7 @@ export class Lookup extends BaseElement {
3232
}
3333

3434
private findOption(value: string) {
35-
return this.element.element(by.xpath(`//*[contains(@class, "selector-suggestions")]//li[@title="${value}"]`));
35+
return this.element.element(by.xpath(`.//*[contains(@class, "selector-suggestions")]//li[@title="${value}"]`));
3636
}
3737

3838
public async isEnabled() {

e2e/pages/modals/issueCreate.po/constants.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,24 @@ import { Autocomplete } from '../../../elements/autocomplete.element';
33
import { Input } from '../../../elements/input.element';
44
import { Lookup } from '../../../elements/lookup.element';
55
import { SmartTable } from '../../../elements/smartTable.element';
6+
import { UiSwitch } from '../../../elements/ui-switch';
7+
8+
const baseElement = element(by.tagName('issue-create-modal'));
69

710
export const elements = {
8-
uniqueElement: element(by.tagName('issue-create-modal')),
9-
title: new Input(by.id('title')),
10-
resolution: new Lookup(by.id('issue-resolution')),
11-
assignee: new Autocomplete(by.id('issue-assignee')),
12-
save: element(by.css('issue-create-modal div.modal-buttons-form > button.btn-success')),
13-
cancel: element(by.css('issue-create-modal div.modal-buttons-form > button.btn-secondary')),
14-
overlappedIssues: new SmartTable(by.id('overlapped-issues-table')),
15-
expressionError: element(by.css('#issue-expression + div.invalid-feedback')),
16-
expression: new Input(by.id('issue-expression')),
17-
externalIssue: new Input(by.id('issue-external-url')),
11+
uniqueElement: baseElement,
12+
title: new Input(baseElement.element(by.id('title'))),
13+
resolution: new Lookup(baseElement.element(by.id('issue-resolution'))),
14+
assignee: new Autocomplete(baseElement.element(by.id('issue-assignee'))),
15+
save: baseElement.element(by.css('div.modal-buttons-form > button.btn-success')),
16+
cancel: baseElement.element(by.css('div.modal-buttons-form > button.btn-secondary')),
17+
matchExample: baseElement.element(by.css('.regexp-tester > .text-base')),
18+
overlappedIssues: new SmartTable(baseElement.element(by.id('overlapped-issues-table'))),
19+
expressionError: baseElement.element(by.css('#issue-expression + div.invalid-feedback')),
20+
expression: new Input(baseElement.element(by.id('issue-expression'))),
21+
externalIssue: new Input(baseElement.element(by.id('issue-external-url'))),
22+
addToResults: new UiSwitch(baseElement.element(by.css('#update-results'))),
23+
description: new Input(baseElement.element(by.id('issue-description'))),
1824
};
1925

2026
export const names = {

e2e/pages/modals/issueCreate.po/index.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,34 @@ class IssueCreateModal extends BasePage {
6262
getResolution(): Promise<string> {
6363
return elements.resolution.getValue();
6464
}
65+
66+
getMatchExample(): promise.Promise<string> {
67+
return elements.matchExample.getText();
68+
}
69+
70+
getTitle(): promise.Promise<string> {
71+
return elements.title.getValue();
72+
}
73+
74+
isAddToResultsSelected(): Promise<boolean> {
75+
return elements.addToResults.isOn();
76+
}
77+
78+
setAddToResults(state: boolean): Promise<void> {
79+
return elements.addToResults.setState(state);
80+
}
81+
82+
async isEditable(): Promise<boolean> {
83+
const title = await elements.title.isEnabled();
84+
const description = await elements.description.isEnabled();
85+
const resolution = await elements.resolution.isEnabled();
86+
const assignee = await elements.assignee.isEnabled();
87+
const extarnalIssue = await elements.externalIssue.isEnabled();
88+
const expression = await elements.expression.isEnabled();
89+
const saveAndAssign = await elements.save.isPresent();
90+
91+
return title || description || resolution || assignee || extarnalIssue || expression || saveAndAssign;
92+
}
6593
}
6694

6795
export const issueCreateModal = new IssueCreateModal();

e2e/pages/testrun/view.po/index.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,22 @@ class TestRunView extends BasePage {
173173
checkIfTableEqualToCSV(path: string): Promise<{ result: boolean, message: string }> {
174174
return elements.resultsTable.checkIfTableEqualToCSv(path);
175175
}
176+
177+
async addIssue(title: string, testName: string): Promise<void> {
178+
return (await elements.resultsTable.getElementsForCell(columns.issue, testName, columns.testName)).autocomplete().clickAddOption(title);
179+
}
180+
181+
async openNotSelectedIssue(title: string, testName: string): Promise<void> {
182+
return (await elements.resultsTable.getElementsForCell(columns.issue, testName, columns.testName)).autocomplete().clickActionForOption(title);
183+
}
184+
185+
async openSelectedIssue(testName: string): Promise<void> {
186+
return (await elements.resultsTable.getElementsForCell(columns.issue, testName, columns.testName)).autocomplete().clickActionForSelected();
187+
}
188+
189+
async isIssuePresent(title: string, testName: string): Promise<boolean> {
190+
return (await elements.resultsTable.getElementsForCell(columns.issue, testName, columns.testName)).autocomplete().hasOption(title);
191+
}
176192
}
177193

178194
export const testRunView = new TestRunView();

e2e/specs/hooks.spec.ts

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,22 @@ beforeAll(async () => {
2929
throw new Error(`Backend is unavailable ${environment.host}`);
3030
}
3131
await logIn.navigateTo();
32-
// await logIn.logInAs(
33-
// usersTestData.admin.user_name,
34-
// usersTestData.admin.password
35-
// );
36-
// await projectList.menuBar.administration();
37-
// await userAdministration.create(usersTestData.autoAdmin);
38-
// await userAdministration.create(usersTestData.localAdmin);
39-
// await userAdministration.create(usersTestData.auditAdmin);
40-
// await userAdministration.create(usersTestData.assignedAuditor);
41-
// await userAdministration.create(usersTestData.localManager);
42-
// await userAdministration.create(usersTestData.localEngineer);
43-
// await userAdministration.create(usersTestData.manager);
44-
// await userAdministration.create(usersTestData.projectTemp);
45-
// await userAdministration.create(usersTestData.viewer);
46-
// await userAdministration.create(usersTestData.unitCoordinator);
47-
// await userAdministration.menuBar.clickLogOut();
32+
await logIn.logInAs(
33+
usersTestData.admin.user_name,
34+
usersTestData.admin.password
35+
);
36+
await projectList.menuBar.administration();
37+
await userAdministration.create(usersTestData.autoAdmin);
38+
await userAdministration.create(usersTestData.localAdmin);
39+
await userAdministration.create(usersTestData.auditAdmin);
40+
await userAdministration.create(usersTestData.assignedAuditor);
41+
await userAdministration.create(usersTestData.localManager);
42+
await userAdministration.create(usersTestData.localEngineer);
43+
await userAdministration.create(usersTestData.manager);
44+
await userAdministration.create(usersTestData.projectTemp);
45+
await userAdministration.create(usersTestData.viewer);
46+
await userAdministration.create(usersTestData.unitCoordinator);
47+
await userAdministration.menuBar.clickLogOut();
4848
});
4949

5050
beforeEach(async () => {
@@ -55,18 +55,18 @@ beforeEach(async () => {
5555
});
5656

5757
afterAll(async () => {
58-
// await logIn.logInAs(
59-
// usersTestData.admin.user_name,
60-
// usersTestData.admin.password
61-
// );
62-
// await projectList.menuBar.administration();
63-
// await userAdministration.remove(usersTestData.localAdmin.user_name);
64-
// await userAdministration.remove(usersTestData.autoAdmin.user_name);
65-
// await userAdministration.remove(usersTestData.localManager.user_name);
66-
// await userAdministration.remove(usersTestData.localEngineer.user_name);
67-
// await userAdministration.remove(usersTestData.manager.user_name);
68-
// await userAdministration.remove(usersTestData.projectTemp.user_name);
69-
// await userAdministration.remove(usersTestData.viewer.user_name);
70-
// await userAdministration.remove(usersTestData.unitCoordinator.user_name);
71-
// await userAdministration.menuBar.clickLogOut();
58+
await logIn.logInAs(
59+
usersTestData.admin.user_name,
60+
usersTestData.admin.password
61+
);
62+
await projectList.menuBar.administration();
63+
await userAdministration.remove(usersTestData.localAdmin.user_name);
64+
await userAdministration.remove(usersTestData.autoAdmin.user_name);
65+
await userAdministration.remove(usersTestData.localManager.user_name);
66+
await userAdministration.remove(usersTestData.localEngineer.user_name);
67+
await userAdministration.remove(usersTestData.manager.user_name);
68+
await userAdministration.remove(usersTestData.projectTemp.user_name);
69+
await userAdministration.remove(usersTestData.viewer.user_name);
70+
await userAdministration.remove(usersTestData.unitCoordinator.user_name);
71+
await userAdministration.menuBar.clickLogOut();
7272
});

e2e/specs/issues/issues.view.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const issue: Issue = {
3535

3636
let issueIsUse: Issue;
3737

38-
fdescribe('Issue Create from List:', () => {
38+
describe('Issue Create from List:', () => {
3939
using(editorExamples, (user, description) => {
4040
describe(`Permissions: ${description} role:`, () => {
4141
const projectHelper: ProjectHelper = new ProjectHelper();

0 commit comments

Comments
 (0)