@digital-ai/devops-page-object-deploy 0.0.0-snapshot-20251121140708 → 0.0.0-snapshot-20251124123340

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @digital-ai/devops-page-object-deploy
2
2
 
3
- ## 0.0.0-snapshot-20251121140708
3
+ ## 0.0.0-snapshot-20251124123340
4
4
 
5
5
  ### Patch Changes
6
6
 
package/dist/main.js CHANGED
@@ -123,6 +123,7 @@ class $647b67e126f2dbe0$export$c88e1d16f82516d extends (0, $ae23b16684112d0b$exp
123
123
 
124
124
 
125
125
 
126
+
126
127
  class $64bc587a017c1e89$export$12530425267834a9 extends (0, $ae23b16684112d0b$export$2b65d1d97338f32b) {
127
128
  /* Helps to create a new Environment */ async createEnvironment(environmentName, hostName) {
128
129
  await this.page.locator('input[name="name"]').fill(environmentName);
@@ -133,6 +134,10 @@ class $64bc587a017c1e89$export$12530425267834a9 extends (0, $ae23b16684112d0b$ex
133
134
  await this.page.getByRole("button", {
134
135
  name: "Save and close"
135
136
  }).click();
137
+ const toastMessage = this.page.locator(".redux-toastr .rrt-text:visible");
138
+ await (0, $1UEKj$playwrighttest.expect)(toastMessage).toHaveText("Your change was saved.", {
139
+ timeout: 5000
140
+ });
136
141
  }
137
142
  }
138
143
 
@@ -154,6 +159,10 @@ class $408106958eb335da$export$1533b625ec0c75e2 extends (0, $ae23b16684112d0b$ex
154
159
  await this.page.getByRole("button", {
155
160
  name: "Save and close"
156
161
  }).click();
162
+ const toastMessage = this.page.locator(".redux-toastr .rrt-text:visible");
163
+ await (0, $1UEKj$playwrighttest.expect)(toastMessage).toHaveText("Your change was saved.", {
164
+ timeout: 5000
165
+ });
157
166
  }
158
167
  /* Creates a new deployment package */ async createNewDeploymentPackage(applicationName, packageName) {
159
168
  const appDataId = `Applications/${applicationName}`;
@@ -180,6 +189,10 @@ class $408106958eb335da$export$1533b625ec0c75e2 extends (0, $ae23b16684112d0b$ex
180
189
  await this.page.getByRole("button", {
181
190
  name: "Save and close"
182
191
  }).click();
192
+ const toastMessage = this.page.locator(".redux-toastr .rrt-text:visible");
193
+ await (0, $1UEKj$playwrighttest.expect)(toastMessage).toHaveText("Your change was saved.", {
194
+ timeout: 5000
195
+ });
183
196
  }
184
197
  /* Creates a new command application */ async createNewCmdApplication(values) {
185
198
  const appDataId = `Applications/${values[0]}`;
@@ -211,6 +224,10 @@ class $408106958eb335da$export$1533b625ec0c75e2 extends (0, $ae23b16684112d0b$ex
211
224
  await (0, $1UEKj$playwrighttest.expect)(saveBtn).toBeEnabled();
212
225
  await saveBtn.click();
213
226
  await this.page.waitForTimeout(3000);
227
+ const toastMessage = this.page.locator(".redux-toastr .rrt-text:visible");
228
+ await (0, $1UEKj$playwrighttest.expect)(toastMessage).toHaveText("Your change was saved.", {
229
+ timeout: 5000
230
+ });
214
231
  // Close dialog
215
232
  await this.page.locator("i.xl-icon.close-icon").first().click();
216
233
  }
@@ -279,7 +296,7 @@ class $fea68740c371df96$export$b8a443164510a1b4 extends (0, $ae23b16684112d0b$ex
279
296
  async verifyTheDeploymentValues(values) {
280
297
  await this.page.locator('div.deployment-task-filter-task-id input[placeholder="Search"]:visible').first().fill(values[0]);
281
298
  await this.page.waitForSelector("td.report-table-package .deployment-report-package", {
282
- timeout: 30000
299
+ timeout: 5000
283
300
  });
284
301
  await (0, $1UEKj$playwrighttest.expect)(this.page.locator("td.report-table-package .deployment-report-package")).toContainText(new RegExp(`${values[2]}\\/${values[3]}`, "i"));
285
302
  await (0, $1UEKj$playwrighttest.expect)(this.page.locator("td.report-table-originalType .deployment-report-task-type")).toHaveText(/Initial/i); // Regex ignores case
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["apps/deploy/index.ts","apps/deploy/fixtures/index.ts","apps/deploy/pages/index.ts","apps/deploy/pages/homePage.ts","apps/deploy/pages/withPage.ts","apps/deploy/pages/usersPage.ts","apps/deploy/pages/infrastructure/overthereLocalHostPage.ts","apps/deploy/pages/environmentsPage.ts","apps/deploy/pages/applications/applicationsPage.ts","apps/deploy/pages/reportsPage.ts","apps/deploy/pages/loginPage.ts"],"sourcesContent":["export { test } from './fixtures';\n","import { test as base, Page } from '@playwright/test';\nimport { Navigation } from '../pages';\nimport { LoginPage } from '../pages/loginPage';\n\ntype DeployFixtures = {\n fixtures: Fixtures;\n loginPage: LoginPage;\n navigation: Navigation;\n};\n\nexport const test = base.extend<DeployFixtures>({\n fixtures: async ({ page }, use) => {\n const fixtures = new Fixtures(page);\n await use(fixtures);\n return fixtures;\n },\n loginPage: async ({ page }, use) => {\n const loginPage = new LoginPage(page);\n await use(loginPage);\n return loginPage;\n },\n navigation: async ({ page }, use) => {\n const navigationPage = new Navigation(page);\n await use(navigationPage);\n return navigationPage;\n },\n});\n\nclass Fixtures {\n private readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { Page } from '@playwright/test';\nimport { HomePage } from './homePage';\nimport { UserPage } from './usersPage';\nimport { OverthereLocalHostPage } from './infrastructure/overthereLocalHostPage';\nimport { EnvironmentsPage } from './environmentsPage';\nimport { ApplicationsPage } from './applications/applicationsPage';\nimport { ReportsPage } from './reportsPage';\n\nexport class Navigation {\n private readonly page: Page;\n homePage: HomePage;\n userPage: UserPage;\n overthereLocalHostPage: OverthereLocalHostPage;\n environmentsPage: EnvironmentsPage;\n applicationsPage: ApplicationsPage;\n reportsPage: ReportsPage;\n\n constructor(page: Page) {\n this.page = page;\n this.homePage = new HomePage(page);\n this.userPage = new UserPage(page);\n this.overthereLocalHostPage = new OverthereLocalHostPage(page);\n this.environmentsPage = new EnvironmentsPage(page);\n this.applicationsPage = new ApplicationsPage(page, this);\n this.reportsPage = new ReportsPage(page);\n }\n\n async navigateToHomePage(): Promise<void> {\n await this.page.goto('/home');\n }\n\n async navigateToUserPage(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n }\n\n async clickCollapseSideView(): Promise<void> {\n const collapseButton = this.page.getByTestId('back-button');\n await collapseButton.click();\n }\n\n /* Helps to navigate to the Applications page */\n async navigateToApplicationsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Applications\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Applications\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Application' }).click();\n }\n\n /* Helps to navigate to the Environments page */\n async navigateToEnvironmentsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Environments\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Environments\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Environment' }).click();\n }\n\n /* Helps to navigate to the Overthere LocalHost page */\n async navigateToOverthereLocalHostPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Infrastructure\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Infrastructure\"]').click();\n // await this.page.waitForTimeout(5000);\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'overthere' }).click();\n await this.page.getByRole('link', { name: 'LocalHost' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class HomePage extends WithPage {\n async clickUserManagement(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n await this.page.getByRole('link', { name: 'Users' }).click();\n }\n\n async verifyDeployLogoIsPresent(): Promise<void> {\n const logo = this.page.getByAltText('Deploy');\n await expect(logo).toBeVisible();\n }\n\n async verifyDeployTextIsPresent(): Promise<void> {\n const title = this.page.getByTitle('digital.ai');\n await expect(title).toBeVisible();\n }\n\n async clickReports(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Reports' }).click();\n }\n}\n","import { Page } from '@playwright/test';\n\nexport class WithPage {\n protected readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class UserPage extends WithPage {\n /* Create a new user */\n async createNewUser(username: string, email: string, password: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByRole('button', { name: 'Add user' }).click();\n await this.page.locator('input[name=\"username\"]').fill(username);\n await this.page.locator('input[name=\"fullName\"]').fill(username);\n await this.page.locator('input[name=\"email\"]').fill(email);\n const passwordInput = this.page.locator('input[name=\"password\"]');\n await passwordInput.click({ force: true });\n await passwordInput.fill(password);\n await this.page.locator('input[name=\"confirmPassword\"]').fill(password);\n await this.page.getByRole('button', { name: 'Save' }).click();\n }\n\n /* Verify success message */\n async verifySuccessMessage(): Promise<void> {\n const SuccessMessage = this.page.getByRole('alertdialog');\n await expect(SuccessMessage).toBeVisible();\n await expect(SuccessMessage).toHaveText(/User \".*\" created/i);\n }\n\n /* Verify user error message */\n async verifyUserErrorMessage(): Promise<void> {\n await expect(this.page.locator('.rrt-middle-container[role=\"alertdialog\"]').nth(1)).toContainText(\n /already in use/i,\n );\n }\n\n /* Delete the user and verify it is deleted */\n async deleteTheUserAndVerifyItIsDeleted(username: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('td.users-table-actions button.delete.xl-icon.table-action').click();\n await this.page.getByRole('button', { name: 'Delete', exact: true }).click();\n const DeleteMessage = this.page.getByRole('alertdialog');\n await expect(DeleteMessage).toBeVisible();\n await expect(DeleteMessage).toHaveText(/User \".*\" deleted/i);\n }\n\n /* Edit the user and verify the changes */\n async editUserAndVerify(username: string, editfullname: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('i.icon-edit.dot-i').first().click();\n await this.page.locator('input[name=\"fullName\"]').fill(editfullname);\n await this.page.getByRole('button', { name: 'Save', exact: true }).click();\n const EditMessage = this.page.getByRole('alertdialog');\n await expect(EditMessage).toBeVisible();\n await expect(EditMessage).toContainText('Your change was saved');\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from '../withPage';\n\nexport class OverthereLocalHostPage extends WithPage {\n /* Helps to create a LocalHost of type UNIX/Windows/Zos */\n async createHostForGivenType(name: string, type: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(name);\n await this.page.locator('label:has-text(\"Operating system\")').locator('xpath=following::input[1]').click();\n await this.page.getByText(type, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class EnvironmentsPage extends WithPage {\n /* Helps to create a new Environment */\n async createEnvironment(environmentName: string, hostName: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(environmentName);\n await this.page.locator('i.xl-icon.arrow-down-icon.show-all').nth(0).click();\n await this.page.getByTitle(`Infrastructure/${hostName}`, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from '../withPage';\n\nexport class ApplicationsPage extends WithPage {\n taskId!: string;\n executedText!: string;\n private navigation: any;\n\n constructor(page: any, navigation: any) {\n super(page);\n this.navigation = navigation;\n }\n\n /* Creates a new application */\n async createNewApplication(applicationName: string): Promise<void> {\n await this.navigation.navigateToApplicationsPage();\n await this.page.locator('input[name=\"name\"]').waitFor({ state: 'visible' });\n await this.page.locator('input[name=\"name\"]').click();\n await this.page.locator('input[name=\"name\"]').fill(applicationName);\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n }\n\n /* Creates a new deployment package */\n async createNewDeploymentPackage(applicationName: string, packageName: string): Promise<void> {\n const appDataId = `Applications/${applicationName}`;\n\n // Expand Applications\n const root = this.page.locator('div[data-id=\"Applications\"] .infinite-tree-node > a');\n await root.click();\n\n // Hover over app node\n const appNode = this.page.locator(`span[data-id=\"${appDataId}\"]`);\n await expect(appNode).toBeVisible();\n await appNode.hover();\n\n // Open context menu + create new deployment package\n const contextMenu = this.page.locator(`i.context-menu-button[data-id=\"${appDataId}\"]`);\n await expect(contextMenu).toBeVisible();\n await contextMenu.click();\n\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Deployment Package' }).click();\n\n // Fill & save\n const nameInput = this.page.locator('input[name=\"name\"]');\n await nameInput.fill(packageName);\n\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n }\n\n /* Creates a new command application */\n async createNewCmdApplication(values: string[]): Promise<void> {\n const appDataId = `Applications/${values[0]}`;\n const packageDataId = `Applications/${values[0]}/${values[1]}`;\n\n // Expand app node and click package\n await this.page.locator(`div[data-id=\"${appDataId}\"] .infinite-tree-node > a`).click();\n const packageNode = this.page.locator(`span[data-id=\"${packageDataId}\"]`).first();\n await expect(packageNode).toBeVisible();\n await packageNode.click();\n\n // Open context menu\n const packageMenu = this.page.locator(`i.context-menu-button[data-id=\"${packageDataId}\"]`);\n await expect(packageMenu).toBeVisible();\n await packageMenu.click();\n\n // Create Command application\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'cmd' }).click();\n await this.page.getByRole('link', { name: 'Command' }).click();\n\n await this.page.locator('input[name=\"name\"]').fill(values[2]);\n\n await this.page.locator('textarea[name=\"commandLine\"]').fill(values[3]);\n\n const saveBtn = this.page.locator('button', { hasText: /^Save$/ }).first();\n await expect(saveBtn).toBeEnabled();\n await saveBtn.click();\n await this.page.waitForTimeout(3000);\n\n // Close dialog\n await this.page.locator('i.xl-icon.close-icon').first().click();\n }\n\n /*Deploy the application*/\n async deployApp(values: string[]): Promise<void> {\n const versionNode = `Applications/${values[0]}/${values[1]}`;\n await this.page.locator(`i.context-menu-button[data-id=\"${versionNode}\"]`).click();\n await this.page.getByRole('link', { name: 'Deploy', exact: true }).click();\n await this.page.locator(`input[name=\"selections\"][value=\"Environments/${values[2]}\"]`).click();\n await this.page.getByRole('button', { name: 'Continue' }).click();\n\n await this.page.locator('.errors-wrapper').waitFor({ state: 'attached', timeout: 5000 });\n\n const errorIcon = this.page.locator('a.validation-icons-wrapper.error');\n\n if (await errorIcon.isVisible()) {\n await this.page.getByRole('button', { name: 'Deployment Properties' }).click();\n await this.page.locator('input[name=\"username\"]').fill(values[3]);\n await this.page.getByRole('button', { name: 'Save' }).click();\n } else {\n }\n\n await this.page.locator('button.deploy.xl-primary').click();\n\n //Get the task id\n this.taskId = (await this.page.locator('div.task-id').textContent()) || '';\n\n //Verify no failure and all are done\n const labels = this.page.locator('span.label');\n await expect(labels).toHaveCount(3);\n await expect(labels).toHaveText(['EXECUTED', 'DONE', 'DONE']);\n\n //Get the text executed\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n this.executedText = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify in monitoring tab searching with the task id\n await this.page.locator('div[data-id=\"TASK_MONITOR\"] .infinite-tree-node > a').click();\n await this.page.locator('span[data-id=\"DEPLOYMENT_TASKS\"]').dblclick();\n await this.page.waitForTimeout(5000);\n\n await this.page.locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]').first().fill(this.taskId);\n const stateText = await this.page.locator('td.tasks-table-state').first().innerText();\n expect(stateText.trim()).toBe('Executed');\n\n //Click the row to go to deployment screen\n await this.page.locator('table.table.table-striped tbody tr').first().dblclick();\n\n await this.page.locator('button.finish.xl-primary').click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class ReportsPage extends WithPage {\n /* Clicks on the Deployment Tasks section */\n async clickDeploymentTasks(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Deployments' }).click();\n }\n\n async verifyTheDeploymentValues(values: string[]): Promise<void> {\n await this.page\n .locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]:visible')\n .first()\n .fill(values[0]);\n await this.page.waitForSelector('td.report-table-package .deployment-report-package', { timeout: 30000 });\n await expect(this.page.locator('td.report-table-package .deployment-report-package')).toContainText(\n new RegExp(`${values[2]}\\\\/${values[3]}`, 'i'),\n );\n await expect(this.page.locator('td.report-table-originalType .deployment-report-task-type')).toHaveText(/Initial/i); // Regex ignores case\n await expect(this.page.locator('td.report-table-user .deployment-report-user')).toHaveText('admin');\n\n //Click the row\n await this.page.locator('td.report-table-package .deployment-report-package').dblclick();\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n\n //Get the log text\n const text = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify both the log text are same\n expect(text).toContain(values[1]);\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class LoginPage extends WithPage {\n /* Login with username and password*/\n async login(userName: string, password: string): Promise<void> {\n await this.page.goto('/#/login');\n await expect(this.page).toHaveTitle('Digital.ai Deploy');\n await this.page.getByPlaceholder('user').fill(userName, { timeout: 1000 });\n await this.page.getByPlaceholder('Password').fill(password, { timeout: 10000 });\n await this.page.getByRole('button', { name: 'Log in' }).click({ timeout: 10000 });\n }\n\n /* Verify invalid password message */\n async verifyInvalidPasswordMessage(): Promise<void> {\n const errorMessage = this.page.getByText('The username and/or password you have entered is incorrect.');\n await expect(errorMessage).toBeVisible();\n }\n\n /* Logout as authenticated user */\n async logout(): Promise<void> {\n await this.page.locator('button.dot-avatar').click();\n await this.page.getByText('Log out', { exact: true }).click();\n await expect(this.page.getByText('Log in').first()).toBeVisible();\n }\n}\n"],"names":[],"version":3,"file":"main.js.map"}
1
+ {"mappings":"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","sources":["apps/deploy/index.ts","apps/deploy/fixtures/index.ts","apps/deploy/pages/index.ts","apps/deploy/pages/homePage.ts","apps/deploy/pages/withPage.ts","apps/deploy/pages/usersPage.ts","apps/deploy/pages/infrastructure/overthereLocalHostPage.ts","apps/deploy/pages/environmentsPage.ts","apps/deploy/pages/applications/applicationsPage.ts","apps/deploy/pages/reportsPage.ts","apps/deploy/pages/loginPage.ts"],"sourcesContent":["export { test } from './fixtures';\n","import { test as base, Page } from '@playwright/test';\nimport { Navigation } from '../pages';\nimport { LoginPage } from '../pages/loginPage';\n\ntype DeployFixtures = {\n fixtures: Fixtures;\n loginPage: LoginPage;\n navigation: Navigation;\n};\n\nexport const test = base.extend<DeployFixtures>({\n fixtures: async ({ page }, use) => {\n const fixtures = new Fixtures(page);\n await use(fixtures);\n return fixtures;\n },\n loginPage: async ({ page }, use) => {\n const loginPage = new LoginPage(page);\n await use(loginPage);\n return loginPage;\n },\n navigation: async ({ page }, use) => {\n const navigationPage = new Navigation(page);\n await use(navigationPage);\n return navigationPage;\n },\n});\n\nclass Fixtures {\n private readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { Page } from '@playwright/test';\nimport { HomePage } from './homePage';\nimport { UserPage } from './usersPage';\nimport { OverthereLocalHostPage } from './infrastructure/overthereLocalHostPage';\nimport { EnvironmentsPage } from './environmentsPage';\nimport { ApplicationsPage } from './applications/applicationsPage';\nimport { ReportsPage } from './reportsPage';\n\nexport class Navigation {\n private readonly page: Page;\n homePage: HomePage;\n userPage: UserPage;\n overthereLocalHostPage: OverthereLocalHostPage;\n environmentsPage: EnvironmentsPage;\n applicationsPage: ApplicationsPage;\n reportsPage: ReportsPage;\n\n constructor(page: Page) {\n this.page = page;\n this.homePage = new HomePage(page);\n this.userPage = new UserPage(page);\n this.overthereLocalHostPage = new OverthereLocalHostPage(page);\n this.environmentsPage = new EnvironmentsPage(page);\n this.applicationsPage = new ApplicationsPage(page, this);\n this.reportsPage = new ReportsPage(page);\n }\n\n async navigateToHomePage(): Promise<void> {\n await this.page.goto('/home');\n }\n\n async navigateToUserPage(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n }\n\n async clickCollapseSideView(): Promise<void> {\n const collapseButton = this.page.getByTestId('back-button');\n await collapseButton.click();\n }\n\n /* Helps to navigate to the Applications page */\n async navigateToApplicationsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Applications\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Applications\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Application' }).click();\n }\n\n /* Helps to navigate to the Environments page */\n async navigateToEnvironmentsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Environments\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Environments\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Environment' }).click();\n }\n\n /* Helps to navigate to the Overthere LocalHost page */\n async navigateToOverthereLocalHostPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Infrastructure\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Infrastructure\"]').click();\n // await this.page.waitForTimeout(5000);\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'overthere' }).click();\n await this.page.getByRole('link', { name: 'LocalHost' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class HomePage extends WithPage {\n async clickUserManagement(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n await this.page.getByRole('link', { name: 'Users' }).click();\n }\n\n async verifyDeployLogoIsPresent(): Promise<void> {\n const logo = this.page.getByAltText('Deploy');\n await expect(logo).toBeVisible();\n }\n\n async verifyDeployTextIsPresent(): Promise<void> {\n const title = this.page.getByTitle('digital.ai');\n await expect(title).toBeVisible();\n }\n\n async clickReports(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Reports' }).click();\n }\n}\n","import { Page } from '@playwright/test';\n\nexport class WithPage {\n protected readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class UserPage extends WithPage {\n /* Create a new user */\n async createNewUser(username: string, email: string, password: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByRole('button', { name: 'Add user' }).click();\n await this.page.locator('input[name=\"username\"]').fill(username);\n await this.page.locator('input[name=\"fullName\"]').fill(username);\n await this.page.locator('input[name=\"email\"]').fill(email);\n const passwordInput = this.page.locator('input[name=\"password\"]');\n await passwordInput.click({ force: true });\n await passwordInput.fill(password);\n await this.page.locator('input[name=\"confirmPassword\"]').fill(password);\n await this.page.getByRole('button', { name: 'Save' }).click();\n }\n\n /* Verify success message */\n async verifySuccessMessage(): Promise<void> {\n const SuccessMessage = this.page.getByRole('alertdialog');\n await expect(SuccessMessage).toBeVisible();\n await expect(SuccessMessage).toHaveText(/User \".*\" created/i);\n }\n\n /* Verify user error message */\n async verifyUserErrorMessage(): Promise<void> {\n await expect(this.page.locator('.rrt-middle-container[role=\"alertdialog\"]').nth(1)).toContainText(\n /already in use/i,\n );\n }\n\n /* Delete the user and verify it is deleted */\n async deleteTheUserAndVerifyItIsDeleted(username: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('td.users-table-actions button.delete.xl-icon.table-action').click();\n await this.page.getByRole('button', { name: 'Delete', exact: true }).click();\n const DeleteMessage = this.page.getByRole('alertdialog');\n await expect(DeleteMessage).toBeVisible();\n await expect(DeleteMessage).toHaveText(/User \".*\" deleted/i);\n }\n\n /* Edit the user and verify the changes */\n async editUserAndVerify(username: string, editfullname: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('i.icon-edit.dot-i').first().click();\n await this.page.locator('input[name=\"fullName\"]').fill(editfullname);\n await this.page.getByRole('button', { name: 'Save', exact: true }).click();\n const EditMessage = this.page.getByRole('alertdialog');\n await expect(EditMessage).toBeVisible();\n await expect(EditMessage).toContainText('Your change was saved');\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from '../withPage';\n\nexport class OverthereLocalHostPage extends WithPage {\n /* Helps to create a LocalHost of type UNIX/Windows/Zos */\n async createHostForGivenType(name: string, type: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(name);\n await this.page.locator('label:has-text(\"Operating system\")').locator('xpath=following::input[1]').click();\n await this.page.getByText(type, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n}\n","import { WithPage } from './withPage';\nimport { expect } from '@playwright/test';\n\nexport class EnvironmentsPage extends WithPage {\n /* Helps to create a new Environment */\n async createEnvironment(environmentName: string, hostName: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(environmentName);\n await this.page.locator('i.xl-icon.arrow-down-icon.show-all').nth(0).click();\n await this.page.getByTitle(`Infrastructure/${hostName}`, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n}\n","import { expect, Page } from '@playwright/test';\nimport { WithPage } from '../withPage';\nimport { Navigation } from '../index';\n\nexport class ApplicationsPage extends WithPage {\n taskId!: string;\n executedText!: string;\n private navigation: Navigation;\n\n constructor(page: Page, navigation: Navigation) {\n super(page);\n this.navigation = navigation;\n }\n\n /* Creates a new application */\n async createNewApplication(applicationName: string): Promise<void> {\n await this.navigation.navigateToApplicationsPage();\n await this.page.locator('input[name=\"name\"]').waitFor({ state: 'visible' });\n await this.page.locator('input[name=\"name\"]').click();\n await this.page.locator('input[name=\"name\"]').fill(applicationName);\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n\n /* Creates a new deployment package */\n async createNewDeploymentPackage(applicationName: string, packageName: string): Promise<void> {\n const appDataId = `Applications/${applicationName}`;\n\n // Expand Applications\n const root = this.page.locator('div[data-id=\"Applications\"] .infinite-tree-node > a');\n await root.click();\n\n // Hover over app node\n const appNode = this.page.locator(`span[data-id=\"${appDataId}\"]`);\n await expect(appNode).toBeVisible();\n await appNode.hover();\n\n // Open context menu + create new deployment package\n const contextMenu = this.page.locator(`i.context-menu-button[data-id=\"${appDataId}\"]`);\n await expect(contextMenu).toBeVisible();\n await contextMenu.click();\n\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Deployment Package' }).click();\n\n // Fill & save\n const nameInput = this.page.locator('input[name=\"name\"]');\n await nameInput.fill(packageName);\n\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n\n /* Creates a new command application */\n async createNewCmdApplication(values: string[]): Promise<void> {\n const appDataId = `Applications/${values[0]}`;\n const packageDataId = `Applications/${values[0]}/${values[1]}`;\n\n // Expand app node and click package\n await this.page.locator(`div[data-id=\"${appDataId}\"] .infinite-tree-node > a`).click();\n const packageNode = this.page.locator(`span[data-id=\"${packageDataId}\"]`).first();\n await expect(packageNode).toBeVisible();\n await packageNode.click();\n\n // Open context menu\n const packageMenu = this.page.locator(`i.context-menu-button[data-id=\"${packageDataId}\"]`);\n await expect(packageMenu).toBeVisible();\n await packageMenu.click();\n\n // Create Command application\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'cmd' }).click();\n await this.page.getByRole('link', { name: 'Command' }).click();\n\n await this.page.locator('input[name=\"name\"]').fill(values[2]);\n\n await this.page.locator('textarea[name=\"commandLine\"]').fill(values[3]);\n\n const saveBtn = this.page.locator('button', { hasText: /^Save$/ }).first();\n await expect(saveBtn).toBeEnabled();\n await saveBtn.click();\n await this.page.waitForTimeout(3000);\n\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n\n // Close dialog\n await this.page.locator('i.xl-icon.close-icon').first().click();\n }\n\n /*Deploy the application*/\n async deployApp(values: string[]): Promise<void> {\n const versionNode = `Applications/${values[0]}/${values[1]}`;\n await this.page.locator(`i.context-menu-button[data-id=\"${versionNode}\"]`).click();\n await this.page.getByRole('link', { name: 'Deploy', exact: true }).click();\n await this.page.locator(`input[name=\"selections\"][value=\"Environments/${values[2]}\"]`).click();\n await this.page.getByRole('button', { name: 'Continue' }).click();\n\n await this.page.locator('.errors-wrapper').waitFor({ state: 'attached', timeout: 5000 });\n\n const errorIcon = this.page.locator('a.validation-icons-wrapper.error');\n\n if (await errorIcon.isVisible()) {\n await this.page.getByRole('button', { name: 'Deployment Properties' }).click();\n await this.page.locator('input[name=\"username\"]').fill(values[3]);\n await this.page.getByRole('button', { name: 'Save' }).click();\n }\n\n await this.page.locator('button.deploy.xl-primary').click();\n\n //Get the task id\n this.taskId = (await this.page.locator('div.task-id').textContent()) || '';\n\n //Verify no failure and all are done\n const labels = this.page.locator('span.label');\n await expect(labels).toHaveCount(3);\n await expect(labels).toHaveText(['EXECUTED', 'DONE', 'DONE']);\n\n //Get the text executed\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n this.executedText = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify in monitoring tab searching with the task id\n await this.page.locator('div[data-id=\"TASK_MONITOR\"] .infinite-tree-node > a').click();\n await this.page.locator('span[data-id=\"DEPLOYMENT_TASKS\"]').dblclick();\n await this.page.waitForTimeout(5000);\n\n await this.page.locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]').first().fill(this.taskId);\n const stateText = await this.page.locator('td.tasks-table-state').first().innerText();\n expect(stateText.trim()).toBe('Executed');\n\n //Click the row to go to deployment screen\n await this.page.locator('table.table.table-striped tbody tr').first().dblclick();\n\n await this.page.locator('button.finish.xl-primary').click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class ReportsPage extends WithPage {\n /* Clicks on the Deployment Tasks section */\n async clickDeploymentTasks(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Deployments' }).click();\n }\n\n async verifyTheDeploymentValues(values: string[]): Promise<void> {\n await this.page\n .locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]:visible')\n .first()\n .fill(values[0]);\n await this.page.waitForSelector('td.report-table-package .deployment-report-package', { timeout: 5000 });\n await expect(this.page.locator('td.report-table-package .deployment-report-package')).toContainText(\n new RegExp(`${values[2]}\\\\/${values[3]}`, 'i'),\n );\n await expect(this.page.locator('td.report-table-originalType .deployment-report-task-type')).toHaveText(/Initial/i); // Regex ignores case\n await expect(this.page.locator('td.report-table-user .deployment-report-user')).toHaveText('admin');\n\n //Click the row\n await this.page.locator('td.report-table-package .deployment-report-package').dblclick();\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n\n //Get the log text\n const text = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify both the log text are same\n expect(text).toContain(values[1]);\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class LoginPage extends WithPage {\n /* Login with username and password*/\n async login(userName: string, password: string): Promise<void> {\n await this.page.goto('/#/login');\n await expect(this.page).toHaveTitle('Digital.ai Deploy');\n await this.page.getByPlaceholder('user').fill(userName, { timeout: 1000 });\n await this.page.getByPlaceholder('Password').fill(password, { timeout: 10000 });\n await this.page.getByRole('button', { name: 'Log in' }).click({ timeout: 10000 });\n }\n\n /* Verify invalid password message */\n async verifyInvalidPasswordMessage(): Promise<void> {\n const errorMessage = this.page.getByText('The username and/or password you have entered is incorrect.');\n await expect(errorMessage).toBeVisible();\n }\n\n /* Logout as authenticated user */\n async logout(): Promise<void> {\n await this.page.locator('button.dot-avatar').click();\n await this.page.getByText('Log out', { exact: true }).click();\n await expect(this.page.getByText('Log in').first()).toBeVisible();\n }\n}\n"],"names":[],"version":3,"file":"main.js.map"}
package/dist/module.js CHANGED
@@ -118,6 +118,7 @@ class $a4d71fd851704781$export$c88e1d16f82516d extends (0, $7d546dcaafadc158$exp
118
118
 
119
119
 
120
120
 
121
+
121
122
  class $8f7dd2349a88e8b2$export$12530425267834a9 extends (0, $7d546dcaafadc158$export$2b65d1d97338f32b) {
122
123
  /* Helps to create a new Environment */ async createEnvironment(environmentName, hostName) {
123
124
  await this.page.locator('input[name="name"]').fill(environmentName);
@@ -128,6 +129,10 @@ class $8f7dd2349a88e8b2$export$12530425267834a9 extends (0, $7d546dcaafadc158$ex
128
129
  await this.page.getByRole("button", {
129
130
  name: "Save and close"
130
131
  }).click();
132
+ const toastMessage = this.page.locator(".redux-toastr .rrt-text:visible");
133
+ await (0, $lE6ZQ$expect)(toastMessage).toHaveText("Your change was saved.", {
134
+ timeout: 5000
135
+ });
131
136
  }
132
137
  }
133
138
 
@@ -149,6 +154,10 @@ class $3fb4750cbb53e5e6$export$1533b625ec0c75e2 extends (0, $7d546dcaafadc158$ex
149
154
  await this.page.getByRole("button", {
150
155
  name: "Save and close"
151
156
  }).click();
157
+ const toastMessage = this.page.locator(".redux-toastr .rrt-text:visible");
158
+ await (0, $lE6ZQ$expect)(toastMessage).toHaveText("Your change was saved.", {
159
+ timeout: 5000
160
+ });
152
161
  }
153
162
  /* Creates a new deployment package */ async createNewDeploymentPackage(applicationName, packageName) {
154
163
  const appDataId = `Applications/${applicationName}`;
@@ -175,6 +184,10 @@ class $3fb4750cbb53e5e6$export$1533b625ec0c75e2 extends (0, $7d546dcaafadc158$ex
175
184
  await this.page.getByRole("button", {
176
185
  name: "Save and close"
177
186
  }).click();
187
+ const toastMessage = this.page.locator(".redux-toastr .rrt-text:visible");
188
+ await (0, $lE6ZQ$expect)(toastMessage).toHaveText("Your change was saved.", {
189
+ timeout: 5000
190
+ });
178
191
  }
179
192
  /* Creates a new command application */ async createNewCmdApplication(values) {
180
193
  const appDataId = `Applications/${values[0]}`;
@@ -206,6 +219,10 @@ class $3fb4750cbb53e5e6$export$1533b625ec0c75e2 extends (0, $7d546dcaafadc158$ex
206
219
  await (0, $lE6ZQ$expect)(saveBtn).toBeEnabled();
207
220
  await saveBtn.click();
208
221
  await this.page.waitForTimeout(3000);
222
+ const toastMessage = this.page.locator(".redux-toastr .rrt-text:visible");
223
+ await (0, $lE6ZQ$expect)(toastMessage).toHaveText("Your change was saved.", {
224
+ timeout: 5000
225
+ });
209
226
  // Close dialog
210
227
  await this.page.locator("i.xl-icon.close-icon").first().click();
211
228
  }
@@ -274,7 +291,7 @@ class $76bad9b9e6741f37$export$b8a443164510a1b4 extends (0, $7d546dcaafadc158$ex
274
291
  async verifyTheDeploymentValues(values) {
275
292
  await this.page.locator('div.deployment-task-filter-task-id input[placeholder="Search"]:visible').first().fill(values[0]);
276
293
  await this.page.waitForSelector("td.report-table-package .deployment-report-package", {
277
- timeout: 30000
294
+ timeout: 5000
278
295
  });
279
296
  await (0, $lE6ZQ$expect)(this.page.locator("td.report-table-package .deployment-report-package")).toContainText(new RegExp(`${values[2]}\\/${values[3]}`, "i"));
280
297
  await (0, $lE6ZQ$expect)(this.page.locator("td.report-table-originalType .deployment-report-task-type")).toHaveText(/Initial/i); // Regex ignores case
@@ -1 +1 @@
1
- {"mappings":";;ACAA;AEAA;ACEO,MAAM;IAGX,YAAY,IAAU,CAAE;QACtB,IAAI,CAAC,IAAI,GAAG;IACd;AACF;;;ADLO,MAAM,kDAAiB,CAAA,GAAA,yCAAQ,AAAD;IACnC,MAAM,sBAAqC;QACzC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAAE,SAAS;QAAkB,GAAG,KAAK;QACrF,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAQ,GAAG,KAAK;IAC5D;IAEA,MAAM,4BAA2C;QAC/C,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACpC,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,MAAM,WAAW;IAChC;IAEA,MAAM,4BAA2C;QAC/C,MAAM,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,OAAO,WAAW;IACjC;IAEA,MAAM,eAA8B;QAClC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAAE,SAAS;QAAU,GAAG,KAAK;IAC/E;AACF;;ADtBA;AGAA;;AAGO,MAAM,kDAAiB,CAAA,GAAA,yCAAQ,AAAD;IACnC,qBAAqB,GACrB,MAAM,cAAc,QAAgB,EAAE,KAAa,EAAE,QAAgB,EAAiB;QACpF,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAAE,SAAS;QAAQ,GAAG,KAAK;QAC3E,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;QAAW,GAAG,KAAK;QAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,IAAI,CAAC;QACvD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,IAAI,CAAC;QACvD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,CAAC;QACpD,MAAM,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACxC,MAAM,cAAc,KAAK,CAAC;YAAE,OAAO,IAAI;QAAC;QACxC,MAAM,cAAc,IAAI,CAAC;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iCAAiC,IAAI,CAAC;QAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;QAAO,GAAG,KAAK;IAC7D;IAEA,0BAA0B,GAC1B,MAAM,uBAAsC;QAC1C,MAAM,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,gBAAgB,WAAW;QACxC,MAAM,CAAA,GAAA,aAAK,EAAE,gBAAgB,UAAU,CAAC;IAC1C;IAEA,6BAA6B,GAC7B,MAAM,yBAAwC;QAC5C,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,6CAA6C,GAAG,CAAC,IAAI,aAAa,CAC/F;IAEJ;IAEA,4CAA4C,GAC5C,MAAM,kCAAkC,QAAgB,EAAiB;QACvE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAAE,SAAS;QAAQ,GAAG,KAAK;QAC3E,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,CAAC;QACnD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,6DAA6D,KAAK;QAC1F,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;YAAU,OAAO,IAAI;QAAC,GAAG,KAAK;QAC1E,MAAM,gBAAgB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAC1C,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,eAAe,WAAW;QACvC,MAAM,CAAA,GAAA,aAAK,EAAE,eAAe,UAAU,CAAC;IACzC;IAEA,wCAAwC,GACxC,MAAM,kBAAkB,QAAgB,EAAE,YAAoB,EAAiB;QAC7E,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAAE,SAAS;QAAQ,GAAG,KAAK;QAC3E,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,IAAI,CAAC;QACnD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,KAAK,GAAG,KAAK;QAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,IAAI,CAAC;QACvD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;YAAQ,OAAO,IAAI;QAAC,GAAG,KAAK;QACxE,MAAM,cAAc,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACxC,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,aAAa,WAAW;QACrC,MAAM,CAAA,GAAA,aAAK,EAAE,aAAa,aAAa,CAAC;IAC1C;AACF;;;ACtDA;;AAGO,MAAM,iDAA+B,CAAA,GAAA,yCAAQ,AAAD;IACjD,wDAAwD,GACxD,MAAM,uBAAuB,IAAY,EAAE,IAAY,EAAiB;QACtE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,CAAC;QACnD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sCAAsC,OAAO,CAAC,6BAA6B,KAAK;QACxG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,IAAI;QAAC,GAAG,KAAK;QACtD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;QAAiB,GAAG,KAAK;QACrE,MAAM,eAAe,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACvC,MAAM,CAAA,GAAA,aAAK,EAAE,cAAc,UAAU,CAAC,0BAA0B;YAAE,SAAS;QAAK;IAClF;AACF;;;ACbA;AAGO,MAAM,kDAAyB,CAAA,GAAA,yCAAQ,AAAD;IAC3C,qCAAqC,GACrC,MAAM,kBAAkB,eAAuB,EAAE,QAAgB,EAAiB;QAChF,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,CAAC;QACnD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sCAAsC,GAAG,CAAC,GAAG,KAAK;QAC1E,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE;YAAE,OAAO,IAAI;QAAC,GAAG,KAAK;QAC/E,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;QAAiB,GAAG,KAAK;IACvE;AACF;;;ACXA;;AAGO,MAAM,kDAAyB,CAAA,GAAA,yCAAQ,AAAD;IAK3C,YAAY,IAAS,EAAE,UAAe,CAAE;QACtC,KAAK,CAAC;QACN,IAAI,CAAC,UAAU,GAAG;IACpB;IAEA,6BAA6B,GAC7B,MAAM,qBAAqB,eAAuB,EAAiB;QACjE,MAAM,IAAI,CAAC,UAAU,CAAC,0BAA0B;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,OAAO,CAAC;YAAE,OAAO;QAAU;QACzE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,KAAK;QACnD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,CAAC;QACnD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;QAAiB,GAAG,KAAK;IACvE;IAEA,oCAAoC,GACpC,MAAM,2BAA2B,eAAuB,EAAE,WAAmB,EAAiB;QAC5F,MAAM,YAAY,CAAC,aAAa,EAAE,gBAAgB,CAAC;QAEnD,sBAAsB;QACtB,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B,MAAM,KAAK,KAAK;QAEhB,sBAAsB;QACtB,MAAM,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC;QAChE,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,SAAS,WAAW;QACjC,MAAM,QAAQ,KAAK;QAEnB,oDAAoD;QACpD,MAAM,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,+BAA+B,EAAE,UAAU,EAAE,CAAC;QACrF,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,aAAa,WAAW;QACrC,MAAM,YAAY,KAAK;QAEvB,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAM,GAAG,KAAK;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAqB,GAAG,KAAK;QAEvE,cAAc;QACd,MAAM,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACpC,MAAM,UAAU,IAAI,CAAC;QAErB,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;QAAiB,GAAG,KAAK;IACvE;IAEA,qCAAqC,GACrC,MAAM,wBAAwB,MAAgB,EAAiB;QAC7D,MAAM,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAE9D,oCAAoC;QACpC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,UAAU,0BAA0B,CAAC,EAAE,KAAK;QACpF,MAAM,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK;QAC/E,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,aAAa,WAAW;QACrC,MAAM,YAAY,KAAK;QAEvB,oBAAoB;QACpB,MAAM,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,+BAA+B,EAAE,cAAc,EAAE,CAAC;QACzF,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,aAAa,WAAW;QACrC,MAAM,YAAY,KAAK;QAEvB,6BAA6B;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAM,GAAG,KAAK;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAM,GAAG,KAAK;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAU,GAAG,KAAK;QAE5D,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,EAAE;QAE5D,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gCAAgC,IAAI,CAAC,MAAM,CAAC,EAAE;QAEtE,MAAM,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,SAAS;QAAS,GAAG,KAAK;QACxE,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,SAAS,WAAW;QACjC,MAAM,QAAQ,KAAK;QACnB,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAE/B,eAAe;QACf,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,KAAK,GAAG,KAAK;IAC/D;IAEA,wBAAwB,GACxB,MAAM,UAAU,MAAgB,EAAiB;QAC/C,MAAM,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,+BAA+B,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK;QAChF,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;YAAU,OAAO,IAAI;QAAC,GAAG,KAAK;QACxE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,6CAA6C,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK;QAC5F,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;QAAW,GAAG,KAAK;QAE/D,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,OAAO,CAAC;YAAE,OAAO;YAAY,SAAS;QAAK;QAEtF,MAAM,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAEpC,IAAI,MAAM,UAAU,SAAS,IAAI;YAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;gBAAE,MAAM;YAAwB,GAAG,KAAK;YAC5E,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,IAAI,CAAC,MAAM,CAAC,EAAE;YAChE,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;gBAAE,MAAM;YAAO,GAAG,KAAK;QAC7D,CACC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,KAAK;QAEzD,iBAAiB;QACjB,IAAI,CAAC,MAAM,GAAG,AAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,WAAW,MAAO;QAExE,oCAAoC;QACpC,MAAM,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,MAAM,CAAA,GAAA,aAAK,EAAE,QAAQ,WAAW,CAAC;QACjC,MAAM,CAAA,GAAA,aAAK,EAAE,QAAQ,UAAU,CAAC;YAAC;YAAY;YAAQ;SAAO;QAE5D,uBAAuB;QACvB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gDAAgD,KAAK;QAC7E,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,KAAK;QACxD,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,CAAC,GAAG,SAAS;QAErF,qDAAqD;QACrD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uDAAuD,KAAK;QACpF,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC,QAAQ;QACpE,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAE/B,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kEAAkE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;QAClH,MAAM,YAAY,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,KAAK,GAAG,SAAS;QACnF,CAAA,GAAA,aAAK,EAAE,UAAU,IAAI,IAAI,IAAI,CAAC;QAE9B,0CAA0C;QAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sCAAsC,KAAK,GAAG,QAAQ;QAE9E,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,KAAK;IAC3D;AACF;;;ACpIA;;AAGO,MAAM,kDAAoB,CAAA,GAAA,yCAAQ,AAAD;IACtC,0CAA0C,GAC1C,MAAM,uBAAsC;QAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAAE,SAAS;QAAc,GAAG,KAAK;IACnF;IAEA,MAAM,0BAA0B,MAAgB,EAAiB;QAC/D,MAAM,IAAI,CAAC,IAAI,CACZ,OAAO,CAAC,0EACR,KAAK,GACL,IAAI,CAAC,MAAM,CAAC,EAAE;QACjB,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,sDAAsD;YAAE,SAAS;QAAM;QACvG,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uDAAuD,aAAa,CACjG,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE;QAE5C,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,8DAA8D,UAAU,CAAC,aAAa,qBAAqB;QAC1I,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iDAAiD,UAAU,CAAC;QAE3F,eAAe;QACf,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sDAAsD,QAAQ;QACtF,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gDAAgD,KAAK;QAC7E,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,wBAAwB,KAAK;QAExD,kBAAkB;QAClB,MAAM,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,GAAG,CAAC,GAAG,SAAS;QAE9E,mCAAmC;QACnC,CAAA,GAAA,aAAM,AAAD,EAAE,MAAM,SAAS,CAAC,MAAM,CAAC,EAAE;IAClC;AACF;;;APxBO,MAAM;IASX,YAAY,IAAU,CAAE;QACtB,IAAI,CAAC,IAAI,GAAG;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,GAAA,yCAAQ,AAAD,EAAE;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,GAAA,yCAAQ,AAAD,EAAE;QAC7B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAA,GAAA,wCAAsB,AAAD,EAAE;QACzD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA,GAAA,yCAAgB,AAAD,EAAE;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA,GAAA,yCAAgB,AAAD,EAAE,MAAM,IAAI;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA,GAAA,yCAAW,AAAD,EAAE;IACrC;IAEA,MAAM,qBAAoC;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB;IAEA,MAAM,qBAAoC;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAAE,SAAS;QAAkB,GAAG,KAAK;IACvF;IAEA,MAAM,wBAAuC;QAC3C,MAAM,iBAAiB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAC7C,MAAM,eAAe,KAAK;IAC5B;IAEA,8CAA8C,GAC9C,MAAM,6BAA4C;QAChD,MAAM,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACrC,MAAM,WAAW,KAAK;QACtB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iDAAiD,KAAK;QAC9E,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAM,GAAG,KAAK;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAc,GAAG,KAAK;IAClE;IAEA,8CAA8C,GAC9C,MAAM,6BAA4C;QAChD,MAAM,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACrC,MAAM,WAAW,KAAK;QACtB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iDAAiD,KAAK;QAC9E,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAM,GAAG,KAAK;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAc,GAAG,KAAK;IAClE;IAEA,qDAAqD,GACrD,MAAM,mCAAkD;QACtD,MAAM,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACrC,MAAM,WAAW,KAAK;QACtB,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,mDAAmD,KAAK;QAChF,wCAAwC;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAM,GAAG,KAAK;QACxD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAY,GAAG,KAAK;QAC9D,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ;YAAE,MAAM;QAAY,GAAG,KAAK;IAChE;AACF;;;AQpEA;;AAGO,MAAM,kDAAkB,CAAA,GAAA,yCAAQ,AAAD;IACpC,mCAAmC,GACnC,MAAM,MAAM,QAAgB,EAAE,QAAgB,EAAiB;QAC7D,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,MAAM,CAAA,GAAA,aAAK,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QACpC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,CAAC,UAAU;YAAE,SAAS;QAAK;QACxE,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,CAAC,UAAU;YAAE,SAAS;QAAM;QAC7E,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,MAAM;QAAS,GAAG,KAAK,CAAC;YAAE,SAAS;QAAM;IACjF;IAEA,mCAAmC,GACnC,MAAM,+BAA8C;QAClD,MAAM,eAAe,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACzC,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,cAAc,WAAW;IACxC;IAEA,gCAAgC,GAChC,MAAM,SAAwB;QAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,KAAK;QAClD,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW;YAAE,OAAO,IAAI;QAAC,GAAG,KAAK;QAC3D,MAAM,CAAA,GAAA,aAAM,AAAD,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,KAAK,IAAI,WAAW;IACjE;AACF;;;ATfO,MAAM,4CAAO,CAAA,GAAA,WAAI,AAAD,EAAE,MAAM,CAAiB;IAC9C,UAAU,OAAO,QAAE,KAAI,EAAE,EAAE,MAAQ;QACjC,MAAM,WAAW,IAAI,+BAAS;QAC9B,MAAM,IAAI;QACV,OAAO;IACT;IACA,WAAW,OAAO,QAAE,KAAI,EAAE,EAAE,MAAQ;QAClC,MAAM,YAAY,IAAI,CAAA,GAAA,yCAAQ,EAAE;QAChC,MAAM,IAAI;QACV,OAAO;IACT;IACA,YAAY,OAAO,QAAE,KAAI,EAAE,EAAE,MAAQ;QACnC,MAAM,iBAAiB,IAAI,CAAA,GAAA,yCAAS,EAAE;QACtC,MAAM,IAAI;QACV,OAAO;IACT;AACF;AAEA,MAAM;IAGJ,YAAY,IAAU,CAAE;QACtB,IAAI,CAAC,IAAI,GAAG;IACd;AACF;;ADlCA","sources":["apps/deploy/index.ts","apps/deploy/fixtures/index.ts","apps/deploy/pages/index.ts","apps/deploy/pages/homePage.ts","apps/deploy/pages/withPage.ts","apps/deploy/pages/usersPage.ts","apps/deploy/pages/infrastructure/overthereLocalHostPage.ts","apps/deploy/pages/environmentsPage.ts","apps/deploy/pages/applications/applicationsPage.ts","apps/deploy/pages/reportsPage.ts","apps/deploy/pages/loginPage.ts"],"sourcesContent":["export { test } from './fixtures';\n","import { test as base, Page } from '@playwright/test';\nimport { Navigation } from '../pages';\nimport { LoginPage } from '../pages/loginPage';\n\ntype DeployFixtures = {\n fixtures: Fixtures;\n loginPage: LoginPage;\n navigation: Navigation;\n};\n\nexport const test = base.extend<DeployFixtures>({\n fixtures: async ({ page }, use) => {\n const fixtures = new Fixtures(page);\n await use(fixtures);\n return fixtures;\n },\n loginPage: async ({ page }, use) => {\n const loginPage = new LoginPage(page);\n await use(loginPage);\n return loginPage;\n },\n navigation: async ({ page }, use) => {\n const navigationPage = new Navigation(page);\n await use(navigationPage);\n return navigationPage;\n },\n});\n\nclass Fixtures {\n private readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { Page } from '@playwright/test';\nimport { HomePage } from './homePage';\nimport { UserPage } from './usersPage';\nimport { OverthereLocalHostPage } from './infrastructure/overthereLocalHostPage';\nimport { EnvironmentsPage } from './environmentsPage';\nimport { ApplicationsPage } from './applications/applicationsPage';\nimport { ReportsPage } from './reportsPage';\n\nexport class Navigation {\n private readonly page: Page;\n homePage: HomePage;\n userPage: UserPage;\n overthereLocalHostPage: OverthereLocalHostPage;\n environmentsPage: EnvironmentsPage;\n applicationsPage: ApplicationsPage;\n reportsPage: ReportsPage;\n\n constructor(page: Page) {\n this.page = page;\n this.homePage = new HomePage(page);\n this.userPage = new UserPage(page);\n this.overthereLocalHostPage = new OverthereLocalHostPage(page);\n this.environmentsPage = new EnvironmentsPage(page);\n this.applicationsPage = new ApplicationsPage(page, this);\n this.reportsPage = new ReportsPage(page);\n }\n\n async navigateToHomePage(): Promise<void> {\n await this.page.goto('/home');\n }\n\n async navigateToUserPage(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n }\n\n async clickCollapseSideView(): Promise<void> {\n const collapseButton = this.page.getByTestId('back-button');\n await collapseButton.click();\n }\n\n /* Helps to navigate to the Applications page */\n async navigateToApplicationsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Applications\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Applications\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Application' }).click();\n }\n\n /* Helps to navigate to the Environments page */\n async navigateToEnvironmentsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Environments\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Environments\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Environment' }).click();\n }\n\n /* Helps to navigate to the Overthere LocalHost page */\n async navigateToOverthereLocalHostPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Infrastructure\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Infrastructure\"]').click();\n // await this.page.waitForTimeout(5000);\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'overthere' }).click();\n await this.page.getByRole('link', { name: 'LocalHost' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class HomePage extends WithPage {\n async clickUserManagement(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n await this.page.getByRole('link', { name: 'Users' }).click();\n }\n\n async verifyDeployLogoIsPresent(): Promise<void> {\n const logo = this.page.getByAltText('Deploy');\n await expect(logo).toBeVisible();\n }\n\n async verifyDeployTextIsPresent(): Promise<void> {\n const title = this.page.getByTitle('digital.ai');\n await expect(title).toBeVisible();\n }\n\n async clickReports(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Reports' }).click();\n }\n}\n","import { Page } from '@playwright/test';\n\nexport class WithPage {\n protected readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class UserPage extends WithPage {\n /* Create a new user */\n async createNewUser(username: string, email: string, password: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByRole('button', { name: 'Add user' }).click();\n await this.page.locator('input[name=\"username\"]').fill(username);\n await this.page.locator('input[name=\"fullName\"]').fill(username);\n await this.page.locator('input[name=\"email\"]').fill(email);\n const passwordInput = this.page.locator('input[name=\"password\"]');\n await passwordInput.click({ force: true });\n await passwordInput.fill(password);\n await this.page.locator('input[name=\"confirmPassword\"]').fill(password);\n await this.page.getByRole('button', { name: 'Save' }).click();\n }\n\n /* Verify success message */\n async verifySuccessMessage(): Promise<void> {\n const SuccessMessage = this.page.getByRole('alertdialog');\n await expect(SuccessMessage).toBeVisible();\n await expect(SuccessMessage).toHaveText(/User \".*\" created/i);\n }\n\n /* Verify user error message */\n async verifyUserErrorMessage(): Promise<void> {\n await expect(this.page.locator('.rrt-middle-container[role=\"alertdialog\"]').nth(1)).toContainText(\n /already in use/i,\n );\n }\n\n /* Delete the user and verify it is deleted */\n async deleteTheUserAndVerifyItIsDeleted(username: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('td.users-table-actions button.delete.xl-icon.table-action').click();\n await this.page.getByRole('button', { name: 'Delete', exact: true }).click();\n const DeleteMessage = this.page.getByRole('alertdialog');\n await expect(DeleteMessage).toBeVisible();\n await expect(DeleteMessage).toHaveText(/User \".*\" deleted/i);\n }\n\n /* Edit the user and verify the changes */\n async editUserAndVerify(username: string, editfullname: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('i.icon-edit.dot-i').first().click();\n await this.page.locator('input[name=\"fullName\"]').fill(editfullname);\n await this.page.getByRole('button', { name: 'Save', exact: true }).click();\n const EditMessage = this.page.getByRole('alertdialog');\n await expect(EditMessage).toBeVisible();\n await expect(EditMessage).toContainText('Your change was saved');\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from '../withPage';\n\nexport class OverthereLocalHostPage extends WithPage {\n /* Helps to create a LocalHost of type UNIX/Windows/Zos */\n async createHostForGivenType(name: string, type: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(name);\n await this.page.locator('label:has-text(\"Operating system\")').locator('xpath=following::input[1]').click();\n await this.page.getByText(type, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class EnvironmentsPage extends WithPage {\n /* Helps to create a new Environment */\n async createEnvironment(environmentName: string, hostName: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(environmentName);\n await this.page.locator('i.xl-icon.arrow-down-icon.show-all').nth(0).click();\n await this.page.getByTitle(`Infrastructure/${hostName}`, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from '../withPage';\n\nexport class ApplicationsPage extends WithPage {\n taskId!: string;\n executedText!: string;\n private navigation: any;\n\n constructor(page: any, navigation: any) {\n super(page);\n this.navigation = navigation;\n }\n\n /* Creates a new application */\n async createNewApplication(applicationName: string): Promise<void> {\n await this.navigation.navigateToApplicationsPage();\n await this.page.locator('input[name=\"name\"]').waitFor({ state: 'visible' });\n await this.page.locator('input[name=\"name\"]').click();\n await this.page.locator('input[name=\"name\"]').fill(applicationName);\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n }\n\n /* Creates a new deployment package */\n async createNewDeploymentPackage(applicationName: string, packageName: string): Promise<void> {\n const appDataId = `Applications/${applicationName}`;\n\n // Expand Applications\n const root = this.page.locator('div[data-id=\"Applications\"] .infinite-tree-node > a');\n await root.click();\n\n // Hover over app node\n const appNode = this.page.locator(`span[data-id=\"${appDataId}\"]`);\n await expect(appNode).toBeVisible();\n await appNode.hover();\n\n // Open context menu + create new deployment package\n const contextMenu = this.page.locator(`i.context-menu-button[data-id=\"${appDataId}\"]`);\n await expect(contextMenu).toBeVisible();\n await contextMenu.click();\n\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Deployment Package' }).click();\n\n // Fill & save\n const nameInput = this.page.locator('input[name=\"name\"]');\n await nameInput.fill(packageName);\n\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n }\n\n /* Creates a new command application */\n async createNewCmdApplication(values: string[]): Promise<void> {\n const appDataId = `Applications/${values[0]}`;\n const packageDataId = `Applications/${values[0]}/${values[1]}`;\n\n // Expand app node and click package\n await this.page.locator(`div[data-id=\"${appDataId}\"] .infinite-tree-node > a`).click();\n const packageNode = this.page.locator(`span[data-id=\"${packageDataId}\"]`).first();\n await expect(packageNode).toBeVisible();\n await packageNode.click();\n\n // Open context menu\n const packageMenu = this.page.locator(`i.context-menu-button[data-id=\"${packageDataId}\"]`);\n await expect(packageMenu).toBeVisible();\n await packageMenu.click();\n\n // Create Command application\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'cmd' }).click();\n await this.page.getByRole('link', { name: 'Command' }).click();\n\n await this.page.locator('input[name=\"name\"]').fill(values[2]);\n\n await this.page.locator('textarea[name=\"commandLine\"]').fill(values[3]);\n\n const saveBtn = this.page.locator('button', { hasText: /^Save$/ }).first();\n await expect(saveBtn).toBeEnabled();\n await saveBtn.click();\n await this.page.waitForTimeout(3000);\n\n // Close dialog\n await this.page.locator('i.xl-icon.close-icon').first().click();\n }\n\n /*Deploy the application*/\n async deployApp(values: string[]): Promise<void> {\n const versionNode = `Applications/${values[0]}/${values[1]}`;\n await this.page.locator(`i.context-menu-button[data-id=\"${versionNode}\"]`).click();\n await this.page.getByRole('link', { name: 'Deploy', exact: true }).click();\n await this.page.locator(`input[name=\"selections\"][value=\"Environments/${values[2]}\"]`).click();\n await this.page.getByRole('button', { name: 'Continue' }).click();\n\n await this.page.locator('.errors-wrapper').waitFor({ state: 'attached', timeout: 5000 });\n\n const errorIcon = this.page.locator('a.validation-icons-wrapper.error');\n\n if (await errorIcon.isVisible()) {\n await this.page.getByRole('button', { name: 'Deployment Properties' }).click();\n await this.page.locator('input[name=\"username\"]').fill(values[3]);\n await this.page.getByRole('button', { name: 'Save' }).click();\n } else {\n }\n\n await this.page.locator('button.deploy.xl-primary').click();\n\n //Get the task id\n this.taskId = (await this.page.locator('div.task-id').textContent()) || '';\n\n //Verify no failure and all are done\n const labels = this.page.locator('span.label');\n await expect(labels).toHaveCount(3);\n await expect(labels).toHaveText(['EXECUTED', 'DONE', 'DONE']);\n\n //Get the text executed\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n this.executedText = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify in monitoring tab searching with the task id\n await this.page.locator('div[data-id=\"TASK_MONITOR\"] .infinite-tree-node > a').click();\n await this.page.locator('span[data-id=\"DEPLOYMENT_TASKS\"]').dblclick();\n await this.page.waitForTimeout(5000);\n\n await this.page.locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]').first().fill(this.taskId);\n const stateText = await this.page.locator('td.tasks-table-state').first().innerText();\n expect(stateText.trim()).toBe('Executed');\n\n //Click the row to go to deployment screen\n await this.page.locator('table.table.table-striped tbody tr').first().dblclick();\n\n await this.page.locator('button.finish.xl-primary').click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class ReportsPage extends WithPage {\n /* Clicks on the Deployment Tasks section */\n async clickDeploymentTasks(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Deployments' }).click();\n }\n\n async verifyTheDeploymentValues(values: string[]): Promise<void> {\n await this.page\n .locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]:visible')\n .first()\n .fill(values[0]);\n await this.page.waitForSelector('td.report-table-package .deployment-report-package', { timeout: 30000 });\n await expect(this.page.locator('td.report-table-package .deployment-report-package')).toContainText(\n new RegExp(`${values[2]}\\\\/${values[3]}`, 'i'),\n );\n await expect(this.page.locator('td.report-table-originalType .deployment-report-task-type')).toHaveText(/Initial/i); // Regex ignores case\n await expect(this.page.locator('td.report-table-user .deployment-report-user')).toHaveText('admin');\n\n //Click the row\n await this.page.locator('td.report-table-package .deployment-report-package').dblclick();\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n\n //Get the log text\n const text = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify both the log text are same\n expect(text).toContain(values[1]);\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class LoginPage extends WithPage {\n /* Login with username and password*/\n async login(userName: string, password: string): Promise<void> {\n await this.page.goto('/#/login');\n await expect(this.page).toHaveTitle('Digital.ai Deploy');\n await this.page.getByPlaceholder('user').fill(userName, { timeout: 1000 });\n await this.page.getByPlaceholder('Password').fill(password, { timeout: 10000 });\n await this.page.getByRole('button', { name: 'Log in' }).click({ timeout: 10000 });\n }\n\n /* Verify invalid password message */\n async verifyInvalidPasswordMessage(): Promise<void> {\n const errorMessage = this.page.getByText('The username and/or password you have entered is incorrect.');\n await expect(errorMessage).toBeVisible();\n }\n\n /* Logout as authenticated user */\n async logout(): Promise<void> {\n await this.page.locator('button.dot-avatar').click();\n await this.page.getByText('Log out', { exact: true }).click();\n await expect(this.page.getByText('Log in').first()).toBeVisible();\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
1
+ {"mappings":"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","sources":["apps/deploy/index.ts","apps/deploy/fixtures/index.ts","apps/deploy/pages/index.ts","apps/deploy/pages/homePage.ts","apps/deploy/pages/withPage.ts","apps/deploy/pages/usersPage.ts","apps/deploy/pages/infrastructure/overthereLocalHostPage.ts","apps/deploy/pages/environmentsPage.ts","apps/deploy/pages/applications/applicationsPage.ts","apps/deploy/pages/reportsPage.ts","apps/deploy/pages/loginPage.ts"],"sourcesContent":["export { test } from './fixtures';\n","import { test as base, Page } from '@playwright/test';\nimport { Navigation } from '../pages';\nimport { LoginPage } from '../pages/loginPage';\n\ntype DeployFixtures = {\n fixtures: Fixtures;\n loginPage: LoginPage;\n navigation: Navigation;\n};\n\nexport const test = base.extend<DeployFixtures>({\n fixtures: async ({ page }, use) => {\n const fixtures = new Fixtures(page);\n await use(fixtures);\n return fixtures;\n },\n loginPage: async ({ page }, use) => {\n const loginPage = new LoginPage(page);\n await use(loginPage);\n return loginPage;\n },\n navigation: async ({ page }, use) => {\n const navigationPage = new Navigation(page);\n await use(navigationPage);\n return navigationPage;\n },\n});\n\nclass Fixtures {\n private readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { Page } from '@playwright/test';\nimport { HomePage } from './homePage';\nimport { UserPage } from './usersPage';\nimport { OverthereLocalHostPage } from './infrastructure/overthereLocalHostPage';\nimport { EnvironmentsPage } from './environmentsPage';\nimport { ApplicationsPage } from './applications/applicationsPage';\nimport { ReportsPage } from './reportsPage';\n\nexport class Navigation {\n private readonly page: Page;\n homePage: HomePage;\n userPage: UserPage;\n overthereLocalHostPage: OverthereLocalHostPage;\n environmentsPage: EnvironmentsPage;\n applicationsPage: ApplicationsPage;\n reportsPage: ReportsPage;\n\n constructor(page: Page) {\n this.page = page;\n this.homePage = new HomePage(page);\n this.userPage = new UserPage(page);\n this.overthereLocalHostPage = new OverthereLocalHostPage(page);\n this.environmentsPage = new EnvironmentsPage(page);\n this.applicationsPage = new ApplicationsPage(page, this);\n this.reportsPage = new ReportsPage(page);\n }\n\n async navigateToHomePage(): Promise<void> {\n await this.page.goto('/home');\n }\n\n async navigateToUserPage(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n }\n\n async clickCollapseSideView(): Promise<void> {\n const collapseButton = this.page.getByTestId('back-button');\n await collapseButton.click();\n }\n\n /* Helps to navigate to the Applications page */\n async navigateToApplicationsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Applications\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Applications\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Application' }).click();\n }\n\n /* Helps to navigate to the Environments page */\n async navigateToEnvironmentsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Environments\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Environments\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Environment' }).click();\n }\n\n /* Helps to navigate to the Overthere LocalHost page */\n async navigateToOverthereLocalHostPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Infrastructure\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Infrastructure\"]').click();\n // await this.page.waitForTimeout(5000);\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'overthere' }).click();\n await this.page.getByRole('link', { name: 'LocalHost' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class HomePage extends WithPage {\n async clickUserManagement(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n await this.page.getByRole('link', { name: 'Users' }).click();\n }\n\n async verifyDeployLogoIsPresent(): Promise<void> {\n const logo = this.page.getByAltText('Deploy');\n await expect(logo).toBeVisible();\n }\n\n async verifyDeployTextIsPresent(): Promise<void> {\n const title = this.page.getByTitle('digital.ai');\n await expect(title).toBeVisible();\n }\n\n async clickReports(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Reports' }).click();\n }\n}\n","import { Page } from '@playwright/test';\n\nexport class WithPage {\n protected readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class UserPage extends WithPage {\n /* Create a new user */\n async createNewUser(username: string, email: string, password: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByRole('button', { name: 'Add user' }).click();\n await this.page.locator('input[name=\"username\"]').fill(username);\n await this.page.locator('input[name=\"fullName\"]').fill(username);\n await this.page.locator('input[name=\"email\"]').fill(email);\n const passwordInput = this.page.locator('input[name=\"password\"]');\n await passwordInput.click({ force: true });\n await passwordInput.fill(password);\n await this.page.locator('input[name=\"confirmPassword\"]').fill(password);\n await this.page.getByRole('button', { name: 'Save' }).click();\n }\n\n /* Verify success message */\n async verifySuccessMessage(): Promise<void> {\n const SuccessMessage = this.page.getByRole('alertdialog');\n await expect(SuccessMessage).toBeVisible();\n await expect(SuccessMessage).toHaveText(/User \".*\" created/i);\n }\n\n /* Verify user error message */\n async verifyUserErrorMessage(): Promise<void> {\n await expect(this.page.locator('.rrt-middle-container[role=\"alertdialog\"]').nth(1)).toContainText(\n /already in use/i,\n );\n }\n\n /* Delete the user and verify it is deleted */\n async deleteTheUserAndVerifyItIsDeleted(username: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('td.users-table-actions button.delete.xl-icon.table-action').click();\n await this.page.getByRole('button', { name: 'Delete', exact: true }).click();\n const DeleteMessage = this.page.getByRole('alertdialog');\n await expect(DeleteMessage).toBeVisible();\n await expect(DeleteMessage).toHaveText(/User \".*\" deleted/i);\n }\n\n /* Edit the user and verify the changes */\n async editUserAndVerify(username: string, editfullname: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('i.icon-edit.dot-i').first().click();\n await this.page.locator('input[name=\"fullName\"]').fill(editfullname);\n await this.page.getByRole('button', { name: 'Save', exact: true }).click();\n const EditMessage = this.page.getByRole('alertdialog');\n await expect(EditMessage).toBeVisible();\n await expect(EditMessage).toContainText('Your change was saved');\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from '../withPage';\n\nexport class OverthereLocalHostPage extends WithPage {\n /* Helps to create a LocalHost of type UNIX/Windows/Zos */\n async createHostForGivenType(name: string, type: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(name);\n await this.page.locator('label:has-text(\"Operating system\")').locator('xpath=following::input[1]').click();\n await this.page.getByText(type, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n}\n","import { WithPage } from './withPage';\nimport { expect } from '@playwright/test';\n\nexport class EnvironmentsPage extends WithPage {\n /* Helps to create a new Environment */\n async createEnvironment(environmentName: string, hostName: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(environmentName);\n await this.page.locator('i.xl-icon.arrow-down-icon.show-all').nth(0).click();\n await this.page.getByTitle(`Infrastructure/${hostName}`, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n}\n","import { expect, Page } from '@playwright/test';\nimport { WithPage } from '../withPage';\nimport { Navigation } from '../index';\n\nexport class ApplicationsPage extends WithPage {\n taskId!: string;\n executedText!: string;\n private navigation: Navigation;\n\n constructor(page: Page, navigation: Navigation) {\n super(page);\n this.navigation = navigation;\n }\n\n /* Creates a new application */\n async createNewApplication(applicationName: string): Promise<void> {\n await this.navigation.navigateToApplicationsPage();\n await this.page.locator('input[name=\"name\"]').waitFor({ state: 'visible' });\n await this.page.locator('input[name=\"name\"]').click();\n await this.page.locator('input[name=\"name\"]').fill(applicationName);\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n\n /* Creates a new deployment package */\n async createNewDeploymentPackage(applicationName: string, packageName: string): Promise<void> {\n const appDataId = `Applications/${applicationName}`;\n\n // Expand Applications\n const root = this.page.locator('div[data-id=\"Applications\"] .infinite-tree-node > a');\n await root.click();\n\n // Hover over app node\n const appNode = this.page.locator(`span[data-id=\"${appDataId}\"]`);\n await expect(appNode).toBeVisible();\n await appNode.hover();\n\n // Open context menu + create new deployment package\n const contextMenu = this.page.locator(`i.context-menu-button[data-id=\"${appDataId}\"]`);\n await expect(contextMenu).toBeVisible();\n await contextMenu.click();\n\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Deployment Package' }).click();\n\n // Fill & save\n const nameInput = this.page.locator('input[name=\"name\"]');\n await nameInput.fill(packageName);\n\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n\n /* Creates a new command application */\n async createNewCmdApplication(values: string[]): Promise<void> {\n const appDataId = `Applications/${values[0]}`;\n const packageDataId = `Applications/${values[0]}/${values[1]}`;\n\n // Expand app node and click package\n await this.page.locator(`div[data-id=\"${appDataId}\"] .infinite-tree-node > a`).click();\n const packageNode = this.page.locator(`span[data-id=\"${packageDataId}\"]`).first();\n await expect(packageNode).toBeVisible();\n await packageNode.click();\n\n // Open context menu\n const packageMenu = this.page.locator(`i.context-menu-button[data-id=\"${packageDataId}\"]`);\n await expect(packageMenu).toBeVisible();\n await packageMenu.click();\n\n // Create Command application\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'cmd' }).click();\n await this.page.getByRole('link', { name: 'Command' }).click();\n\n await this.page.locator('input[name=\"name\"]').fill(values[2]);\n\n await this.page.locator('textarea[name=\"commandLine\"]').fill(values[3]);\n\n const saveBtn = this.page.locator('button', { hasText: /^Save$/ }).first();\n await expect(saveBtn).toBeEnabled();\n await saveBtn.click();\n await this.page.waitForTimeout(3000);\n\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n\n // Close dialog\n await this.page.locator('i.xl-icon.close-icon').first().click();\n }\n\n /*Deploy the application*/\n async deployApp(values: string[]): Promise<void> {\n const versionNode = `Applications/${values[0]}/${values[1]}`;\n await this.page.locator(`i.context-menu-button[data-id=\"${versionNode}\"]`).click();\n await this.page.getByRole('link', { name: 'Deploy', exact: true }).click();\n await this.page.locator(`input[name=\"selections\"][value=\"Environments/${values[2]}\"]`).click();\n await this.page.getByRole('button', { name: 'Continue' }).click();\n\n await this.page.locator('.errors-wrapper').waitFor({ state: 'attached', timeout: 5000 });\n\n const errorIcon = this.page.locator('a.validation-icons-wrapper.error');\n\n if (await errorIcon.isVisible()) {\n await this.page.getByRole('button', { name: 'Deployment Properties' }).click();\n await this.page.locator('input[name=\"username\"]').fill(values[3]);\n await this.page.getByRole('button', { name: 'Save' }).click();\n }\n\n await this.page.locator('button.deploy.xl-primary').click();\n\n //Get the task id\n this.taskId = (await this.page.locator('div.task-id').textContent()) || '';\n\n //Verify no failure and all are done\n const labels = this.page.locator('span.label');\n await expect(labels).toHaveCount(3);\n await expect(labels).toHaveText(['EXECUTED', 'DONE', 'DONE']);\n\n //Get the text executed\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n this.executedText = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify in monitoring tab searching with the task id\n await this.page.locator('div[data-id=\"TASK_MONITOR\"] .infinite-tree-node > a').click();\n await this.page.locator('span[data-id=\"DEPLOYMENT_TASKS\"]').dblclick();\n await this.page.waitForTimeout(5000);\n\n await this.page.locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]').first().fill(this.taskId);\n const stateText = await this.page.locator('td.tasks-table-state').first().innerText();\n expect(stateText.trim()).toBe('Executed');\n\n //Click the row to go to deployment screen\n await this.page.locator('table.table.table-striped tbody tr').first().dblclick();\n\n await this.page.locator('button.finish.xl-primary').click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class ReportsPage extends WithPage {\n /* Clicks on the Deployment Tasks section */\n async clickDeploymentTasks(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Deployments' }).click();\n }\n\n async verifyTheDeploymentValues(values: string[]): Promise<void> {\n await this.page\n .locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]:visible')\n .first()\n .fill(values[0]);\n await this.page.waitForSelector('td.report-table-package .deployment-report-package', { timeout: 5000 });\n await expect(this.page.locator('td.report-table-package .deployment-report-package')).toContainText(\n new RegExp(`${values[2]}\\\\/${values[3]}`, 'i'),\n );\n await expect(this.page.locator('td.report-table-originalType .deployment-report-task-type')).toHaveText(/Initial/i); // Regex ignores case\n await expect(this.page.locator('td.report-table-user .deployment-report-user')).toHaveText('admin');\n\n //Click the row\n await this.page.locator('td.report-table-package .deployment-report-package').dblclick();\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n\n //Get the log text\n const text = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify both the log text are same\n expect(text).toContain(values[1]);\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class LoginPage extends WithPage {\n /* Login with username and password*/\n async login(userName: string, password: string): Promise<void> {\n await this.page.goto('/#/login');\n await expect(this.page).toHaveTitle('Digital.ai Deploy');\n await this.page.getByPlaceholder('user').fill(userName, { timeout: 1000 });\n await this.page.getByPlaceholder('Password').fill(password, { timeout: 10000 });\n await this.page.getByRole('button', { name: 'Log in' }).click({ timeout: 10000 });\n }\n\n /* Verify invalid password message */\n async verifyInvalidPasswordMessage(): Promise<void> {\n const errorMessage = this.page.getByText('The username and/or password you have entered is incorrect.');\n await expect(errorMessage).toBeVisible();\n }\n\n /* Logout as authenticated user */\n async logout(): Promise<void> {\n await this.page.locator('button.dot-avatar').click();\n await this.page.getByText('Log out', { exact: true }).click();\n await expect(this.page.getByText('Log in').first()).toBeVisible();\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
package/dist/types.d.ts CHANGED
@@ -25,7 +25,7 @@ declare class EnvironmentsPage extends WithPage {
25
25
  declare class ApplicationsPage extends WithPage {
26
26
  taskId: string;
27
27
  executedText: string;
28
- constructor(page: any, navigation: any);
28
+ constructor(page: Page, navigation: Navigation);
29
29
  createNewApplication(applicationName: string): Promise<void>;
30
30
  createNewDeploymentPackage(applicationName: string, packageName: string): Promise<void>;
31
31
  createNewCmdApplication(values: string[]): Promise<void>;
@@ -1 +1 @@
1
- {"mappings":"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","sources":["apps/deploy/pages/withPage.ts","apps/deploy/pages/homePage.ts","apps/deploy/pages/usersPage.ts","apps/deploy/pages/infrastructure/overthereLocalHostPage.ts","apps/deploy/pages/environmentsPage.ts","apps/deploy/pages/applications/applicationsPage.ts","apps/deploy/pages/reportsPage.ts","apps/deploy/pages/index.ts","apps/deploy/pages/loginPage.ts","apps/deploy/fixtures/index.ts","apps/deploy/index.ts"],"sourcesContent":["import { Page } from '@playwright/test';\n\nexport class WithPage {\n protected readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class HomePage extends WithPage {\n async clickUserManagement(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n await this.page.getByRole('link', { name: 'Users' }).click();\n }\n\n async verifyDeployLogoIsPresent(): Promise<void> {\n const logo = this.page.getByAltText('Deploy');\n await expect(logo).toBeVisible();\n }\n\n async verifyDeployTextIsPresent(): Promise<void> {\n const title = this.page.getByTitle('digital.ai');\n await expect(title).toBeVisible();\n }\n\n async clickReports(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Reports' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class UserPage extends WithPage {\n /* Create a new user */\n async createNewUser(username: string, email: string, password: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByRole('button', { name: 'Add user' }).click();\n await this.page.locator('input[name=\"username\"]').fill(username);\n await this.page.locator('input[name=\"fullName\"]').fill(username);\n await this.page.locator('input[name=\"email\"]').fill(email);\n const passwordInput = this.page.locator('input[name=\"password\"]');\n await passwordInput.click({ force: true });\n await passwordInput.fill(password);\n await this.page.locator('input[name=\"confirmPassword\"]').fill(password);\n await this.page.getByRole('button', { name: 'Save' }).click();\n }\n\n /* Verify success message */\n async verifySuccessMessage(): Promise<void> {\n const SuccessMessage = this.page.getByRole('alertdialog');\n await expect(SuccessMessage).toBeVisible();\n await expect(SuccessMessage).toHaveText(/User \".*\" created/i);\n }\n\n /* Verify user error message */\n async verifyUserErrorMessage(): Promise<void> {\n await expect(this.page.locator('.rrt-middle-container[role=\"alertdialog\"]').nth(1)).toContainText(\n /already in use/i,\n );\n }\n\n /* Delete the user and verify it is deleted */\n async deleteTheUserAndVerifyItIsDeleted(username: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('td.users-table-actions button.delete.xl-icon.table-action').click();\n await this.page.getByRole('button', { name: 'Delete', exact: true }).click();\n const DeleteMessage = this.page.getByRole('alertdialog');\n await expect(DeleteMessage).toBeVisible();\n await expect(DeleteMessage).toHaveText(/User \".*\" deleted/i);\n }\n\n /* Edit the user and verify the changes */\n async editUserAndVerify(username: string, editfullname: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('i.icon-edit.dot-i').first().click();\n await this.page.locator('input[name=\"fullName\"]').fill(editfullname);\n await this.page.getByRole('button', { name: 'Save', exact: true }).click();\n const EditMessage = this.page.getByRole('alertdialog');\n await expect(EditMessage).toBeVisible();\n await expect(EditMessage).toContainText('Your change was saved');\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from '../withPage';\n\nexport class OverthereLocalHostPage extends WithPage {\n /* Helps to create a LocalHost of type UNIX/Windows/Zos */\n async createHostForGivenType(name: string, type: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(name);\n await this.page.locator('label:has-text(\"Operating system\")').locator('xpath=following::input[1]').click();\n await this.page.getByText(type, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class EnvironmentsPage extends WithPage {\n /* Helps to create a new Environment */\n async createEnvironment(environmentName: string, hostName: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(environmentName);\n await this.page.locator('i.xl-icon.arrow-down-icon.show-all').nth(0).click();\n await this.page.getByTitle(`Infrastructure/${hostName}`, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from '../withPage';\n\nexport class ApplicationsPage extends WithPage {\n taskId!: string;\n executedText!: string;\n private navigation: any;\n\n constructor(page: any, navigation: any) {\n super(page);\n this.navigation = navigation;\n }\n\n /* Creates a new application */\n async createNewApplication(applicationName: string): Promise<void> {\n await this.navigation.navigateToApplicationsPage();\n await this.page.locator('input[name=\"name\"]').waitFor({ state: 'visible' });\n await this.page.locator('input[name=\"name\"]').click();\n await this.page.locator('input[name=\"name\"]').fill(applicationName);\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n }\n\n /* Creates a new deployment package */\n async createNewDeploymentPackage(applicationName: string, packageName: string): Promise<void> {\n const appDataId = `Applications/${applicationName}`;\n\n // Expand Applications\n const root = this.page.locator('div[data-id=\"Applications\"] .infinite-tree-node > a');\n await root.click();\n\n // Hover over app node\n const appNode = this.page.locator(`span[data-id=\"${appDataId}\"]`);\n await expect(appNode).toBeVisible();\n await appNode.hover();\n\n // Open context menu + create new deployment package\n const contextMenu = this.page.locator(`i.context-menu-button[data-id=\"${appDataId}\"]`);\n await expect(contextMenu).toBeVisible();\n await contextMenu.click();\n\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Deployment Package' }).click();\n\n // Fill & save\n const nameInput = this.page.locator('input[name=\"name\"]');\n await nameInput.fill(packageName);\n\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n }\n\n /* Creates a new command application */\n async createNewCmdApplication(values: string[]): Promise<void> {\n const appDataId = `Applications/${values[0]}`;\n const packageDataId = `Applications/${values[0]}/${values[1]}`;\n\n // Expand app node and click package\n await this.page.locator(`div[data-id=\"${appDataId}\"] .infinite-tree-node > a`).click();\n const packageNode = this.page.locator(`span[data-id=\"${packageDataId}\"]`).first();\n await expect(packageNode).toBeVisible();\n await packageNode.click();\n\n // Open context menu\n const packageMenu = this.page.locator(`i.context-menu-button[data-id=\"${packageDataId}\"]`);\n await expect(packageMenu).toBeVisible();\n await packageMenu.click();\n\n // Create Command application\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'cmd' }).click();\n await this.page.getByRole('link', { name: 'Command' }).click();\n\n await this.page.locator('input[name=\"name\"]').fill(values[2]);\n\n await this.page.locator('textarea[name=\"commandLine\"]').fill(values[3]);\n\n const saveBtn = this.page.locator('button', { hasText: /^Save$/ }).first();\n await expect(saveBtn).toBeEnabled();\n await saveBtn.click();\n await this.page.waitForTimeout(3000);\n\n // Close dialog\n await this.page.locator('i.xl-icon.close-icon').first().click();\n }\n\n /*Deploy the application*/\n async deployApp(values: string[]): Promise<void> {\n const versionNode = `Applications/${values[0]}/${values[1]}`;\n await this.page.locator(`i.context-menu-button[data-id=\"${versionNode}\"]`).click();\n await this.page.getByRole('link', { name: 'Deploy', exact: true }).click();\n await this.page.locator(`input[name=\"selections\"][value=\"Environments/${values[2]}\"]`).click();\n await this.page.getByRole('button', { name: 'Continue' }).click();\n\n await this.page.locator('.errors-wrapper').waitFor({ state: 'attached', timeout: 5000 });\n\n const errorIcon = this.page.locator('a.validation-icons-wrapper.error');\n\n if (await errorIcon.isVisible()) {\n await this.page.getByRole('button', { name: 'Deployment Properties' }).click();\n await this.page.locator('input[name=\"username\"]').fill(values[3]);\n await this.page.getByRole('button', { name: 'Save' }).click();\n } else {\n }\n\n await this.page.locator('button.deploy.xl-primary').click();\n\n //Get the task id\n this.taskId = (await this.page.locator('div.task-id').textContent()) || '';\n\n //Verify no failure and all are done\n const labels = this.page.locator('span.label');\n await expect(labels).toHaveCount(3);\n await expect(labels).toHaveText(['EXECUTED', 'DONE', 'DONE']);\n\n //Get the text executed\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n this.executedText = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify in monitoring tab searching with the task id\n await this.page.locator('div[data-id=\"TASK_MONITOR\"] .infinite-tree-node > a').click();\n await this.page.locator('span[data-id=\"DEPLOYMENT_TASKS\"]').dblclick();\n await this.page.waitForTimeout(5000);\n\n await this.page.locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]').first().fill(this.taskId);\n const stateText = await this.page.locator('td.tasks-table-state').first().innerText();\n expect(stateText.trim()).toBe('Executed');\n\n //Click the row to go to deployment screen\n await this.page.locator('table.table.table-striped tbody tr').first().dblclick();\n\n await this.page.locator('button.finish.xl-primary').click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class ReportsPage extends WithPage {\n /* Clicks on the Deployment Tasks section */\n async clickDeploymentTasks(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Deployments' }).click();\n }\n\n async verifyTheDeploymentValues(values: string[]): Promise<void> {\n await this.page\n .locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]:visible')\n .first()\n .fill(values[0]);\n await this.page.waitForSelector('td.report-table-package .deployment-report-package', { timeout: 30000 });\n await expect(this.page.locator('td.report-table-package .deployment-report-package')).toContainText(\n new RegExp(`${values[2]}\\\\/${values[3]}`, 'i'),\n );\n await expect(this.page.locator('td.report-table-originalType .deployment-report-task-type')).toHaveText(/Initial/i); // Regex ignores case\n await expect(this.page.locator('td.report-table-user .deployment-report-user')).toHaveText('admin');\n\n //Click the row\n await this.page.locator('td.report-table-package .deployment-report-package').dblclick();\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n\n //Get the log text\n const text = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify both the log text are same\n expect(text).toContain(values[1]);\n }\n}\n","import { Page } from '@playwright/test';\nimport { HomePage } from './homePage';\nimport { UserPage } from './usersPage';\nimport { OverthereLocalHostPage } from './infrastructure/overthereLocalHostPage';\nimport { EnvironmentsPage } from './environmentsPage';\nimport { ApplicationsPage } from './applications/applicationsPage';\nimport { ReportsPage } from './reportsPage';\n\nexport class Navigation {\n private readonly page: Page;\n homePage: HomePage;\n userPage: UserPage;\n overthereLocalHostPage: OverthereLocalHostPage;\n environmentsPage: EnvironmentsPage;\n applicationsPage: ApplicationsPage;\n reportsPage: ReportsPage;\n\n constructor(page: Page) {\n this.page = page;\n this.homePage = new HomePage(page);\n this.userPage = new UserPage(page);\n this.overthereLocalHostPage = new OverthereLocalHostPage(page);\n this.environmentsPage = new EnvironmentsPage(page);\n this.applicationsPage = new ApplicationsPage(page, this);\n this.reportsPage = new ReportsPage(page);\n }\n\n async navigateToHomePage(): Promise<void> {\n await this.page.goto('/home');\n }\n\n async navigateToUserPage(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n }\n\n async clickCollapseSideView(): Promise<void> {\n const collapseButton = this.page.getByTestId('back-button');\n await collapseButton.click();\n }\n\n /* Helps to navigate to the Applications page */\n async navigateToApplicationsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Applications\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Applications\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Application' }).click();\n }\n\n /* Helps to navigate to the Environments page */\n async navigateToEnvironmentsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Environments\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Environments\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Environment' }).click();\n }\n\n /* Helps to navigate to the Overthere LocalHost page */\n async navigateToOverthereLocalHostPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Infrastructure\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Infrastructure\"]').click();\n // await this.page.waitForTimeout(5000);\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'overthere' }).click();\n await this.page.getByRole('link', { name: 'LocalHost' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class LoginPage extends WithPage {\n /* Login with username and password*/\n async login(userName: string, password: string): Promise<void> {\n await this.page.goto('/#/login');\n await expect(this.page).toHaveTitle('Digital.ai Deploy');\n await this.page.getByPlaceholder('user').fill(userName, { timeout: 1000 });\n await this.page.getByPlaceholder('Password').fill(password, { timeout: 10000 });\n await this.page.getByRole('button', { name: 'Log in' }).click({ timeout: 10000 });\n }\n\n /* Verify invalid password message */\n async verifyInvalidPasswordMessage(): Promise<void> {\n const errorMessage = this.page.getByText('The username and/or password you have entered is incorrect.');\n await expect(errorMessage).toBeVisible();\n }\n\n /* Logout as authenticated user */\n async logout(): Promise<void> {\n await this.page.locator('button.dot-avatar').click();\n await this.page.getByText('Log out', { exact: true }).click();\n await expect(this.page.getByText('Log in').first()).toBeVisible();\n }\n}\n","import { test as base, Page } from '@playwright/test';\nimport { Navigation } from '../pages';\nimport { LoginPage } from '../pages/loginPage';\n\ntype DeployFixtures = {\n fixtures: Fixtures;\n loginPage: LoginPage;\n navigation: Navigation;\n};\n\nexport const test = base.extend<DeployFixtures>({\n fixtures: async ({ page }, use) => {\n const fixtures = new Fixtures(page);\n await use(fixtures);\n return fixtures;\n },\n loginPage: async ({ page }, use) => {\n const loginPage = new LoginPage(page);\n await use(loginPage);\n return loginPage;\n },\n navigation: async ({ page }, use) => {\n const navigationPage = new Navigation(page);\n await use(navigationPage);\n return navigationPage;\n },\n});\n\nclass Fixtures {\n private readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","export { test } from './fixtures';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
1
+ {"mappings":"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","sources":["apps/deploy/pages/withPage.ts","apps/deploy/pages/homePage.ts","apps/deploy/pages/usersPage.ts","apps/deploy/pages/infrastructure/overthereLocalHostPage.ts","apps/deploy/pages/environmentsPage.ts","apps/deploy/pages/applications/applicationsPage.ts","apps/deploy/pages/reportsPage.ts","apps/deploy/pages/index.ts","apps/deploy/pages/loginPage.ts","apps/deploy/fixtures/index.ts","apps/deploy/index.ts"],"sourcesContent":["import { Page } from '@playwright/test';\n\nexport class WithPage {\n protected readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class HomePage extends WithPage {\n async clickUserManagement(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n await this.page.getByRole('link', { name: 'Users' }).click();\n }\n\n async verifyDeployLogoIsPresent(): Promise<void> {\n const logo = this.page.getByAltText('Deploy');\n await expect(logo).toBeVisible();\n }\n\n async verifyDeployTextIsPresent(): Promise<void> {\n const title = this.page.getByTitle('digital.ai');\n await expect(title).toBeVisible();\n }\n\n async clickReports(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Reports' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class UserPage extends WithPage {\n /* Create a new user */\n async createNewUser(username: string, email: string, password: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByRole('button', { name: 'Add user' }).click();\n await this.page.locator('input[name=\"username\"]').fill(username);\n await this.page.locator('input[name=\"fullName\"]').fill(username);\n await this.page.locator('input[name=\"email\"]').fill(email);\n const passwordInput = this.page.locator('input[name=\"password\"]');\n await passwordInput.click({ force: true });\n await passwordInput.fill(password);\n await this.page.locator('input[name=\"confirmPassword\"]').fill(password);\n await this.page.getByRole('button', { name: 'Save' }).click();\n }\n\n /* Verify success message */\n async verifySuccessMessage(): Promise<void> {\n const SuccessMessage = this.page.getByRole('alertdialog');\n await expect(SuccessMessage).toBeVisible();\n await expect(SuccessMessage).toHaveText(/User \".*\" created/i);\n }\n\n /* Verify user error message */\n async verifyUserErrorMessage(): Promise<void> {\n await expect(this.page.locator('.rrt-middle-container[role=\"alertdialog\"]').nth(1)).toContainText(\n /already in use/i,\n );\n }\n\n /* Delete the user and verify it is deleted */\n async deleteTheUserAndVerifyItIsDeleted(username: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('td.users-table-actions button.delete.xl-icon.table-action').click();\n await this.page.getByRole('button', { name: 'Delete', exact: true }).click();\n const DeleteMessage = this.page.getByRole('alertdialog');\n await expect(DeleteMessage).toBeVisible();\n await expect(DeleteMessage).toHaveText(/User \".*\" deleted/i);\n }\n\n /* Edit the user and verify the changes */\n async editUserAndVerify(username: string, editfullname: string): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Users' }).click();\n await this.page.getByPlaceholder('Filter...').fill(username);\n await this.page.locator('i.icon-edit.dot-i').first().click();\n await this.page.locator('input[name=\"fullName\"]').fill(editfullname);\n await this.page.getByRole('button', { name: 'Save', exact: true }).click();\n const EditMessage = this.page.getByRole('alertdialog');\n await expect(EditMessage).toBeVisible();\n await expect(EditMessage).toContainText('Your change was saved');\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from '../withPage';\n\nexport class OverthereLocalHostPage extends WithPage {\n /* Helps to create a LocalHost of type UNIX/Windows/Zos */\n async createHostForGivenType(name: string, type: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(name);\n await this.page.locator('label:has-text(\"Operating system\")').locator('xpath=following::input[1]').click();\n await this.page.getByText(type, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n}\n","import { WithPage } from './withPage';\nimport { expect } from '@playwright/test';\n\nexport class EnvironmentsPage extends WithPage {\n /* Helps to create a new Environment */\n async createEnvironment(environmentName: string, hostName: string): Promise<void> {\n await this.page.locator('input[name=\"name\"]').fill(environmentName);\n await this.page.locator('i.xl-icon.arrow-down-icon.show-all').nth(0).click();\n await this.page.getByTitle(`Infrastructure/${hostName}`, { exact: true }).click();\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n}\n","import { expect, Page } from '@playwright/test';\nimport { WithPage } from '../withPage';\nimport { Navigation } from '../index';\n\nexport class ApplicationsPage extends WithPage {\n taskId!: string;\n executedText!: string;\n private navigation: Navigation;\n\n constructor(page: Page, navigation: Navigation) {\n super(page);\n this.navigation = navigation;\n }\n\n /* Creates a new application */\n async createNewApplication(applicationName: string): Promise<void> {\n await this.navigation.navigateToApplicationsPage();\n await this.page.locator('input[name=\"name\"]').waitFor({ state: 'visible' });\n await this.page.locator('input[name=\"name\"]').click();\n await this.page.locator('input[name=\"name\"]').fill(applicationName);\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n\n /* Creates a new deployment package */\n async createNewDeploymentPackage(applicationName: string, packageName: string): Promise<void> {\n const appDataId = `Applications/${applicationName}`;\n\n // Expand Applications\n const root = this.page.locator('div[data-id=\"Applications\"] .infinite-tree-node > a');\n await root.click();\n\n // Hover over app node\n const appNode = this.page.locator(`span[data-id=\"${appDataId}\"]`);\n await expect(appNode).toBeVisible();\n await appNode.hover();\n\n // Open context menu + create new deployment package\n const contextMenu = this.page.locator(`i.context-menu-button[data-id=\"${appDataId}\"]`);\n await expect(contextMenu).toBeVisible();\n await contextMenu.click();\n\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Deployment Package' }).click();\n\n // Fill & save\n const nameInput = this.page.locator('input[name=\"name\"]');\n await nameInput.fill(packageName);\n\n await this.page.getByRole('button', { name: 'Save and close' }).click();\n\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n }\n\n /* Creates a new command application */\n async createNewCmdApplication(values: string[]): Promise<void> {\n const appDataId = `Applications/${values[0]}`;\n const packageDataId = `Applications/${values[0]}/${values[1]}`;\n\n // Expand app node and click package\n await this.page.locator(`div[data-id=\"${appDataId}\"] .infinite-tree-node > a`).click();\n const packageNode = this.page.locator(`span[data-id=\"${packageDataId}\"]`).first();\n await expect(packageNode).toBeVisible();\n await packageNode.click();\n\n // Open context menu\n const packageMenu = this.page.locator(`i.context-menu-button[data-id=\"${packageDataId}\"]`);\n await expect(packageMenu).toBeVisible();\n await packageMenu.click();\n\n // Create Command application\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'cmd' }).click();\n await this.page.getByRole('link', { name: 'Command' }).click();\n\n await this.page.locator('input[name=\"name\"]').fill(values[2]);\n\n await this.page.locator('textarea[name=\"commandLine\"]').fill(values[3]);\n\n const saveBtn = this.page.locator('button', { hasText: /^Save$/ }).first();\n await expect(saveBtn).toBeEnabled();\n await saveBtn.click();\n await this.page.waitForTimeout(3000);\n\n const toastMessage = this.page.locator('.redux-toastr .rrt-text:visible');\n await expect(toastMessage).toHaveText('Your change was saved.', { timeout: 5000 });\n\n // Close dialog\n await this.page.locator('i.xl-icon.close-icon').first().click();\n }\n\n /*Deploy the application*/\n async deployApp(values: string[]): Promise<void> {\n const versionNode = `Applications/${values[0]}/${values[1]}`;\n await this.page.locator(`i.context-menu-button[data-id=\"${versionNode}\"]`).click();\n await this.page.getByRole('link', { name: 'Deploy', exact: true }).click();\n await this.page.locator(`input[name=\"selections\"][value=\"Environments/${values[2]}\"]`).click();\n await this.page.getByRole('button', { name: 'Continue' }).click();\n\n await this.page.locator('.errors-wrapper').waitFor({ state: 'attached', timeout: 5000 });\n\n const errorIcon = this.page.locator('a.validation-icons-wrapper.error');\n\n if (await errorIcon.isVisible()) {\n await this.page.getByRole('button', { name: 'Deployment Properties' }).click();\n await this.page.locator('input[name=\"username\"]').fill(values[3]);\n await this.page.getByRole('button', { name: 'Save' }).click();\n }\n\n await this.page.locator('button.deploy.xl-primary').click();\n\n //Get the task id\n this.taskId = (await this.page.locator('div.task-id').textContent()) || '';\n\n //Verify no failure and all are done\n const labels = this.page.locator('span.label');\n await expect(labels).toHaveCount(3);\n await expect(labels).toHaveText(['EXECUTED', 'DONE', 'DONE']);\n\n //Get the text executed\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n this.executedText = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify in monitoring tab searching with the task id\n await this.page.locator('div[data-id=\"TASK_MONITOR\"] .infinite-tree-node > a').click();\n await this.page.locator('span[data-id=\"DEPLOYMENT_TASKS\"]').dblclick();\n await this.page.waitForTimeout(5000);\n\n await this.page.locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]').first().fill(this.taskId);\n const stateText = await this.page.locator('td.tasks-table-state').first().innerText();\n expect(stateText.trim()).toBe('Executed');\n\n //Click the row to go to deployment screen\n await this.page.locator('table.table.table-striped tbody tr').first().dblclick();\n\n await this.page.locator('button.finish.xl-primary').click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class ReportsPage extends WithPage {\n /* Clicks on the Deployment Tasks section */\n async clickDeploymentTasks(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'Deployments' }).click();\n }\n\n async verifyTheDeploymentValues(values: string[]): Promise<void> {\n await this.page\n .locator('div.deployment-task-filter-task-id input[placeholder=\"Search\"]:visible')\n .first()\n .fill(values[0]);\n await this.page.waitForSelector('td.report-table-package .deployment-report-package', { timeout: 5000 });\n await expect(this.page.locator('td.report-table-package .deployment-report-package')).toContainText(\n new RegExp(`${values[2]}\\\\/${values[3]}`, 'i'),\n );\n await expect(this.page.locator('td.report-table-originalType .deployment-report-task-type')).toHaveText(/Initial/i); // Regex ignores case\n await expect(this.page.locator('td.report-table-user .deployment-report-user')).toHaveText('admin');\n\n //Click the row\n await this.page.locator('td.report-table-package .deployment-report-package').dblclick();\n await this.page.locator('div[data-id=\"0_1_1\"] .infinite-tree-node > a').click();\n await this.page.getByTitle('Execute Test Command').click();\n\n //Get the log text\n const text = await this.page.locator('div.step-log-body pre').nth(1).innerText();\n\n //Verify both the log text are same\n expect(text).toContain(values[1]);\n }\n}\n","import { Page } from '@playwright/test';\nimport { HomePage } from './homePage';\nimport { UserPage } from './usersPage';\nimport { OverthereLocalHostPage } from './infrastructure/overthereLocalHostPage';\nimport { EnvironmentsPage } from './environmentsPage';\nimport { ApplicationsPage } from './applications/applicationsPage';\nimport { ReportsPage } from './reportsPage';\n\nexport class Navigation {\n private readonly page: Page;\n homePage: HomePage;\n userPage: UserPage;\n overthereLocalHostPage: OverthereLocalHostPage;\n environmentsPage: EnvironmentsPage;\n applicationsPage: ApplicationsPage;\n reportsPage: ReportsPage;\n\n constructor(page: Page) {\n this.page = page;\n this.homePage = new HomePage(page);\n this.userPage = new UserPage(page);\n this.overthereLocalHostPage = new OverthereLocalHostPage(page);\n this.environmentsPage = new EnvironmentsPage(page);\n this.applicationsPage = new ApplicationsPage(page, this);\n this.reportsPage = new ReportsPage(page);\n }\n\n async navigateToHomePage(): Promise<void> {\n await this.page.goto('/home');\n }\n\n async navigateToUserPage(): Promise<void> {\n await this.page.locator('p.MuiTypography-root', { hasText: 'User management' }).click();\n }\n\n async clickCollapseSideView(): Promise<void> {\n const collapseButton = this.page.getByTestId('back-button');\n await collapseButton.click();\n }\n\n /* Helps to navigate to the Applications page */\n async navigateToApplicationsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Applications\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Applications\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Application' }).click();\n }\n\n /* Helps to navigate to the Environments page */\n async navigateToEnvironmentsPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Environments\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Environments\"]').click();\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'Environment' }).click();\n }\n\n /* Helps to navigate to the Overthere LocalHost page */\n async navigateToOverthereLocalHostPage(): Promise<void> {\n const configNode = this.page.locator('span[data-id=\"Infrastructure\"]');\n await configNode.hover();\n await this.page.locator('i.context-menu-button[data-id=\"Infrastructure\"]').click();\n // await this.page.waitForTimeout(5000);\n await this.page.getByRole('link', { name: 'New' }).click();\n await this.page.getByRole('link', { name: 'overthere' }).click();\n await this.page.getByRole('link', { name: 'LocalHost' }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './withPage';\n\nexport class LoginPage extends WithPage {\n /* Login with username and password*/\n async login(userName: string, password: string): Promise<void> {\n await this.page.goto('/#/login');\n await expect(this.page).toHaveTitle('Digital.ai Deploy');\n await this.page.getByPlaceholder('user').fill(userName, { timeout: 1000 });\n await this.page.getByPlaceholder('Password').fill(password, { timeout: 10000 });\n await this.page.getByRole('button', { name: 'Log in' }).click({ timeout: 10000 });\n }\n\n /* Verify invalid password message */\n async verifyInvalidPasswordMessage(): Promise<void> {\n const errorMessage = this.page.getByText('The username and/or password you have entered is incorrect.');\n await expect(errorMessage).toBeVisible();\n }\n\n /* Logout as authenticated user */\n async logout(): Promise<void> {\n await this.page.locator('button.dot-avatar').click();\n await this.page.getByText('Log out', { exact: true }).click();\n await expect(this.page.getByText('Log in').first()).toBeVisible();\n }\n}\n","import { test as base, Page } from '@playwright/test';\nimport { Navigation } from '../pages';\nimport { LoginPage } from '../pages/loginPage';\n\ntype DeployFixtures = {\n fixtures: Fixtures;\n loginPage: LoginPage;\n navigation: Navigation;\n};\n\nexport const test = base.extend<DeployFixtures>({\n fixtures: async ({ page }, use) => {\n const fixtures = new Fixtures(page);\n await use(fixtures);\n return fixtures;\n },\n loginPage: async ({ page }, use) => {\n const loginPage = new LoginPage(page);\n await use(loginPage);\n return loginPage;\n },\n navigation: async ({ page }, use) => {\n const navigationPage = new Navigation(page);\n await use(navigationPage);\n return navigationPage;\n },\n});\n\nclass Fixtures {\n private readonly page: Page;\n\n constructor(page: Page) {\n this.page = page;\n }\n}\n","export { test } from './fixtures';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digital-ai/devops-page-object-deploy",
3
- "version": "0.0.0-snapshot-20251121140708",
3
+ "version": "0.0.0-snapshot-20251124123340",
4
4
  "source": "index.ts",
5
5
  "main": "dist/main.js",
6
6
  "module": "dist/module.js",
@@ -22,8 +22,8 @@
22
22
  "@types/lodash": "4.14.192",
23
23
  "parcel": "2.8.3",
24
24
  "typescript": "4.5.3",
25
- "eslint-config-custom": "0.0.0",
26
- "tsconfig": "0.0.0"
25
+ "tsconfig": "0.0.0",
26
+ "eslint-config-custom": "0.0.0"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@playwright/test": "^1.34.3"