+
Default portal ( {{ defaultPortalName }} ) for current operator is not compatible with SDK.
Please select one of the portals available to the operator's access group:
diff --git a/src/app/_services/server-config.service.ts b/src/app/_services/server-config.service.ts
index 5517ccbf..405006d5 100644
--- a/src/app/_services/server-config.service.ts
+++ b/src/app/_services/server-config.service.ts
@@ -3,7 +3,7 @@ import { Utils } from '../_helpers/utils';
import { endpoints } from '../_services/endpoints';
@Injectable({
- providedIn: 'root',
+ providedIn: 'root'
})
export class ServerConfigService {
PCore: any;
@@ -130,14 +130,14 @@ export class ServerConfigService {
const arExcludedPortals = serverConfig['excludePortals'];
let headers = {
Authorization: Utils.sdkGetAuthHeader(),
- 'Content-Type': 'application/json',
+ 'Content-Type': 'application/json'
};
// Using v1 API here as v2 data_views is not able to access same data page currently. Should move to avoid having this logic to find
// a default portal or constellation portal and rather have Constellation JS Engine API just load the default portal
- fetch(`${serverUrl}${appAliasPath}${endpoints.API}${endpoints.DATA}/${dataPageName}`, {
+ fetch(`${serverUrl}${appAliasPath}/${endpoints.API}${endpoints.DATA}/${dataPageName}`, {
method: 'GET',
- headers,
+ headers
})
.then((response) => {
if (response.ok && response.status === 200) {
diff --git a/tests/config.js b/tests/config.js
index c5e550ee..7c73567e 100644
--- a/tests/config.js
+++ b/tests/config.js
@@ -1,28 +1,32 @@
// require('lighthouse/lighthouse-core/config/lr-desktop-config.js');
const config = {
- baseUrl: "http://localhost:3500/portal",
+ baseUrl: 'http://localhost:3500/portal',
apps: {
mediaCo: {
rep: {
- username: "rep@mediaco",
- password: "pega",
+ username: 'rep@mediaco',
+ password: 'pega'
},
manager: {
- username: "manager@mediaco",
- password: "pega",
+ username: 'manager@mediaco',
+ password: 'pega'
},
tech: {
- username: "tech@mediaco",
- password: "pega",
+ username: 'tech@mediaco',
+ password: 'pega'
},
+ admin: {
+ username: 'admin@mediaco',
+ password: 'pega'
+ }
},
digv2: {
user: {
- username: "user.digv2",
- password: "pega",
- },
- },
+ username: 'user.digv2',
+ password: 'pega'
+ }
+ }
},
testsetting: {
// Enable network throttling(Default is false)
@@ -43,8 +47,8 @@ const config = {
width: 1920,
height: 1080,
headless: true,
- devtools: false,
- },
+ devtools: false
+ }
};
exports.config = config;
diff --git a/tests/e2e/MediaCo/portal.spec.js b/tests/e2e/MediaCo/portal.spec.js
index 7caf5be4..9fca502c 100644
--- a/tests/e2e/MediaCo/portal.spec.js
+++ b/tests/e2e/MediaCo/portal.spec.js
@@ -1,21 +1,17 @@
-const path = require("path");
-const { test, expect } = require("@playwright/test");
-const config = require("../../config");
-const common = require("../../common");
-const endpoints = require("../../../sdk-config.json");
+const path = require('path');
+const { test, expect } = require('@playwright/test');
+const config = require('../../config');
+const common = require('../../common');
+const endpoints = require('../../../sdk-config.json');
test.beforeEach(async ({ page }) => {
await page.setViewportSize({ width: 1920, height: 1080 });
- await page.goto("http://localhost:3500/portal", { waitUntil: "networkidle" });
+ await page.goto('http://localhost:3500/portal', { waitUntil: 'networkidle' });
});
let caseID;
-test.describe("E2E test", () => {
- test("should login, create and send for discount", async ({ page }) => {
- await common.Login(
- config.config.apps.mediaCo.rep.username,
- config.config.apps.mediaCo.rep.password,
- page
- );
+test.describe('E2E test', () => {
+ test('should login, create and send for discount', async ({ page }) => {
+ await common.Login(config.config.apps.mediaCo.rep.username, config.config.apps.mediaCo.rep.password, page);
const announcementBanner = page.locator('h2:has-text("Announcements")');
await expect(announcementBanner).toBeVisible();
@@ -23,147 +19,105 @@ test.describe("E2E test", () => {
const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")');
await expect(worklist).toBeVisible();
- const navbar = page.locator("app-navbar");
+ const navbar = page.locator('app-navbar');
await navbar.locator('div[class="psdk-appshell-nav"]').hover();
const createCase = page.locator('mat-list-item[id="create-case-button"]');
await createCase.click();
- const newServiceCase = await page.locator(
- 'mat-list-item[id="case-list-item"] > span:has-text("New Service")'
- );
+ const newServiceCase = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("New Service")');
await newServiceCase.click();
- const firstNameInput = page.locator(
- 'input[data-test-id="BC910F8BDF70F29374F496F05BE0330C"]'
- );
+ const firstNameInput = page.locator('input[data-test-id="BC910F8BDF70F29374F496F05BE0330C"]');
await firstNameInput.click();
- await firstNameInput.type("John");
+ await firstNameInput.type('John');
- const middleNameInput = page.locator(
- 'input[data-test-id="D3691D297D95C48EF1A2B7D6523EF3F0"]'
- );
+ const middleNameInput = page.locator('input[data-test-id="D3691D297D95C48EF1A2B7D6523EF3F0"]');
await middleNameInput.click();
- await middleNameInput.type("");
+ await middleNameInput.type('');
- const lastNameInput = page.locator(
- 'input[data-test-id="77587239BF4C54EA493C7033E1DBF636"]'
- );
+ const lastNameInput = page.locator('input[data-test-id="77587239BF4C54EA493C7033E1DBF636"]');
await lastNameInput.click();
- await lastNameInput.type("Doe");
+ await lastNameInput.type('Doe');
- const suffix = page.locator(
- 'input[data-test-id="56E6DDD1CB6CEC596B433440DFB21C17"]'
- );
+ const suffix = page.locator('input[data-test-id="56E6DDD1CB6CEC596B433440DFB21C17"]');
await suffix.click();
await page.locator('mat-option:has-text("Jr")').click();
- const emailInput = page.locator(
- 'input[data-test-id="CE8AE9DA5B7CD6C3DF2929543A9AF92D"]'
- );
+ const emailInput = page.locator('input[data-test-id="CE8AE9DA5B7CD6C3DF2929543A9AF92D"]');
await emailInput.click();
- await emailInput.type("john@doe.com");
+ await emailInput.type('john@doe.com');
- const serviceDateInput = page.locator(
- 'input[data-test-id="E0BA356AE552ACD4326D51E61F4279AC"]'
- );
+ const serviceDateInput = page.locator('input[data-test-id="E0BA356AE552ACD4326D51E61F4279AC"]');
await serviceDateInput.click();
const futureDate = common.getFutureDate();
await serviceDateInput.type(futureDate);
await page.locator('button:has-text("submit")').click();
- const streetInput = page.locator(
- 'input[data-test-id="D61EBDD8A0C0CD57C22455E9F0918C65"]'
- );
+ const streetInput = page.locator('input[data-test-id="D61EBDD8A0C0CD57C22455E9F0918C65"]');
await streetInput.click();
- await streetInput.type("Main St");
+ await streetInput.type('Main St');
- const cityInput = page.locator(
- 'input[data-test-id="57D056ED0984166336B7879C2AF3657F"]'
- );
+ const cityInput = page.locator('input[data-test-id="57D056ED0984166336B7879C2AF3657F"]');
await cityInput.click();
- await cityInput.type("Cambridge");
+ await cityInput.type('Cambridge');
caseID = await page.locator('div[id="caseId"]').textContent();
- const state = page.locator(
- 'mat-select[data-test-id="46A2A41CC6E552044816A2D04634545D"]'
- );
+ const state = page.locator('mat-select[data-test-id="46A2A41CC6E552044816A2D04634545D"]');
await state.click();
await page.locator('mat-option:has-text("MA")').click();
- const postalCodeInput = page.locator(
- 'input[data-test-id="572ED696F21038E6CC6C86BB272A3222"]'
- );
+ const postalCodeInput = page.locator('input[data-test-id="572ED696F21038E6CC6C86BB272A3222"]');
await postalCodeInput.click();
- await postalCodeInput.type("02142");
+ await postalCodeInput.type('02142');
- const phone = page.locator(
- 'ngx-mat-intl-tel-input[data-test-id="1F8261D17452A959E013666C5DF45E07"]'
- );
- const countrySelector = phone.locator("button.country-selector");
+ const phone = page.locator('ngx-mat-intl-tel-input[data-test-id="1F8261D17452A959E013666C5DF45E07"]');
+ const countrySelector = phone.locator('button.country-selector');
await countrySelector.click();
- await page.locator("div.flag.US >> nth=0").click();
- await phone.locator('input[type="tel"]').type("(201) 555-0123");
+ await page.locator('div.flag.US >> nth=0').click();
+ await phone.locator('input[type="tel"]').type('(201) 555-0123');
await page.locator('button:has-text("submit")').click();
- const tvPackage = page.locator(
- 'mat-checkbox[data-test-id="0B3244CEB2CE9879260EB560BD7A811E"]'
- );
+ const tvPackage = page.locator('mat-checkbox[data-test-id="0B3244CEB2CE9879260EB560BD7A811E"]');
await tvPackage.click();
- await page.locator("text=Premium").click();
+ await page.locator('text=Premium').click();
- const internetPackage = page.locator(
- 'mat-checkbox[data-test-id="C05A1E5DECC321D9792E9A9E15184BE5"]'
- );
+ const internetPackage = page.locator('mat-checkbox[data-test-id="C05A1E5DECC321D9792E9A9E15184BE5"]');
await internetPackage.click();
- await page.locator("text=300 Mbps").click();
+ await page.locator('text=300 Mbps').click();
- const phonePackage = page.locator(
- 'mat-checkbox[data-test-id="7CF3F86883596E49D8D7298CC5B928A2"]'
- );
+ const phonePackage = page.locator('mat-checkbox[data-test-id="7CF3F86883596E49D8D7298CC5B928A2"]');
await phonePackage.click();
- await page.locator("text=International Full").click();
+ await page.locator('text=International Full').click();
await page.locator('button:has-text("submit")').click();
- const otherNotes = page.locator(
- 'textarea[data-test-id="F4C6F851B00D5518BF888815DE279ABA"]'
- );
+ const otherNotes = page.locator('textarea[data-test-id="F4C6F851B00D5518BF888815DE279ABA"]');
await otherNotes.click();
- await otherNotes.type("Thanks for the service!");
+ await otherNotes.type('Thanks for the service!');
- const sendToMgr = page.locator(
- 'mat-checkbox[data-test-id="C3B43E79AEC2D689F0CF97BD6AFB7DC4"]'
- );
+ const sendToMgr = page.locator('mat-checkbox[data-test-id="C3B43E79AEC2D689F0CF97BD6AFB7DC4"]');
await sendToMgr.click();
- const currentCaseID = await page
- .locator('div[id="current-caseID"]')
- .textContent();
- const filePath = path.join(__dirname, "../../../src/assets/cableinfo.png");
- const attachInputId = await page
- .locator('div[id="attachment-container"] >> input')
- .getAttribute("id");
+ const currentCaseID = await page.locator('div[id="current-caseID"]').textContent();
+ const filePath = path.join(__dirname, '../../../src/assets/cableinfo.png');
+ const attachInputId = await page.locator('div[id="attachment-container"] >> input').getAttribute('id');
await page.setInputFiles(`#${attachInputId}`, filePath);
- const PCoreVersion = await page.evaluate(() =>
- window.PCore.getPCoreVersion()
- );
+ const PCoreVersion = await page.evaluate(() => window.PCore.getPCoreVersion());
await Promise.all([
page.waitForResponse(
`${endpoints.serverConfig.infinityRestServerUrl}${
- endpoints.serverConfig.appAlias
- ? `/app/${endpoints.serverConfig.appAlias}`
- : ""
+ endpoints.serverConfig.appAlias ? `/app/${endpoints.serverConfig.appAlias}` : ''
}/api/application/v2/attachments/upload`
- ),
+ )
]);
await page.locator('button:has-text("submit")').click();
@@ -171,36 +125,20 @@ test.describe("E2E test", () => {
await Promise.all([
page.waitForResponse(
`${endpoints.serverConfig.infinityRestServerUrl}${
- endpoints.serverConfig.appAlias
- ? `/app/${endpoints.serverConfig.appAlias}`
- : ""
- }/api/application/v2/cases/${currentCaseID}/attachments${
- PCoreVersion.includes("8.23") ? "?includeThumbnail=false" : ""
- }`
- ),
+ endpoints.serverConfig.appAlias ? `/app/${endpoints.serverConfig.appAlias}` : ''
+ }/api/application/v2/cases/${currentCaseID}/attachments${PCoreVersion.includes('8.23') ? '?includeThumbnail=false' : ''}`
+ )
]);
- const attachmentCount = await page
- .locator('div[id="attachments-count"]')
- .textContent();
+ const attachmentCount = await page.locator('div[id="attachments-count"]').textContent();
await expect(Number(attachmentCount)).toBeGreaterThan(0);
// Click text=Thank you! The next step in this case has been routed appropriately.
- await page
- .locator(
- "text=Thank you! The next step in this case has been routed appropriately."
- )
- .click();
+ await page.locator('text=Thank you! The next step in this case has been routed appropriately.').click();
}, 10000);
- test("should enter a discount value($) and send to tech", async ({
- page,
- }) => {
- await common.Login(
- config.config.apps.mediaCo.manager.username,
- config.config.apps.mediaCo.manager.password,
- page
- );
+ test('should enter a discount value($) and send to tech', async ({ page }) => {
+ await common.Login(config.config.apps.mediaCo.manager.username, config.config.apps.mediaCo.manager.password, page);
const announcementBanner = page.locator('h2:has-text("Announcements")');
await expect(announcementBanner).toBeVisible();
@@ -211,29 +149,17 @@ test.describe("E2E test", () => {
const caseButton = page.locator(`span:has-text('${caseID}')`);
await caseButton.click();
- const mgrDiscountInput = page.locator(
- 'input[data-test-id="D69ECA63310344EDB0D0F9881CF9B662"]'
- );
+ const mgrDiscountInput = page.locator('input[data-test-id="D69ECA63310344EDB0D0F9881CF9B662"]');
- await mgrDiscountInput.type("20");
+ await mgrDiscountInput.type('20');
await page.locator('button:has-text("submit")').click();
- await page
- .locator(
- "text=Thank you! The next step in this case has been routed appropriately."
- )
- .click();
+ await page.locator('text=Thank you! The next step in this case has been routed appropriately.').click();
}, 10000);
- test("should modify(if required) the actual services/packages to be installed and resolve the case", async ({
- page,
- }) => {
- await common.Login(
- config.config.apps.mediaCo.tech.username,
- config.config.apps.mediaCo.tech.password,
- page
- );
+ test('should modify(if required) the actual services/packages to be installed and resolve the case', async ({ page }) => {
+ await common.Login(config.config.apps.mediaCo.tech.username, config.config.apps.mediaCo.tech.password, page);
const announcementBanner = page.locator('h2:has-text("Announcements")');
await expect(announcementBanner).toBeVisible();
@@ -244,19 +170,29 @@ test.describe("E2E test", () => {
const caseButton = page.locator(`span:has-text('${caseID}')`);
await caseButton.click();
- const tvConnected = page.locator(
- 'mat-checkbox[data-test-id="EEF2AA5E42FD9F0FB0A44EA0B2D52921"]'
- );
+ const tvConnected = page.locator('mat-checkbox[data-test-id="EEF2AA5E42FD9F0FB0A44EA0B2D52921"]');
await tvConnected.click();
- const internetConnected = page.locator(
- 'mat-checkbox[data-test-id="C43FA5D99B9290C0885E058F641CAB8D"]'
- );
+ const internetConnected = page.locator('mat-checkbox[data-test-id="C43FA5D99B9290C0885E058F641CAB8D"]');
await internetConnected.click();
await page.locator('button:has-text("submit")').click();
- await page.locator("text=RESOLVED-COMPLETED").click();
+ await page.locator('text=RESOLVED-COMPLETED').click();
+ }, 10000);
+
+ test('should show available portals for admin login', async ({ page }) => {
+ await common.Login(config.config.apps.mediaCo.admin.username, config.config.apps.mediaCo.admin.password, page);
+
+ const defaultPortalErrorMessage = page.locator('div[data-test-id="defaultPortalErrorMessage"]');
+ await expect(defaultPortalErrorMessage).toBeVisible();
+
+ const mediaCoBtn = page.locator('div[class="portal-list-item"]:has-text("MediaCo")');
+ await expect(mediaCoBtn).toBeVisible();
+ await mediaCoBtn.click();
+
+ const announcementBanner = page.locator('h2:has-text("Announcements")');
+ await expect(announcementBanner).toBeVisible();
}, 10000);
});