@digital-ai/devops-page-object-release 0.0.8 → 0.0.10
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 +13 -0
- package/dist/main.js +84 -6
- package/dist/main.js.map +1 -1
- package/dist/module.js +84 -6
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/module.js
CHANGED
|
@@ -163,12 +163,14 @@ class $4444bee76761dfb1$export$f14c0e3f98d164c0 extends (0, $9626bc9256ce31f7$ex
|
|
|
163
163
|
* @param userName
|
|
164
164
|
* @param password
|
|
165
165
|
*/ async login(userName, password) {
|
|
166
|
-
await this.page.goto("
|
|
166
|
+
await this.page.goto("./#/login");
|
|
167
167
|
await this.page.waitForTimeout(1000);
|
|
168
168
|
await (0, $hOLA6$expect)(this.page).toHaveTitle("Digital.ai Release");
|
|
169
|
-
await this.page.
|
|
170
|
-
await this.page.
|
|
171
|
-
await this.page.
|
|
169
|
+
await this.page.getByPlaceholder("User").fill(userName);
|
|
170
|
+
await this.page.getByPlaceholder("Password").fill(password);
|
|
171
|
+
await this.page.getByRole("button", {
|
|
172
|
+
name: "Log in"
|
|
173
|
+
}).click();
|
|
172
174
|
}
|
|
173
175
|
/**
|
|
174
176
|
* Logout as authenticated user
|
|
@@ -674,7 +676,7 @@ class $2cb6a6ac6b17e85f$export$107317390f5aa598 extends (0, $9626bc9256ce31f7$ex
|
|
|
674
676
|
this.modal = new (0, $21185a378c23589e$export$e2e2e1ffdce20c30)(page);
|
|
675
677
|
}
|
|
676
678
|
async openUsersPage() {
|
|
677
|
-
this.page.goto("
|
|
679
|
+
this.page.goto("./#/users", {
|
|
678
680
|
timeout: 1000
|
|
679
681
|
});
|
|
680
682
|
}
|
|
@@ -738,6 +740,81 @@ class $9ca6e63d357957dd$export$922081b54f2ab994 extends (0, $9626bc9256ce31f7$ex
|
|
|
738
740
|
}
|
|
739
741
|
|
|
740
742
|
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
class $3a340a3f4fd8f04d$export$43682cddead1dd78 extends (0, $9626bc9256ce31f7$export$2b65d1d97338f32b) {
|
|
746
|
+
async openReleaseCalendarPage() {
|
|
747
|
+
await this.page.goto("./#/calendar");
|
|
748
|
+
await (0, $hOLA6$expect)(this.page).toHaveTitle("Release calendar / Home - Digital.ai Release");
|
|
749
|
+
//Define date format to verify different calendar views
|
|
750
|
+
const today = new Date();
|
|
751
|
+
let options = {
|
|
752
|
+
weekday: "long",
|
|
753
|
+
year: "numeric",
|
|
754
|
+
month: "short",
|
|
755
|
+
day: "numeric"
|
|
756
|
+
};
|
|
757
|
+
this.dayFormat = today.toLocaleDateString("en-US", options); // Saturday, September 17, 2016
|
|
758
|
+
this.yearFormat = today.getFullYear();
|
|
759
|
+
this.yearFormatString = this.yearFormat.toString();
|
|
760
|
+
options = {
|
|
761
|
+
month: "long",
|
|
762
|
+
year: "numeric"
|
|
763
|
+
};
|
|
764
|
+
this.monthFormat = today.toLocaleDateString("en-US", options);
|
|
765
|
+
return this;
|
|
766
|
+
}
|
|
767
|
+
async exportCalendar() {
|
|
768
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
769
|
+
this.page.on("download", ()=>{});
|
|
770
|
+
await this.page.getByRole("button", {
|
|
771
|
+
name: "download icon Export calendar"
|
|
772
|
+
}).click();
|
|
773
|
+
const downloadPromise = this.page.waitForEvent("download");
|
|
774
|
+
await this.page.getByRole("button", {
|
|
775
|
+
name: "Export"
|
|
776
|
+
}).click();
|
|
777
|
+
await downloadPromise;
|
|
778
|
+
}
|
|
779
|
+
async cancelCalendarExport() {
|
|
780
|
+
let downloadCount = 0;
|
|
781
|
+
// Listen to download events
|
|
782
|
+
this.page.on("download", (_download)=>{
|
|
783
|
+
downloadCount++;
|
|
784
|
+
});
|
|
785
|
+
await this.page.getByRole("button", {
|
|
786
|
+
name: "download icon Export calendar"
|
|
787
|
+
}).click();
|
|
788
|
+
await this.page.getByRole("button", {
|
|
789
|
+
name: "Cancel"
|
|
790
|
+
}).click();
|
|
791
|
+
return downloadCount;
|
|
792
|
+
}
|
|
793
|
+
async verifyDayView() {
|
|
794
|
+
await this.page.getByRole("combobox").click();
|
|
795
|
+
await this.page.getByRole("option", {
|
|
796
|
+
name: "Day"
|
|
797
|
+
}).click();
|
|
798
|
+
await this.page.getByRole("button", {
|
|
799
|
+
name: "Today"
|
|
800
|
+
}).click();
|
|
801
|
+
//Verify Page has correct day format displayed at the page bottom
|
|
802
|
+
await (0, $hOLA6$expect)(this.page.getByText(this.dayFormat)).toBeVisible();
|
|
803
|
+
}
|
|
804
|
+
async verifyYearView() {
|
|
805
|
+
await this.page.getByRole("combobox").click();
|
|
806
|
+
await this.page.getByRole("option", {
|
|
807
|
+
name: "Year"
|
|
808
|
+
}).click();
|
|
809
|
+
await this.page.getByRole("button", {
|
|
810
|
+
name: "Today"
|
|
811
|
+
}).click();
|
|
812
|
+
//Verify Page has correct Year format displayed at the page bottom
|
|
813
|
+
await (0, $hOLA6$expect)(this.page.getByText(this.yearFormatString)).toBeVisible();
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
|
|
741
818
|
class $e72552cbf941ecfa$export$b8a61e5c71402559 {
|
|
742
819
|
constructor(page){
|
|
743
820
|
this.page = page;
|
|
@@ -746,6 +823,7 @@ class $e72552cbf941ecfa$export$b8a61e5c71402559 {
|
|
|
746
823
|
this.usersPage = new (0, $2cb6a6ac6b17e85f$export$107317390f5aa598)(page);
|
|
747
824
|
this.applicationPage = new (0, $c313b10398604df2$export$1533b625ec0c75e2)(page);
|
|
748
825
|
this.taskDetailsPage = new (0, $9ca6e63d357957dd$export$922081b54f2ab994)(page);
|
|
826
|
+
this.releaseCalendarPage = new (0, $3a340a3f4fd8f04d$export$43682cddead1dd78)(page);
|
|
749
827
|
}
|
|
750
828
|
async openTemplate(id) {
|
|
751
829
|
return this.openReleaseOrTemplate(id, false);
|
|
@@ -849,7 +927,7 @@ class $80c3ae34677b4324$var$Fixtures {
|
|
|
849
927
|
this.request = request;
|
|
850
928
|
this.page = page;
|
|
851
929
|
}
|
|
852
|
-
release(release) {
|
|
930
|
+
async release(release) {
|
|
853
931
|
this.initDefaults(release);
|
|
854
932
|
this.releaseIds.push(release.id);
|
|
855
933
|
return this.deleteRelease(release.id).then(()=>this.deleteArchivedRelease(release.id)).then(()=>this.doPost("fixtures/release", release));
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["apps/release/index.ts","apps/release/fixtures/index.ts","apps/release/fixtures/helper.ts","apps/release/pages/login-page.ts","apps/release/pages/WithPage.ts","apps/release/pages/index.ts","apps/release/pages/releases/ReleasePage.ts","apps/release/pages/TriggersPage.ts","apps/release/pages/releases/ReleasesListPage.ts","apps/release/pages/releases/ReleaseVariablesPage.ts","apps/release/pages/helper/index.ts","apps/release/pages/task-drawer/taskDrawer.ts","apps/release/pages/task-drawer/taskConfig.ts","apps/release/pages/task-drawer/taskCondition.ts","apps/release/pages/ApplicationsPage.ts","apps/release/pages/PersonalAccessTokenPage.ts","apps/release/pages/users/usersPage.ts","apps/release/pages/users/userModal.ts","apps/release/pages/settingsMenu.ts","apps/release/pages/taskDetails.ts"],"sourcesContent":["export { test } from './fixtures';\n","import { test as base, expect, Page, APIResponse } from '@playwright/test';\nimport { execFile } from 'child_process';\nimport { APIRequestContext } from 'playwright-core';\nimport isNil from 'lodash/isNil';\nimport { initReleaseDefaults } from './helper';\nimport { LoginPage } from '../pages/login-page';\nimport { Navigation } from '../pages';\nimport * as process from 'process';\nimport { FixtureConfiguration, FixtureFeature, FixtureRelease, FixtureTrigger, Release } from '../types';\n\nconst adminHeaders = {\n Authorization: 'Basic YWRtaW46YWRtaW4=',\n Cookie: 'XSRF-TOKEN=1;',\n 'X-XSRF-TOKEN': '1',\n};\n\ntype ReleaseFixtures = {\n fixtures: Fixtures;\n loginPage: LoginPage;\n navigation: Navigation;\n};\n\nexport const test = base.extend<ReleaseFixtures>({\n fixtures: async ({ request, page }, use) => {\n const fixtures = new Fixtures(request, 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 request: APIRequestContext;\n private readonly page: Page;\n\n private releaseIds: Array<string> = [];\n private triggerIds: Array<string> = [];\n private configurationIds: Array<string> = [];\n private usernames: Array<string> = [];\n private userProfiles: Array<string> = [];\n\n constructor(request: APIRequestContext, page: Page) {\n this.request = request;\n this.page = page;\n }\n\n release(release: FixtureRelease): Promise<APIResponse> {\n this.initDefaults(release);\n this.releaseIds.push(release.id);\n return this.deleteRelease(release.id)\n .then(() => this.deleteArchivedRelease(release.id))\n .then(() => this.doPost('fixtures/release', release));\n }\n\n configuration(ci: FixtureConfiguration): Promise<APIResponse> {\n this.configurationIds.push(ci.id);\n return this.doPost('fixtures/shared', [ci]);\n }\n\n trigger(trigger: FixtureTrigger): Promise<APIResponse> {\n this.triggerIds.push(trigger.id);\n return this.doPost('fixtures/trigger', trigger);\n }\n\n deleteArchivedRelease(id: string): Promise<APIResponse> {\n const releaseId = id.includes('Applications/') ? id : `Applications/${id}`;\n return this.doDelete('fixtures/cis', [\n {\n id: releaseId,\n type: 'xlrelease.Release',\n },\n ]);\n }\n\n deleteRelease(id: string): Promise<APIResponse> {\n const releaseId = id.includes('Applications/') ? id : `Applications/${id}`;\n return this.doDelete(`fixtures/${releaseId}`);\n }\n\n deleteTrigger(id: string): Promise<APIResponse> {\n return this.doDelete(`fixtures/trigger/${id}`);\n }\n\n deleteConfiguration(id: string): Promise<APIResponse> {\n return this.doDelete(`fixtures/shared`, [id]);\n }\n\n cleanAll(): Promise<Awaited<APIResponse>[]> {\n const promises = [];\n for (const releaseId of this.releaseIds.reverse()) {\n promises.push(this.deleteRelease(releaseId));\n }\n for (const triggerId of this.triggerIds) {\n promises.push(this.deleteTrigger(triggerId));\n }\n for (const confId of this.configurationIds) {\n promises.push(this.deleteConfiguration(confId));\n }\n for (const usernames of this.usernames) {\n promises.push(this.deleteUser(usernames));\n }\n for (const userProfiles of this.userProfiles) {\n promises.push(this.deleteUserProfile(userProfiles));\n }\n this.releaseIds = [];\n this.triggerIds = [];\n this.configurationIds = [];\n this.usernames = [];\n this.userProfiles = [];\n return Promise.all(promises);\n }\n\n async waitForReleaseStarted(releaseTitle: string): Promise<void> {\n await expect(async () => {\n const resp = await this.doPost('releases/search', {\n inProgress: true,\n paused: true,\n failing: true,\n failed: true,\n title: releaseTitle,\n });\n const page = await resp.json();\n await expect(page.cis.length).toBeGreaterThan(0);\n }).toPass();\n }\n\n async waitForFirstPoll(triggerId: string): Promise<void> {\n await expect(async () => {\n const resp = await this.doGet(`api/v1/triggers/${triggerId}`);\n const trigger = await resp.json();\n await expect(isNil(trigger.triggerState)).toBe(false);\n }).toPass();\n }\n\n exec(path: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n execFile(path, (error) => {\n if (error === null) {\n return resolve();\n } else {\n return reject();\n }\n });\n });\n }\n\n getFakeApiUrl(): string {\n return this.getEnvVariable('ENV_FAKE_API') || 'http://localhost:5517';\n }\n\n getEnvVariable(name: string): string | undefined {\n return process.env[name];\n }\n\n async setFeatures(features: Array<FixtureFeature>): Promise<APIResponse> {\n return this.doPut('settings/features', features);\n }\n\n async enableTaskDrawer(enabled: boolean): Promise<APIResponse> {\n return this.setFeatures([\n {\n id: 'Configuration/features/xlrelease.TaskDrawer',\n type: 'xlrelease.TaskDrawer',\n category: 'Stable',\n enabled: enabled,\n },\n ]);\n }\n\n async addUser(username: string, password: string): Promise<APIResponse> {\n this.usernames.push(username);\n return await this.doPost('fixtures/user', { username, password });\n }\n\n async addUserProfile(username: string, profile: any): Promise<APIResponse> {\n if (!profile) {\n profile = {};\n }\n profile.id = username;\n profile.type = 'xlrelease.UserProfile';\n profile.canonicalId = username.toLowerCase();\n this.userProfiles.push(profile.canonicalId);\n return await this.doPost('fixtures/userProfile', profile);\n }\n\n async deleteUser(username: string): Promise<APIResponse> {\n return await this.request.delete(`fixtures/user/${username}`);\n }\n\n async deleteUserProfile(username: string): Promise<APIResponse> {\n return await this.request.delete(`fixtures/userProfile/${username}`);\n }\n\n private doPost(url: string, body: unknown): Promise<APIResponse> {\n return this.request.post(url, { data: body, headers: adminHeaders });\n }\n\n private doPut(url: string, body: unknown): Promise<APIResponse> {\n return this.request.put(url, { data: body, headers: adminHeaders });\n }\n\n private doGet(url: string): Promise<APIResponse> {\n return this.request.get(url, { headers: adminHeaders });\n }\n\n private doDelete(url: string, body?: unknown): Promise<APIResponse> {\n return this.request.delete(url, { data: body, headers: adminHeaders });\n }\n\n private initDefaults(ci: FixtureRelease): void {\n initReleaseDefaults(ci as Release);\n }\n}\n","import isUndefined from 'lodash/isUndefined';\nimport each from 'lodash/each';\nimport forEach from 'lodash/forEach';\nimport defaults from 'lodash/defaults';\nimport toPairs from 'lodash/toPairs';\n\nimport { Container, Dashboard, Phase, Release, Task, Tile, Variable, VariableValueProvider } from '../types';\n\nexport const initReleaseDefaults = (function () {\n const RELEASE_TYPE = 'xlrelease.Release';\n const PHASE_TYPE = 'xlrelease.Phase';\n const TEAM_TYPE = 'xlrelease.Team';\n const TASK_TYPE = 'xlrelease.Task';\n const COMMENT_TYPE = 'xlrelease.Comment';\n const CONDITION_TYPE = 'xlrelease.GateCondition';\n const DEPENDENCY_TYPE = 'xlrelease.Dependency';\n const LINK_TYPE = 'xlrelease.Link';\n const ATTACHMENT_TYPE = 'xlrelease.Attachment';\n const DASHBOARD_TYPE = 'xlrelease.Dashboard';\n const _TRIGGER_TYPE = 'xlrelease.ReleaseTrigger';\n const JIRA_TYPE = 'jira.CreateIssue';\n const DEFAULT_TASK_OWNER = 'Itchy';\n\n const processTasks = (task: Task, container: Container, index: number): void => {\n if (isUndefined(task.type)) task.type = TASK_TYPE;\n task.id = task.id || `${container.id}/Task${index}`;\n if (isUndefined(task.owner) && task.type !== JIRA_TYPE) task.owner = DEFAULT_TASK_OWNER;\n if (task.owner === null) delete task.owner;\n\n each(task.conditions, function (condition, idx) {\n condition.type = CONDITION_TYPE;\n condition.id = `${task.id}/GateCondition${idx}`;\n });\n each(task.dependencies, function (dependency, idx) {\n dependency.type = DEPENDENCY_TYPE;\n dependency.id = `${task.id}/Dependency${idx}`;\n });\n each(task.links, function (link, idx) {\n link.type = LINK_TYPE;\n link.id = `${task.id}/Link${idx}`;\n });\n each(task.comments, function (comment, idx) {\n comment.type = COMMENT_TYPE;\n comment.id = `${task.id}/Comment${idx}`;\n });\n each(task.tasks, function (subTask, idx) {\n processTasks(subTask, task, idx);\n });\n each(task.templateVariables, function (variable, idx) {\n defaults(variable, getVariableEntity(variable.value, variable.key, task.id, idx));\n });\n each(task.attachments, function (attachment, idx) {\n attachment.type = ATTACHMENT_TYPE;\n attachment.id = `${task.id}/Attachment${idx}`;\n });\n if (task.pythonScript) {\n const pythonScript = task.pythonScript;\n pythonScript.id = `${task.id}/PythonScript`;\n pythonScript.customScriptTask = task.id;\n }\n };\n\n const processPhases = (phase: Phase, release: Release, index: number): void => {\n phase.type = PHASE_TYPE;\n phase.id = `${release.id}/Phase${index}`;\n\n forEach(phase.tasks, (task, idx): void => {\n processTasks(task, phase, idx);\n });\n };\n\n const getVariableEntity = (\n value: string,\n key: string,\n containerId: string,\n index: number,\n password?: boolean,\n // eslint-disable-next-line max-params\n ): Variable => {\n const keyNoSyntax = key.replace('${', '').replace('}', '');\n return {\n id: `${containerId}/Variable${index}`,\n key: keyNoSyntax,\n requiresValue: true,\n showOnReleaseStart: true,\n type: password ? 'xlrelease.PasswordStringVariable' : 'xlrelease.StringVariable',\n value: value,\n };\n };\n\n const getValueProviderConfigurationEntity = function (containerId: string): VariableValueProvider {\n return {\n id: `${containerId}/valueProvider`,\n variable: containerId,\n };\n };\n\n const getDashboardExtension = (dashboard: Dashboard, releaseId: string): Dashboard => {\n const dashboardExtension: Dashboard = {\n id: `${releaseId}/summary`,\n type: DASHBOARD_TYPE,\n tiles: [],\n };\n if (dashboard.tiles) {\n forEach(dashboard.tiles, function (tile, index) {\n dashboardExtension.tiles.push(getTileEntity(tile, `${releaseId}/summary`, index));\n });\n }\n return dashboardExtension;\n };\n\n function getTileEntity(tile: Tile, containerId: string, index: number): Tile {\n tile.id = tile.id || `${containerId}/Tile${index}`;\n return tile;\n }\n\n return function (release: Release) {\n release.type = RELEASE_TYPE;\n if (release.id.indexOf('Applications/') === -1) {\n release.id = `Applications/${release.id}`;\n }\n if (release.startDate) {\n release.queryableStartDate = release.startDate;\n } else if (release.scheduledStartDate) {\n release.queryableStartDate = release.scheduledStartDate;\n }\n if (release.endDate) {\n release.queryableEndDate = release.endDate;\n } else if (release.dueDate) {\n release.queryableEndDate = release.dueDate;\n }\n if (isUndefined(release.owner)) release.owner = 'Itchy'; // default release manager\n\n forEach(release.phases, function (phase, index) {\n processPhases(phase, release, index);\n });\n forEach(release.teams, function (team, index) {\n team.type = TEAM_TYPE;\n team.id = `${release.id}/Team${index}`;\n });\n forEach(release.attachments, function (attachment, index) {\n attachment.type = ATTACHMENT_TYPE;\n attachment.id = `${release.id}/Attachment${index}`;\n });\n forEach(release.variables, function (variable: Variable, index) {\n defaults(variable, getVariableEntity(variable.value, variable.key, release.id, index));\n if (variable.valueProvider) {\n defaults(variable.valueProvider, getValueProviderConfigurationEntity(variable.id));\n }\n });\n forEach(toPairs(release.variableValues), function (keyValue, index) {\n if (!release.variables) release.variables = [];\n release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1000 + index));\n release.variableValues = undefined;\n });\n forEach(toPairs(release.passwordVariableValues), function (keyValue, index) {\n if (!release.variables) release.variables = [];\n release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1500 + index, true));\n release.passwordVariableValues = undefined;\n });\n\n if (release.summary) {\n release.extensions = [getDashboardExtension(release.summary, release.id)];\n release.summary = undefined;\n }\n };\n})();\n","import { expect } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class LoginPage extends WithPage {\n /**\n * Login with username and password\n * @param userName\n * @param password\n */\n async login(userName: string, password: string): Promise<void> {\n await this.page.goto('/#/login');\n await this.page.waitForTimeout(1000);\n await expect(this.page).toHaveTitle('Digital.ai Release');\n await this.page.locator('#inputLogin').fill(userName);\n await this.page.locator('#inputPassword').fill(password);\n await this.page.locator(\"button[type='submit']\").click();\n }\n\n /**\n * Logout as authenticated user\n */\n async logout(): Promise<void> {\n await this.page.locator('button.dot-avatar').click();\n await this.page.getByText('Log out').click();\n }\n\n /**\n * Expect login to be restricted for a user\n */\n async expectLoginDisallowed(): Promise<void> {\n const val = await this.page.textContent('.error-content span[ng-show=\"loginInfo.failedStatus == 403\"]');\n expect(val).toContain(\"You do not have 'login' permission.\");\n }\n\n /**\n * Expect the respective user is logged In\n * @param username\n */\n async expectToBeLogged(username: string): Promise<void> {\n const val = await this.page.locator('top-toolbar .avatar-wrapper span.dot-tooltip').getAttribute('aria-label');\n expect(val).toContain(username);\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 { Page } from '@playwright/test';\nimport { ReleasePage } from './releases/ReleasePage';\nimport { ApplicationsPage } from './ApplicationsPage';\nimport { PersonalAccessTokenPage } from './PersonalAccessTokenPage';\nimport { UsersPage } from './users/usersPage';\nimport { SettingsMenu } from './settingsMenu';\nimport { TaskDetails } from './taskDetails';\n\nexport class Navigation {\n private readonly page: Page;\n releasePage: ReleasePage;\n settingsMenu: SettingsMenu;\n usersPage: UsersPage;\n applicationPage: ApplicationsPage;\n taskDetailsPage: TaskDetails;\n\n constructor(page: Page) {\n this.page = page;\n this.releasePage = new ReleasePage(page);\n this.settingsMenu = new SettingsMenu(page);\n this.usersPage = new UsersPage(page);\n this.applicationPage = new ApplicationsPage(page);\n this.taskDetailsPage = new TaskDetails(page);\n }\n\n async openTemplate(id: string): Promise<ReleasePage> {\n return this.openReleaseOrTemplate(id, false);\n }\n\n async openRelease(id: string): Promise<ReleasePage> {\n return this.openReleaseOrTemplate(id, true);\n }\n\n async openApplicationsPage(): Promise<ApplicationsPage> {\n return new ApplicationsPage(this.page).goToApplicationsPage();\n }\n\n async openPersonalAccessTokenPage(): Promise<PersonalAccessTokenPage> {\n return new PersonalAccessTokenPage(this.page).openPersonalAccessTokenPage();\n }\n\n async gotoFolderPage(): Promise<void> {\n await this.page.getByText('Folders').click();\n }\n\n async gotoTaskPage(): Promise<void> {\n await this.page.getByTestId('sideNav-item-3').getByText('Tasks').click();\n }\n\n async gotoReleasePage(): Promise<void> {\n await this.page.getByText('Releases').click();\n }\n\n async gotoWorkflowCatalogPage(): Promise<void> {\n await this.page.getByText('Workflow catalog').click();\n }\n\n async gotoWorkflowsPage(): Promise<void> {\n await this.page.getByTestId('sideNav-item-6').getByText('Workflows').click();\n }\n\n async gotoGroupsPage(): Promise<void> {\n await this.page.getByText('Groups').click();\n }\n\n async gotoReleaseCalenderPage(): Promise<void> {\n await this.page.getByText('Release calendar').click();\n }\n\n async gotoDeliveriesPage(): Promise<void> {\n await this.page.getByText('Deliveries').click();\n }\n\n async gotoTriggersPage(): Promise<void> {\n await this.page.getByText('Triggers').click();\n }\n\n async gotoDigitalAnalyticsPage(): Promise<void> {\n await this.page.getByText('Digital.ai Analytics').click();\n }\n\n async gotoReportsPage(): Promise<void> {\n await this.page.getByText('Reports').click();\n }\n\n async gotoTemplatesPage(): Promise<void> {\n await this.page.getByText('Templates').click();\n }\n\n async gotoEnvironmentsPage(): Promise<void> {\n await this.page.getByText('Environments').click();\n }\n\n async gotoEnvironmentsCalenderPage(): Promise<void> {\n await this.page.getByText('Environments calendar').click();\n }\n\n async gotoGobalVariablesPage(): Promise<void> {\n await this.page.getByText('Global variables').click();\n }\n async gotoConnectionsPage(): Promise<void> {\n await this.page.getByText('Connections').click();\n }\n\n private async openReleaseOrTemplate(id: string, release: boolean): Promise<ReleasePage> {\n const url = release ? 'releases' : 'templates';\n await this.page.goto(`./#/${url}/${id}`);\n await this.page.waitForSelector('#release');\n return new ReleasePage(this.page);\n }\n}\n","import { Page, Locator, expect } from '@playwright/test';\nimport { TriggersPage } from '../TriggersPage';\nimport { WithPage } from '../WithPage';\nimport { ReleaseVariablesPage } from './ReleaseVariablesPage';\nimport { TaskDrawer } from '../task-drawer/taskDrawer';\n\nexport class ReleasePage extends WithPage {\n taskDrawer: TaskDrawer;\n\n constructor(page: Page) {\n super(page);\n this.taskDrawer = new TaskDrawer(page);\n }\n\n async openTriggers(): Promise<TriggersPage> {\n await this.openSubPage('Triggers');\n return new TriggersPage(this.page);\n }\n\n async abort(comment = 'Abort for testing'): Promise<void> {\n await this.page.locator('action-toolbar button', { hasText: 'Abort' }).click();\n await this.page.locator('.modal textarea').fill(comment);\n await this.page.locator('.modal .continue').click();\n }\n\n getPhase(phaseName: string): Phase {\n return new Phase(this.page, phaseName);\n }\n\n async start(): Promise<void> {\n await this.page.getByTestId('start-btn').click();\n await this.page.getByRole('button', { name: 'Start' }).click();\n }\n\n async waitForTaskCompleted(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.completed').getByText(taskTitle, { exact: true })).toBeVisible();\n }\n async waitForTaskFailed(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.failed').getByText(taskTitle, { exact: true })).toBeVisible();\n }\n async waitForTaskSkipped(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.skipped').getByText(taskTitle, { exact: true })).toBeVisible();\n }\n async waitForTaskAborted(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.aborted').getByText(taskTitle, { exact: true })).toBeVisible();\n }\n async waitForStatusLine(statusLine: string): Promise<void> {\n await expect(this.page.locator('.task .status-line').getByText(statusLine, { exact: true })).toBeVisible();\n }\n\n async waitForTaskStarted(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.in_progress').getByTitle(taskTitle, { exact: true })).toBeVisible();\n }\n\n async openTaskDrawer(taskName: string): Promise<TaskDrawer> {\n await this.page.locator('.task-header').getByText(taskName).click();\n return this.taskDrawer;\n }\n\n async openVariables(): Promise<ReleaseVariablesPage> {\n await this.openReleaseMenu('Variables');\n return new ReleaseVariablesPage(this.page);\n }\n\n async openReleaseMenu(menuItem: string): Promise<void> {\n await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, { exact: true }).click();\n }\n\n private async openSubPage(subpage: string): Promise<void> {\n await this.page.locator('ul.side-nav li', { hasText: subpage }).click();\n }\n\n async openTask(taskName: string): Promise<void> {\n await this.page.getByTitle(taskName, { exact: true }).click();\n }\n\n async collapseAllTaskView(): Promise<void> {\n const icCollapseTreeview1 = this.page.locator('div.pull-left.expander.ng-scope i.xl-icon.arrow-down-icon');\n for (const element of await icCollapseTreeview1.all()) {\n const blnVal = await element.isVisible();\n if (blnVal) {\n await element.click();\n await this.collapseAllTaskView();\n }\n }\n }\n\n async expandAllTaskView(): Promise<void> {\n const icExpandTreeview1 = this.page.locator('div.pull-left.expander.ng-scope i.xl-icon.arrow-right-icon');\n for (const element of await icExpandTreeview1.all()) {\n const blnVal = await element.isVisible();\n if (blnVal) {\n await element.click();\n await this.expandAllTaskView();\n }\n }\n }\n}\n\nclass Phase extends WithPage {\n private readonly phaseLocator: Locator;\n\n constructor(page: Page, phaseName: string) {\n super(page);\n this.phaseLocator = page.locator('.phase', { hasText: phaseName });\n }\n\n async addTask(taskName: string, taskGroup: string, taskType: string): Promise<void> {\n await this.phaseLocator.getByText('Add task').click();\n await this.phaseLocator.locator('.quick-title').fill(taskName);\n await this.phaseLocator.locator('.xlr-ctx-menu-toggle').click();\n await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, { exact: true }).scrollIntoViewIfNeeded();\n await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, { exact: true }).hover();\n await this.page.locator(`.xlr-ctx-menu.active`).getByTitle(taskType, { exact: true }).click();\n await this.phaseLocator.locator('.quick-controls-container a').getByText('Add', { exact: true }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { ReleasesListPage } from './releases/ReleasesListPage';\nimport { WithPage } from './WithPage';\n\nexport class TriggersPage extends WithPage {\n async openRelatedReleasesOf(title: string): Promise<ReleasesListPage> {\n await this.openContextMenu(title);\n await this.page.locator('.popover-content xlr-context-menu a', { hasText: 'View releases' }).click();\n return new ReleasesListPage(this.page);\n }\n\n private async openContextMenu(title: string): Promise<void> {\n await expect(async () => {\n await this.page.locator('.trigger-row-content', { hasText: title }).locator('.context-menu-button').click();\n await expect(this.page.locator('.popover-content')).toBeVisible();\n }).toPass();\n }\n}\n","import { expect } from '@playwright/test';\nimport { ReleasePage } from './ReleasePage';\nimport { WithPage } from '../WithPage';\n\nexport class ReleasesListPage extends WithPage {\n async expectNumberOfReleases(releaseTitle: string, amount: number): Promise<void> {\n if (amount === 1) {\n await expect(this.page.locator('.release').getByText(releaseTitle)).toBeVisible();\n } else {\n await expect(this.page.locator('.release').getByText(releaseTitle).count()).toBe(amount);\n }\n }\n\n async openReleaseByName(releaseTitle: string): Promise<ReleasePage> {\n await this.page.locator('.release-line .row-wrapper .release-title-wrapper a', { hasText: releaseTitle }).click();\n return new ReleasePage(this.page);\n }\n}\n","import { expect, Locator } from '@playwright/test';\nimport { WithPage } from '../WithPage';\nimport { waitForOneOf } from '../helper';\n\ntype ExpectWithLocator = (l: Locator) => void;\n\nexport class ReleaseVariablesPage extends WithPage {\n async openVariable(variableKey: string): Promise<ReleaseVariableModal> {\n await this.page.locator(`.variables-list .variable`).getByText(variableKey).click();\n return new ReleaseVariableModal(this.page);\n }\n}\n\nclass ReleaseVariableModal extends WithPage {\n private async expectValue(locators: Locator[], expectFn: ExpectWithLocator[]): Promise<void> {\n const [index, locator] = await waitForOneOf(locators);\n await expectFn[index](locator);\n }\n\n async expectValueToBe(value: string): Promise<void> {\n await this.expectValue(\n [\n this.page.locator('#modal .variable-value input'),\n this.page.locator('#modal .variable-value .field-readonly'),\n this.page.locator('#modal .variable-value .xl-map-string-string'),\n ],\n [(l) => expect(l).toHaveValue(value), (l) => expect(l).toHaveText(value), (l) => expect(l).toHaveText(value)],\n );\n }\n\n async expectValueToContain(value: string): Promise<void> {\n await this.expectValue(\n [\n this.page.locator('#modal .variable-value input'),\n this.page.locator('#modal .variable-value .field-readonly'),\n this.page.locator('#modal .variable-value .xl-map-string-string'),\n ],\n [\n (l) => expect(l.inputValue()).toContain(value),\n (l) => expect(l).toContainText(value),\n (l) => expect(l).toContainText(value),\n ],\n );\n }\n\n async close(): Promise<void> {\n await this.page.locator('#modal .modal-header button.close').click();\n }\n}\n","import { Locator } from '@playwright/test';\n\ntype WaitForRes = [locatorIndex: number, locator: Locator];\nexport async function waitForOneOf(locators: Locator[]): Promise<WaitForRes> {\n const res = await Promise.all([\n ...locators.map(async (locator, index): Promise<WaitForRes> => {\n let timedOut = false;\n await locator.waitFor({ state: 'visible', timeout: 2000 }).catch(() => (timedOut = true));\n return [timedOut ? -1 : index, locator];\n }),\n ]);\n const resolvedLocator = res.find((r) => r[0] !== -1);\n if (!resolvedLocator) {\n console.warn('waitForOneOf', res);\n throw new Error('no locator visible before timeout');\n }\n return resolvedLocator;\n}\n","import { ConfigRail } from './taskConfig';\nimport { WithPage } from '../WithPage';\nimport { Locator, Page } from '@playwright/test';\nimport { ConditionRail } from './taskCondition';\n\ntype Rail = 'Overview' | 'Activity' | 'Config' | 'Scheduling' | 'Conditions' | 'Attributes' | 'Attach' | 'Tags';\n\nexport class TaskDrawer extends WithPage {\n config: ConfigRail;\n condition: ConditionRail;\n taskDrawerLocator: Locator;\n retryButton: Locator;\n cancelButton: Locator;\n commentBox: Locator;\n confirm: Locator;\n skipMenu: Locator;\n\n constructor(page: Page) {\n super(page);\n this.taskDrawerLocator = this.page.locator('task-drawer .dot-drawer');\n this.retryButton = this.page.getByRole('button', { name: 'Retry' });\n this.cancelButton = this.page.getByTestId('task-action-cancel');\n this.commentBox = this.page.getByTestId('task-action-comment');\n this.confirm = this.page.getByTestId('task-action-confirm');\n this.config = new ConfigRail(page);\n this.condition = new ConditionRail(page);\n this.skipMenu = this.page.getByRole('menuitem', { name: 'Skip' });\n }\n\n async openOverviewRail(): Promise<void> {\n await this.openRail('Overview');\n }\n\n async openActivityRail(): Promise<void> {\n await this.openRail('Activity');\n }\n\n async openSchedulingRail(): Promise<void> {\n await this.openRail('Scheduling');\n }\n\n async openConditionRail(): Promise<void> {\n await this.openRail('Conditions');\n }\n\n async openAttributesRail(): Promise<void> {\n await this.openRail('Attributes');\n }\n\n async openAttachRail(): Promise<void> {\n await this.openRail('Attach');\n }\n\n async openTagsRail(): Promise<void> {\n await this.openRail('Tags');\n }\n\n async openRail(rail: Rail): Promise<void> {\n await this.taskDrawerLocator.locator('.task-navigation-rail').getByText(rail).click();\n }\n\n async close(): Promise<void> {\n await this.taskDrawerLocator.locator('.task-drawer-header').getByTestId('close-btn').click();\n }\n\n async retryTask(comment: string): Promise<void> {\n await this.retryButton.click();\n await this.commentBox.fill(comment);\n await this.confirm.click();\n }\n\n async skipTask(comment: string): Promise<void> {\n await this.page.getByRole('button', { name: 'arrow-down icon', exact: true }).click();\n await this.skipMenu.click();\n await this.commentBox.fill(comment);\n await this.confirm.click();\n }\n}\n","import { Locator, Page, expect } from '@playwright/test';\nimport { WithPage } from '../WithPage';\n\nexport class ConfigRail extends WithPage {\n railLocator: Locator;\n\n constructor(page: Page) {\n super(page);\n this.railLocator = this.page.locator('task-drawer .dot-drawer .task-config');\n }\n\n async openInputProperties(): Promise<void> {\n await this.railLocator.locator('.task-config-header').getByText('Input properties').click();\n }\n\n async openOutputProperties(): Promise<void> {\n await this.railLocator.locator('.task-config-header').getByText('Output properties').click();\n }\n\n async getValueFromCi(propertyName: string): Promise<string> {\n return this.railLocator.locator(`input[id=\"${propertyName}\"]`).inputValue();\n }\n\n async getAllOptionsFromCi(propertyName: string): Promise<string[]> {\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).click();\n return this.railLocator.locator(`.dot-popper ul li`).allInnerTexts();\n }\n\n async setValueFromCi(propertyName: string, value: string): Promise<void> {\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).clear();\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).click();\n await this.railLocator.locator(`.dot-popper ul li`, { hasText: value }).click();\n }\n\n async getValueFromString(propertyName: string): Promise<string | null> {\n await this.railLocator.locator(`.input-scalar-fake-input[id=\"${propertyName}\"]`).focus();\n return this.railLocator.locator(`input[id=\"${propertyName}\"]`).inputValue();\n }\n\n async setValueFromString(propertyName: string, value: string): Promise<void> {\n await this.railLocator.locator(`.input-scalar-fake-input[id=\"${propertyName}\"]`).focus();\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).fill(value);\n }\n\n async setValueFromLargeString(propertyName: string, value: string): Promise<void> {\n await this.railLocator.locator(`.input-scalar-fake-input[id=\"${propertyName}\"]`).focus();\n await this.railLocator.locator(`textarea[id=\"${propertyName}\"]`).fill(value);\n }\n\n async setValueFromPassword(propertyName: string, value: string): Promise<void> {\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).fill(value);\n }\n\n async setAndCreateVariable(propertyName: string, variableName: string): Promise<void> {\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).clear();\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).click();\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).fill(variableName);\n await this.railLocator.locator(`.dot-popper button`, { hasText: variableName }).click();\n }\n\n async setVariable(propertyName: string, variableName: string): Promise<void> {\n return this.setValueFromCi(propertyName, variableName);\n }\n\n async expectValueFromString(propertyName: string, propertyValue: string): Promise<void> {\n return await expect(this.railLocator.locator(`.input-scalar-fake-input[id=\"${propertyName}\"]`)).toHaveText(\n propertyValue,\n );\n }\n}\n","import { Locator, Page, expect } from '@playwright/test';\nimport { WithPage } from '../WithPage';\n\nexport class ConditionRail extends WithPage {\n railLocator: Locator;\n preconditionToggle: Locator;\n textEditor: Locator;\n saveButton: Locator;\n\n constructor(page: Page) {\n super(page);\n this.railLocator = this.page.locator('task-drawer .dot-drawer .task-conditions');\n this.preconditionToggle = page.getByLabel('Enable precondition');\n this.textEditor = page.getByRole('textbox');\n this.saveButton = page.getByTestId('save-btn');\n }\n\n async enablePrecondition(): Promise<void> {\n expect(await this.preconditionToggle.isChecked()).toBe(false);\n await this.preconditionToggle.check();\n }\n\n async disablePrecondition(): Promise<void> {\n expect(await this.preconditionToggle.isChecked()).toBe(true);\n await this.preconditionToggle.uncheck();\n }\n\n async setPrecondition(script: string): Promise<void> {\n await this.enablePrecondition();\n await this.textEditor.fill(script);\n await this.saveButton.dblclick();\n await this.page.waitForTimeout(1000);\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class ApplicationsPage extends WithPage {\n async goToApplicationsPage(): Promise<this> {\n await this.page.goto('./#/applications');\n await expect(this.page).toHaveTitle('Applications - Digital.ai Release');\n return this;\n }\n\n async addNewApplication(applicationName: string): Promise<this> {\n await this.page.locator(`//button[normalize-space()='New application']`).click();\n await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);\n await this.page.locator(`//button[normalize-space()='Save']`).click();\n return this;\n }\n\n async verifyApplicationisCreated(applicationName: string): Promise<this> {\n await this.page.waitForSelector(`div[title='${applicationName}'] strong`);\n return this;\n }\n\n async createApplicationAndLinkEnvironment(environmentName: string, applicationName: string): Promise<this> {\n await this.page.locator(`//button[normalize-space()='New application']`).click();\n await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);\n await this.page.locator(\"input[placeholder='Filter environment name...']\").type(environmentName);\n await this.page.locator(`div[title='${environmentName}']`).click();\n await this.page.locator(`//button[normalize-space()='Save']`).click();\n await this.page.locator('i.xl-icon.close-icon').click();\n return this;\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class PersonalAccessTokenPage extends WithPage {\n async openPersonalAccessTokenPage(): Promise<this> {\n // await this.page.locator(\"button.dot-avatar\").click()\n // await this.page.locator(\"//div[normalize-space()='Access tokens']\").click()\n await this.page.goto('./#/personal-access-token');\n await expect(this.page).toHaveTitle('Access tokens / Personal settings - Digital.ai Release');\n return this;\n }\n\n async addNewToken(tokenName: string): Promise<this> {\n //await expect(this.page).toHaveTitle('Access tokens / Personal settings - Digital.ai Release')\n\n await this.page.locator('#tokenText').fill(tokenName);\n await this.page.locator(\"button[type='submit']\").click();\n return this;\n }\n}\n","import { Locator, Page, expect } from '@playwright/test';\nimport { WithPage } from '../WithPage';\nimport { UserModal } from './userModal';\n\nexport class UsersPage extends WithPage {\n page: Page;\n newUserButton: Locator;\n modal: UserModal;\n constructor(page: Page) {\n super(page);\n this.page = page;\n this.newUserButton = this.page.getByTestId('new-user-btn');\n this.modal = new UserModal(page);\n }\n\n async openUsersPage(): Promise<void> {\n this.page.goto('/#/users', { timeout: 1000 });\n }\n\n async toggleLoginPermission(username: string): Promise<void> {\n await this.page\n .getByRole('row', { name: '' + username + '' })\n .getByRole('checkbox')\n .check();\n //await this.page.locator(`tr:contains('${username}') .login-permission input`).click();\n }\n\n async addUser(): Promise<void> {\n await this.newUserButton.click();\n }\n\n async createUser(username: string, password: string): Promise<void> {\n await this.modal.setUserName(username);\n await this.modal.setFullName(username);\n await this.modal.setEmail('testuser@company.com');\n await this.modal.setPassword(password);\n await this.modal.setConfirmPassword(password);\n await this.modal.save();\n }\n\n async expectToHaveLoginPermission(username: string): Promise<void> {\n return await expect(this.page.getByRole('row', { name: '' + username + '' }).getByRole('checkbox')).toBeChecked();\n }\n\n async deleteUser(username: string): Promise<void> {\n await this.page\n .getByRole('row', { name: '' + username + '' })\n .locator('i')\n .nth(1)\n .click();\n await this.modal.delete();\n }\n}\n","import { Locator, Page } from '@playwright/test';\nimport { WithPage } from '../WithPage';\n\nexport class UserModal extends WithPage {\n userName: Locator;\n name: Locator;\n email: Locator;\n password: Locator;\n cnfPassword: Locator;\n saveButton: Locator;\n cancelButton: Locator;\n deleteButton: Locator;\n constructor(page: Page) {\n super(page);\n this.userName = page.locator('#username');\n this.name = page.locator('#full-name');\n this.email = page.locator('#email');\n this.password = page.locator('[data-test=\"password-input\"]');\n this.cnfPassword = page.locator('#passwordConfirmation');\n this.saveButton = page.getByRole('button', { name: 'Save' });\n this.cancelButton = page.getByRole('button', { name: 'Cancel' });\n this.deleteButton = page.getByRole('button', { name: 'Delete' });\n }\n\n async setUserName(username: string): Promise<void> {\n return await this.userName.fill(username);\n }\n\n async setFullName(fullName: string): Promise<void> {\n return await this.name.fill(fullName);\n }\n\n async setEmail(email: string): Promise<void> {\n return await this.email.fill(email);\n }\n\n async setPassword(password: string): Promise<void> {\n return await this.password.fill(password);\n }\n\n async setConfirmPassword(cnfPassword: string): Promise<void> {\n return await this.cnfPassword.fill(cnfPassword);\n }\n\n async save(): Promise<void> {\n await this.saveButton.click();\n }\n\n async cancel(): Promise<void> {\n await this.cancelButton.click();\n }\n\n async delete(): Promise<void> {\n await this.deleteButton.click();\n }\n}\n","import { Locator, Page } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class SettingsMenu extends WithPage {\n settingsIcon: Locator;\n usersAndPermissionMenu: Locator;\n managePluginMenu: Locator;\n constructor(page: Page) {\n super(page);\n this.settingsIcon = this.page.getByRole('button', { name: 'Settings' });\n this.usersAndPermissionMenu = this.page.getByTestId('undefined-menu').getByText('Users and permissions');\n this.managePluginMenu = this.page.getByText('Manage plugins');\n }\n\n async openUsersAndPermissions(): Promise<void> {\n await this.settingsIcon.click();\n await this.page.getByTestId('undefined-menu').getByText('Users and permissions').click();\n }\n\n async openManagePlugin(): Promise<void> {\n await this.settingsIcon.click();\n await this.managePluginMenu.click();\n }\n}\n","import { Page } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class TaskDetails extends WithPage {\n constructor(page: Page) {\n super(page);\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["apps/release/index.ts","apps/release/fixtures/index.ts","apps/release/fixtures/helper.ts","apps/release/pages/login-page.ts","apps/release/pages/WithPage.ts","apps/release/pages/index.ts","apps/release/pages/releases/ReleasePage.ts","apps/release/pages/TriggersPage.ts","apps/release/pages/releases/ReleasesListPage.ts","apps/release/pages/releases/ReleaseVariablesPage.ts","apps/release/pages/helper/index.ts","apps/release/pages/task-drawer/taskDrawer.ts","apps/release/pages/task-drawer/taskConfig.ts","apps/release/pages/task-drawer/taskCondition.ts","apps/release/pages/ApplicationsPage.ts","apps/release/pages/PersonalAccessTokenPage.ts","apps/release/pages/users/usersPage.ts","apps/release/pages/users/userModal.ts","apps/release/pages/settingsMenu.ts","apps/release/pages/taskDetails.ts","apps/release/pages/ReleaseCalendarPage.ts"],"sourcesContent":["export { test } from './fixtures';\n","import { test as base, expect, Page, APIResponse } from '@playwright/test';\nimport { execFile } from 'child_process';\nimport { APIRequestContext } from 'playwright-core';\nimport isNil from 'lodash/isNil';\nimport { initReleaseDefaults } from './helper';\nimport { LoginPage } from '../pages/login-page';\nimport { Navigation } from '../pages';\nimport * as process from 'process';\nimport { FixtureConfiguration, FixtureFeature, FixtureRelease, FixtureTrigger, Release } from '../types';\n\nconst adminHeaders = {\n Authorization: 'Basic YWRtaW46YWRtaW4=',\n Cookie: 'XSRF-TOKEN=1;',\n 'X-XSRF-TOKEN': '1',\n};\n\ntype ReleaseFixtures = {\n fixtures: Fixtures;\n loginPage: LoginPage;\n navigation: Navigation;\n};\n\nexport const test = base.extend<ReleaseFixtures>({\n fixtures: async ({ request, page }, use) => {\n const fixtures = new Fixtures(request, 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 request: APIRequestContext;\n private readonly page: Page;\n\n private releaseIds: Array<string> = [];\n private triggerIds: Array<string> = [];\n private configurationIds: Array<string> = [];\n private usernames: Array<string> = [];\n private userProfiles: Array<string> = [];\n\n constructor(request: APIRequestContext, page: Page) {\n this.request = request;\n this.page = page;\n }\n\n async release(release: FixtureRelease): Promise<APIResponse> {\n this.initDefaults(release);\n this.releaseIds.push(release.id);\n return this.deleteRelease(release.id)\n .then(() => this.deleteArchivedRelease(release.id))\n .then(() => this.doPost('fixtures/release', release));\n }\n\n configuration(ci: FixtureConfiguration): Promise<APIResponse> {\n this.configurationIds.push(ci.id);\n return this.doPost('fixtures/shared', [ci]);\n }\n\n trigger(trigger: FixtureTrigger): Promise<APIResponse> {\n this.triggerIds.push(trigger.id);\n return this.doPost('fixtures/trigger', trigger);\n }\n\n deleteArchivedRelease(id: string): Promise<APIResponse> {\n const releaseId = id.includes('Applications/') ? id : `Applications/${id}`;\n return this.doDelete('fixtures/cis', [\n {\n id: releaseId,\n type: 'xlrelease.Release',\n },\n ]);\n }\n\n deleteRelease(id: string): Promise<APIResponse> {\n const releaseId = id.includes('Applications/') ? id : `Applications/${id}`;\n return this.doDelete(`fixtures/${releaseId}`);\n }\n\n deleteTrigger(id: string): Promise<APIResponse> {\n return this.doDelete(`fixtures/trigger/${id}`);\n }\n\n deleteConfiguration(id: string): Promise<APIResponse> {\n return this.doDelete(`fixtures/shared`, [id]);\n }\n\n cleanAll(): Promise<Awaited<APIResponse>[]> {\n const promises = [];\n for (const releaseId of this.releaseIds.reverse()) {\n promises.push(this.deleteRelease(releaseId));\n }\n for (const triggerId of this.triggerIds) {\n promises.push(this.deleteTrigger(triggerId));\n }\n for (const confId of this.configurationIds) {\n promises.push(this.deleteConfiguration(confId));\n }\n for (const usernames of this.usernames) {\n promises.push(this.deleteUser(usernames));\n }\n for (const userProfiles of this.userProfiles) {\n promises.push(this.deleteUserProfile(userProfiles));\n }\n this.releaseIds = [];\n this.triggerIds = [];\n this.configurationIds = [];\n this.usernames = [];\n this.userProfiles = [];\n return Promise.all(promises);\n }\n\n async waitForReleaseStarted(releaseTitle: string): Promise<void> {\n await expect(async () => {\n const resp = await this.doPost('releases/search', {\n inProgress: true,\n paused: true,\n failing: true,\n failed: true,\n title: releaseTitle,\n });\n const page = await resp.json();\n await expect(page.cis.length).toBeGreaterThan(0);\n }).toPass();\n }\n\n async waitForFirstPoll(triggerId: string): Promise<void> {\n await expect(async () => {\n const resp = await this.doGet(`api/v1/triggers/${triggerId}`);\n const trigger = await resp.json();\n await expect(isNil(trigger.triggerState)).toBe(false);\n }).toPass();\n }\n\n exec(path: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n execFile(path, (error) => {\n if (error === null) {\n return resolve();\n } else {\n return reject();\n }\n });\n });\n }\n\n getFakeApiUrl(): string {\n return this.getEnvVariable('ENV_FAKE_API') || 'http://localhost:5517';\n }\n\n getEnvVariable(name: string): string | undefined {\n return process.env[name];\n }\n\n async setFeatures(features: Array<FixtureFeature>): Promise<APIResponse> {\n return this.doPut('settings/features', features);\n }\n\n async enableTaskDrawer(enabled: boolean): Promise<APIResponse> {\n return this.setFeatures([\n {\n id: 'Configuration/features/xlrelease.TaskDrawer',\n type: 'xlrelease.TaskDrawer',\n category: 'Stable',\n enabled: enabled,\n },\n ]);\n }\n\n async addUser(username: string, password: string): Promise<APIResponse> {\n this.usernames.push(username);\n return await this.doPost('fixtures/user', { username, password });\n }\n\n async addUserProfile(username: string, profile: any): Promise<APIResponse> {\n if (!profile) {\n profile = {};\n }\n profile.id = username;\n profile.type = 'xlrelease.UserProfile';\n profile.canonicalId = username.toLowerCase();\n this.userProfiles.push(profile.canonicalId);\n return await this.doPost('fixtures/userProfile', profile);\n }\n\n async deleteUser(username: string): Promise<APIResponse> {\n return await this.request.delete(`fixtures/user/${username}`);\n }\n\n async deleteUserProfile(username: string): Promise<APIResponse> {\n return await this.request.delete(`fixtures/userProfile/${username}`);\n }\n\n private doPost(url: string, body: unknown): Promise<APIResponse> {\n return this.request.post(url, { data: body, headers: adminHeaders });\n }\n\n private doPut(url: string, body: unknown): Promise<APIResponse> {\n return this.request.put(url, { data: body, headers: adminHeaders });\n }\n\n private doGet(url: string): Promise<APIResponse> {\n return this.request.get(url, { headers: adminHeaders });\n }\n\n private doDelete(url: string, body?: unknown): Promise<APIResponse> {\n return this.request.delete(url, { data: body, headers: adminHeaders });\n }\n\n private initDefaults(ci: FixtureRelease): void {\n initReleaseDefaults(ci as Release);\n }\n}\n","import isUndefined from 'lodash/isUndefined';\nimport each from 'lodash/each';\nimport forEach from 'lodash/forEach';\nimport defaults from 'lodash/defaults';\nimport toPairs from 'lodash/toPairs';\n\nimport { Container, Dashboard, Phase, Release, Task, Tile, Variable, VariableValueProvider } from '../types';\n\nexport const initReleaseDefaults = (function () {\n const RELEASE_TYPE = 'xlrelease.Release';\n const PHASE_TYPE = 'xlrelease.Phase';\n const TEAM_TYPE = 'xlrelease.Team';\n const TASK_TYPE = 'xlrelease.Task';\n const COMMENT_TYPE = 'xlrelease.Comment';\n const CONDITION_TYPE = 'xlrelease.GateCondition';\n const DEPENDENCY_TYPE = 'xlrelease.Dependency';\n const LINK_TYPE = 'xlrelease.Link';\n const ATTACHMENT_TYPE = 'xlrelease.Attachment';\n const DASHBOARD_TYPE = 'xlrelease.Dashboard';\n const _TRIGGER_TYPE = 'xlrelease.ReleaseTrigger';\n const JIRA_TYPE = 'jira.CreateIssue';\n const DEFAULT_TASK_OWNER = 'Itchy';\n\n const processTasks = (task: Task, container: Container, index: number): void => {\n if (isUndefined(task.type)) task.type = TASK_TYPE;\n task.id = task.id || `${container.id}/Task${index}`;\n if (isUndefined(task.owner) && task.type !== JIRA_TYPE) task.owner = DEFAULT_TASK_OWNER;\n if (task.owner === null) delete task.owner;\n\n each(task.conditions, function (condition, idx) {\n condition.type = CONDITION_TYPE;\n condition.id = `${task.id}/GateCondition${idx}`;\n });\n each(task.dependencies, function (dependency, idx) {\n dependency.type = DEPENDENCY_TYPE;\n dependency.id = `${task.id}/Dependency${idx}`;\n });\n each(task.links, function (link, idx) {\n link.type = LINK_TYPE;\n link.id = `${task.id}/Link${idx}`;\n });\n each(task.comments, function (comment, idx) {\n comment.type = COMMENT_TYPE;\n comment.id = `${task.id}/Comment${idx}`;\n });\n each(task.tasks, function (subTask, idx) {\n processTasks(subTask, task, idx);\n });\n each(task.templateVariables, function (variable, idx) {\n defaults(variable, getVariableEntity(variable.value, variable.key, task.id, idx));\n });\n each(task.attachments, function (attachment, idx) {\n attachment.type = ATTACHMENT_TYPE;\n attachment.id = `${task.id}/Attachment${idx}`;\n });\n if (task.pythonScript) {\n const pythonScript = task.pythonScript;\n pythonScript.id = `${task.id}/PythonScript`;\n pythonScript.customScriptTask = task.id;\n }\n };\n\n const processPhases = (phase: Phase, release: Release, index: number): void => {\n phase.type = PHASE_TYPE;\n phase.id = `${release.id}/Phase${index}`;\n\n forEach(phase.tasks, (task, idx): void => {\n processTasks(task, phase, idx);\n });\n };\n\n const getVariableEntity = (\n value: string,\n key: string,\n containerId: string,\n index: number,\n password?: boolean,\n // eslint-disable-next-line max-params\n ): Variable => {\n const keyNoSyntax = key.replace('${', '').replace('}', '');\n return {\n id: `${containerId}/Variable${index}`,\n key: keyNoSyntax,\n requiresValue: true,\n showOnReleaseStart: true,\n type: password ? 'xlrelease.PasswordStringVariable' : 'xlrelease.StringVariable',\n value: value,\n };\n };\n\n const getValueProviderConfigurationEntity = function (containerId: string): VariableValueProvider {\n return {\n id: `${containerId}/valueProvider`,\n variable: containerId,\n };\n };\n\n const getDashboardExtension = (dashboard: Dashboard, releaseId: string): Dashboard => {\n const dashboardExtension: Dashboard = {\n id: `${releaseId}/summary`,\n type: DASHBOARD_TYPE,\n tiles: [],\n };\n if (dashboard.tiles) {\n forEach(dashboard.tiles, function (tile, index) {\n dashboardExtension.tiles.push(getTileEntity(tile, `${releaseId}/summary`, index));\n });\n }\n return dashboardExtension;\n };\n\n function getTileEntity(tile: Tile, containerId: string, index: number): Tile {\n tile.id = tile.id || `${containerId}/Tile${index}`;\n return tile;\n }\n\n return function (release: Release) {\n release.type = RELEASE_TYPE;\n if (release.id.indexOf('Applications/') === -1) {\n release.id = `Applications/${release.id}`;\n }\n if (release.startDate) {\n release.queryableStartDate = release.startDate;\n } else if (release.scheduledStartDate) {\n release.queryableStartDate = release.scheduledStartDate;\n }\n if (release.endDate) {\n release.queryableEndDate = release.endDate;\n } else if (release.dueDate) {\n release.queryableEndDate = release.dueDate;\n }\n if (isUndefined(release.owner)) release.owner = 'Itchy'; // default release manager\n\n forEach(release.phases, function (phase, index) {\n processPhases(phase, release, index);\n });\n forEach(release.teams, function (team, index) {\n team.type = TEAM_TYPE;\n team.id = `${release.id}/Team${index}`;\n });\n forEach(release.attachments, function (attachment, index) {\n attachment.type = ATTACHMENT_TYPE;\n attachment.id = `${release.id}/Attachment${index}`;\n });\n forEach(release.variables, function (variable: Variable, index) {\n defaults(variable, getVariableEntity(variable.value, variable.key, release.id, index));\n if (variable.valueProvider) {\n defaults(variable.valueProvider, getValueProviderConfigurationEntity(variable.id));\n }\n });\n forEach(toPairs(release.variableValues), function (keyValue, index) {\n if (!release.variables) release.variables = [];\n release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1000 + index));\n release.variableValues = undefined;\n });\n forEach(toPairs(release.passwordVariableValues), function (keyValue, index) {\n if (!release.variables) release.variables = [];\n release.variables.push(getVariableEntity(keyValue[1], keyValue[0], release.id, 1500 + index, true));\n release.passwordVariableValues = undefined;\n });\n\n if (release.summary) {\n release.extensions = [getDashboardExtension(release.summary, release.id)];\n release.summary = undefined;\n }\n };\n})();\n","import { expect } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class LoginPage extends WithPage {\n /**\n * Login with username and password\n * @param userName\n * @param password\n */\n async login(userName: string, password: string): Promise<void> {\n await this.page.goto('./#/login');\n await this.page.waitForTimeout(1000);\n await expect(this.page).toHaveTitle('Digital.ai Release');\n await this.page.getByPlaceholder('User').fill(userName);\n await this.page.getByPlaceholder('Password').fill(password);\n await this.page.getByRole('button', { name: 'Log in' }).click();\n }\n\n /**\n * Logout as authenticated user\n */\n async logout(): Promise<void> {\n await this.page.locator('button.dot-avatar').click();\n await this.page.getByText('Log out').click();\n }\n\n /**\n * Expect login to be restricted for a user\n */\n async expectLoginDisallowed(): Promise<void> {\n const val = await this.page.textContent('.error-content span[ng-show=\"loginInfo.failedStatus == 403\"]');\n expect(val).toContain(\"You do not have 'login' permission.\");\n }\n\n /**\n * Expect the respective user is logged In\n * @param username\n */\n async expectToBeLogged(username: string): Promise<void> {\n const val = await this.page.locator('top-toolbar .avatar-wrapper span.dot-tooltip').getAttribute('aria-label');\n expect(val).toContain(username);\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 { Page } from '@playwright/test';\nimport { ReleasePage } from './releases/ReleasePage';\nimport { ApplicationsPage } from './ApplicationsPage';\nimport { PersonalAccessTokenPage } from './PersonalAccessTokenPage';\nimport { UsersPage } from './users/usersPage';\nimport { SettingsMenu } from './settingsMenu';\nimport { TaskDetails } from './taskDetails';\nimport { ReleaseCalendarPage } from './ReleaseCalendarPage';\n\nexport class Navigation {\n private readonly page: Page;\n releasePage: ReleasePage;\n settingsMenu: SettingsMenu;\n usersPage: UsersPage;\n applicationPage: ApplicationsPage;\n taskDetailsPage: TaskDetails;\n releaseCalendarPage: ReleaseCalendarPage;\n\n constructor(page: Page) {\n this.page = page;\n this.releasePage = new ReleasePage(page);\n this.settingsMenu = new SettingsMenu(page);\n this.usersPage = new UsersPage(page);\n this.applicationPage = new ApplicationsPage(page);\n this.taskDetailsPage = new TaskDetails(page);\n this.releaseCalendarPage = new ReleaseCalendarPage(page);\n }\n\n async openTemplate(id: string): Promise<ReleasePage> {\n return this.openReleaseOrTemplate(id, false);\n }\n\n async openRelease(id: string): Promise<ReleasePage> {\n return this.openReleaseOrTemplate(id, true);\n }\n\n async openApplicationsPage(): Promise<ApplicationsPage> {\n return new ApplicationsPage(this.page).goToApplicationsPage();\n }\n\n async openPersonalAccessTokenPage(): Promise<PersonalAccessTokenPage> {\n return new PersonalAccessTokenPage(this.page).openPersonalAccessTokenPage();\n }\n\n async gotoFolderPage(): Promise<void> {\n await this.page.getByText('Folders').click();\n }\n\n async gotoTaskPage(): Promise<void> {\n await this.page.getByTestId('sideNav-item-3').getByText('Tasks').click();\n }\n\n async gotoReleasePage(): Promise<void> {\n await this.page.getByText('Releases').click();\n }\n\n async gotoWorkflowCatalogPage(): Promise<void> {\n await this.page.getByText('Workflow catalog').click();\n }\n\n async gotoWorkflowsPage(): Promise<void> {\n await this.page.getByTestId('sideNav-item-6').getByText('Workflows').click();\n }\n\n async gotoGroupsPage(): Promise<void> {\n await this.page.getByText('Groups').click();\n }\n\n async gotoReleaseCalenderPage(): Promise<void> {\n await this.page.getByText('Release calendar').click();\n }\n\n async gotoDeliveriesPage(): Promise<void> {\n await this.page.getByText('Deliveries').click();\n }\n\n async gotoTriggersPage(): Promise<void> {\n await this.page.getByText('Triggers').click();\n }\n\n async gotoDigitalAnalyticsPage(): Promise<void> {\n await this.page.getByText('Digital.ai Analytics').click();\n }\n\n async gotoReportsPage(): Promise<void> {\n await this.page.getByText('Reports').click();\n }\n\n async gotoTemplatesPage(): Promise<void> {\n await this.page.getByText('Templates').click();\n }\n\n async gotoEnvironmentsPage(): Promise<void> {\n await this.page.getByText('Environments').click();\n }\n\n async gotoEnvironmentsCalenderPage(): Promise<void> {\n await this.page.getByText('Environments calendar').click();\n }\n\n async gotoGobalVariablesPage(): Promise<void> {\n await this.page.getByText('Global variables').click();\n }\n async gotoConnectionsPage(): Promise<void> {\n await this.page.getByText('Connections').click();\n }\n\n private async openReleaseOrTemplate(id: string, release: boolean): Promise<ReleasePage> {\n const url = release ? 'releases' : 'templates';\n await this.page.goto(`./#/${url}/${id}`);\n await this.page.waitForSelector('#release');\n return new ReleasePage(this.page);\n }\n}\n","import { Page, Locator, expect } from '@playwright/test';\nimport { TriggersPage } from '../TriggersPage';\nimport { WithPage } from '../WithPage';\nimport { ReleaseVariablesPage } from './ReleaseVariablesPage';\nimport { TaskDrawer } from '../task-drawer/taskDrawer';\n\nexport class ReleasePage extends WithPage {\n taskDrawer: TaskDrawer;\n\n constructor(page: Page) {\n super(page);\n this.taskDrawer = new TaskDrawer(page);\n }\n\n async openTriggers(): Promise<TriggersPage> {\n await this.openSubPage('Triggers');\n return new TriggersPage(this.page);\n }\n\n async abort(comment = 'Abort for testing'): Promise<void> {\n await this.page.locator('action-toolbar button', { hasText: 'Abort' }).click();\n await this.page.locator('.modal textarea').fill(comment);\n await this.page.locator('.modal .continue').click();\n }\n\n getPhase(phaseName: string): Phase {\n return new Phase(this.page, phaseName);\n }\n\n async start(): Promise<void> {\n await this.page.getByTestId('start-btn').click();\n await this.page.getByRole('button', { name: 'Start' }).click();\n }\n\n async waitForTaskCompleted(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.completed').getByText(taskTitle, { exact: true })).toBeVisible();\n }\n async waitForTaskFailed(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.failed').getByText(taskTitle, { exact: true })).toBeVisible();\n }\n async waitForTaskSkipped(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.skipped').getByText(taskTitle, { exact: true })).toBeVisible();\n }\n async waitForTaskAborted(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.aborted').getByText(taskTitle, { exact: true })).toBeVisible();\n }\n async waitForStatusLine(statusLine: string): Promise<void> {\n await expect(this.page.locator('.task .status-line').getByText(statusLine, { exact: true })).toBeVisible();\n }\n\n async waitForTaskStarted(taskTitle: string): Promise<void> {\n await expect(this.page.locator('.task.in_progress').getByTitle(taskTitle, { exact: true })).toBeVisible();\n }\n\n async openTaskDrawer(taskName: string): Promise<TaskDrawer> {\n await this.page.locator('.task-header').getByText(taskName).click();\n return this.taskDrawer;\n }\n\n async openVariables(): Promise<ReleaseVariablesPage> {\n await this.openReleaseMenu('Variables');\n return new ReleaseVariablesPage(this.page);\n }\n\n async openReleaseMenu(menuItem: string): Promise<void> {\n await this.page.locator(`navigation-sidebar ul li`).getByText(menuItem, { exact: true }).click();\n }\n\n private async openSubPage(subpage: string): Promise<void> {\n await this.page.locator('ul.side-nav li', { hasText: subpage }).click();\n }\n\n async openTask(taskName: string): Promise<void> {\n await this.page.getByTitle(taskName, { exact: true }).click();\n }\n\n async collapseAllTaskView(): Promise<void> {\n const icCollapseTreeview1 = this.page.locator('div.pull-left.expander.ng-scope i.xl-icon.arrow-down-icon');\n for (const element of await icCollapseTreeview1.all()) {\n const blnVal = await element.isVisible();\n if (blnVal) {\n await element.click();\n await this.collapseAllTaskView();\n }\n }\n }\n\n async expandAllTaskView(): Promise<void> {\n const icExpandTreeview1 = this.page.locator('div.pull-left.expander.ng-scope i.xl-icon.arrow-right-icon');\n for (const element of await icExpandTreeview1.all()) {\n const blnVal = await element.isVisible();\n if (blnVal) {\n await element.click();\n await this.expandAllTaskView();\n }\n }\n }\n}\n\nclass Phase extends WithPage {\n private readonly phaseLocator: Locator;\n\n constructor(page: Page, phaseName: string) {\n super(page);\n this.phaseLocator = page.locator('.phase', { hasText: phaseName });\n }\n\n async addTask(taskName: string, taskGroup: string, taskType: string): Promise<void> {\n await this.phaseLocator.getByText('Add task').click();\n await this.phaseLocator.locator('.quick-title').fill(taskName);\n await this.phaseLocator.locator('.xlr-ctx-menu-toggle').click();\n await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, { exact: true }).scrollIntoViewIfNeeded();\n await this.page.locator(`.xlr-ctx-menu-item`).getByTitle(taskGroup, { exact: true }).hover();\n await this.page.locator(`.xlr-ctx-menu.active`).getByTitle(taskType, { exact: true }).click();\n await this.phaseLocator.locator('.quick-controls-container a').getByText('Add', { exact: true }).click();\n }\n}\n","import { expect } from '@playwright/test';\nimport { ReleasesListPage } from './releases/ReleasesListPage';\nimport { WithPage } from './WithPage';\n\nexport class TriggersPage extends WithPage {\n async openRelatedReleasesOf(title: string): Promise<ReleasesListPage> {\n await this.openContextMenu(title);\n await this.page.locator('.popover-content xlr-context-menu a', { hasText: 'View releases' }).click();\n return new ReleasesListPage(this.page);\n }\n\n private async openContextMenu(title: string): Promise<void> {\n await expect(async () => {\n await this.page.locator('.trigger-row-content', { hasText: title }).locator('.context-menu-button').click();\n await expect(this.page.locator('.popover-content')).toBeVisible();\n }).toPass();\n }\n}\n","import { expect } from '@playwright/test';\nimport { ReleasePage } from './ReleasePage';\nimport { WithPage } from '../WithPage';\n\nexport class ReleasesListPage extends WithPage {\n async expectNumberOfReleases(releaseTitle: string, amount: number): Promise<void> {\n if (amount === 1) {\n await expect(this.page.locator('.release').getByText(releaseTitle)).toBeVisible();\n } else {\n await expect(this.page.locator('.release').getByText(releaseTitle).count()).toBe(amount);\n }\n }\n\n async openReleaseByName(releaseTitle: string): Promise<ReleasePage> {\n await this.page.locator('.release-line .row-wrapper .release-title-wrapper a', { hasText: releaseTitle }).click();\n return new ReleasePage(this.page);\n }\n}\n","import { expect, Locator } from '@playwright/test';\nimport { WithPage } from '../WithPage';\nimport { waitForOneOf } from '../helper';\n\ntype ExpectWithLocator = (l: Locator) => void;\n\nexport class ReleaseVariablesPage extends WithPage {\n async openVariable(variableKey: string): Promise<ReleaseVariableModal> {\n await this.page.locator(`.variables-list .variable`).getByText(variableKey).click();\n return new ReleaseVariableModal(this.page);\n }\n}\n\nclass ReleaseVariableModal extends WithPage {\n private async expectValue(locators: Locator[], expectFn: ExpectWithLocator[]): Promise<void> {\n const [index, locator] = await waitForOneOf(locators);\n await expectFn[index](locator);\n }\n\n async expectValueToBe(value: string): Promise<void> {\n await this.expectValue(\n [\n this.page.locator('#modal .variable-value input'),\n this.page.locator('#modal .variable-value .field-readonly'),\n this.page.locator('#modal .variable-value .xl-map-string-string'),\n ],\n [(l) => expect(l).toHaveValue(value), (l) => expect(l).toHaveText(value), (l) => expect(l).toHaveText(value)],\n );\n }\n\n async expectValueToContain(value: string): Promise<void> {\n await this.expectValue(\n [\n this.page.locator('#modal .variable-value input'),\n this.page.locator('#modal .variable-value .field-readonly'),\n this.page.locator('#modal .variable-value .xl-map-string-string'),\n ],\n [\n (l) => expect(l.inputValue()).toContain(value),\n (l) => expect(l).toContainText(value),\n (l) => expect(l).toContainText(value),\n ],\n );\n }\n\n async close(): Promise<void> {\n await this.page.locator('#modal .modal-header button.close').click();\n }\n}\n","import { Locator } from '@playwright/test';\n\ntype WaitForRes = [locatorIndex: number, locator: Locator];\nexport async function waitForOneOf(locators: Locator[]): Promise<WaitForRes> {\n const res = await Promise.all([\n ...locators.map(async (locator, index): Promise<WaitForRes> => {\n let timedOut = false;\n await locator.waitFor({ state: 'visible', timeout: 2000 }).catch(() => (timedOut = true));\n return [timedOut ? -1 : index, locator];\n }),\n ]);\n const resolvedLocator = res.find((r) => r[0] !== -1);\n if (!resolvedLocator) {\n console.warn('waitForOneOf', res);\n throw new Error('no locator visible before timeout');\n }\n return resolvedLocator;\n}\n","import { ConfigRail } from './taskConfig';\nimport { WithPage } from '../WithPage';\nimport { Locator, Page } from '@playwright/test';\nimport { ConditionRail } from './taskCondition';\n\ntype Rail = 'Overview' | 'Activity' | 'Config' | 'Scheduling' | 'Conditions' | 'Attributes' | 'Attach' | 'Tags';\n\nexport class TaskDrawer extends WithPage {\n config: ConfigRail;\n condition: ConditionRail;\n taskDrawerLocator: Locator;\n retryButton: Locator;\n cancelButton: Locator;\n commentBox: Locator;\n confirm: Locator;\n skipMenu: Locator;\n\n constructor(page: Page) {\n super(page);\n this.taskDrawerLocator = this.page.locator('task-drawer .dot-drawer');\n this.retryButton = this.page.getByRole('button', { name: 'Retry' });\n this.cancelButton = this.page.getByTestId('task-action-cancel');\n this.commentBox = this.page.getByTestId('task-action-comment');\n this.confirm = this.page.getByTestId('task-action-confirm');\n this.config = new ConfigRail(page);\n this.condition = new ConditionRail(page);\n this.skipMenu = this.page.getByRole('menuitem', { name: 'Skip' });\n }\n\n async openOverviewRail(): Promise<void> {\n await this.openRail('Overview');\n }\n\n async openActivityRail(): Promise<void> {\n await this.openRail('Activity');\n }\n\n async openSchedulingRail(): Promise<void> {\n await this.openRail('Scheduling');\n }\n\n async openConditionRail(): Promise<void> {\n await this.openRail('Conditions');\n }\n\n async openAttributesRail(): Promise<void> {\n await this.openRail('Attributes');\n }\n\n async openAttachRail(): Promise<void> {\n await this.openRail('Attach');\n }\n\n async openTagsRail(): Promise<void> {\n await this.openRail('Tags');\n }\n\n async openRail(rail: Rail): Promise<void> {\n await this.taskDrawerLocator.locator('.task-navigation-rail').getByText(rail).click();\n }\n\n async close(): Promise<void> {\n await this.taskDrawerLocator.locator('.task-drawer-header').getByTestId('close-btn').click();\n }\n\n async retryTask(comment: string): Promise<void> {\n await this.retryButton.click();\n await this.commentBox.fill(comment);\n await this.confirm.click();\n }\n\n async skipTask(comment: string): Promise<void> {\n await this.page.getByRole('button', { name: 'arrow-down icon', exact: true }).click();\n await this.skipMenu.click();\n await this.commentBox.fill(comment);\n await this.confirm.click();\n }\n}\n","import { Locator, Page, expect } from '@playwright/test';\nimport { WithPage } from '../WithPage';\n\nexport class ConfigRail extends WithPage {\n railLocator: Locator;\n\n constructor(page: Page) {\n super(page);\n this.railLocator = this.page.locator('task-drawer .dot-drawer .task-config');\n }\n\n async openInputProperties(): Promise<void> {\n await this.railLocator.locator('.task-config-header').getByText('Input properties').click();\n }\n\n async openOutputProperties(): Promise<void> {\n await this.railLocator.locator('.task-config-header').getByText('Output properties').click();\n }\n\n async getValueFromCi(propertyName: string): Promise<string> {\n return this.railLocator.locator(`input[id=\"${propertyName}\"]`).inputValue();\n }\n\n async getAllOptionsFromCi(propertyName: string): Promise<string[]> {\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).click();\n return this.railLocator.locator(`.dot-popper ul li`).allInnerTexts();\n }\n\n async setValueFromCi(propertyName: string, value: string): Promise<void> {\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).clear();\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).click();\n await this.railLocator.locator(`.dot-popper ul li`, { hasText: value }).click();\n }\n\n async getValueFromString(propertyName: string): Promise<string | null> {\n await this.railLocator.locator(`.input-scalar-fake-input[id=\"${propertyName}\"]`).focus();\n return this.railLocator.locator(`input[id=\"${propertyName}\"]`).inputValue();\n }\n\n async setValueFromString(propertyName: string, value: string): Promise<void> {\n await this.railLocator.locator(`.input-scalar-fake-input[id=\"${propertyName}\"]`).focus();\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).fill(value);\n }\n\n async setValueFromLargeString(propertyName: string, value: string): Promise<void> {\n await this.railLocator.locator(`.input-scalar-fake-input[id=\"${propertyName}\"]`).focus();\n await this.railLocator.locator(`textarea[id=\"${propertyName}\"]`).fill(value);\n }\n\n async setValueFromPassword(propertyName: string, value: string): Promise<void> {\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).fill(value);\n }\n\n async setAndCreateVariable(propertyName: string, variableName: string): Promise<void> {\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).clear();\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).click();\n await this.railLocator.locator(`input[id=\"${propertyName}\"]`).fill(variableName);\n await this.railLocator.locator(`.dot-popper button`, { hasText: variableName }).click();\n }\n\n async setVariable(propertyName: string, variableName: string): Promise<void> {\n return this.setValueFromCi(propertyName, variableName);\n }\n\n async expectValueFromString(propertyName: string, propertyValue: string): Promise<void> {\n return await expect(this.railLocator.locator(`.input-scalar-fake-input[id=\"${propertyName}\"]`)).toHaveText(\n propertyValue,\n );\n }\n}\n","import { Locator, Page, expect } from '@playwright/test';\nimport { WithPage } from '../WithPage';\n\nexport class ConditionRail extends WithPage {\n railLocator: Locator;\n preconditionToggle: Locator;\n textEditor: Locator;\n saveButton: Locator;\n\n constructor(page: Page) {\n super(page);\n this.railLocator = this.page.locator('task-drawer .dot-drawer .task-conditions');\n this.preconditionToggle = page.getByLabel('Enable precondition');\n this.textEditor = page.getByRole('textbox');\n this.saveButton = page.getByTestId('save-btn');\n }\n\n async enablePrecondition(): Promise<void> {\n expect(await this.preconditionToggle.isChecked()).toBe(false);\n await this.preconditionToggle.check();\n }\n\n async disablePrecondition(): Promise<void> {\n expect(await this.preconditionToggle.isChecked()).toBe(true);\n await this.preconditionToggle.uncheck();\n }\n\n async setPrecondition(script: string): Promise<void> {\n await this.enablePrecondition();\n await this.textEditor.fill(script);\n await this.saveButton.dblclick();\n await this.page.waitForTimeout(1000);\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class ApplicationsPage extends WithPage {\n async goToApplicationsPage(): Promise<this> {\n await this.page.goto('./#/applications');\n await expect(this.page).toHaveTitle('Applications - Digital.ai Release');\n return this;\n }\n\n async addNewApplication(applicationName: string): Promise<this> {\n await this.page.locator(`//button[normalize-space()='New application']`).click();\n await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);\n await this.page.locator(`//button[normalize-space()='Save']`).click();\n return this;\n }\n\n async verifyApplicationisCreated(applicationName: string): Promise<this> {\n await this.page.waitForSelector(`div[title='${applicationName}'] strong`);\n return this;\n }\n\n async createApplicationAndLinkEnvironment(environmentName: string, applicationName: string): Promise<this> {\n await this.page.locator(`//button[normalize-space()='New application']`).click();\n await this.page.locator(`input[placeholder='Add name...']`).type(applicationName);\n await this.page.locator(\"input[placeholder='Filter environment name...']\").type(environmentName);\n await this.page.locator(`div[title='${environmentName}']`).click();\n await this.page.locator(`//button[normalize-space()='Save']`).click();\n await this.page.locator('i.xl-icon.close-icon').click();\n return this;\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class PersonalAccessTokenPage extends WithPage {\n async openPersonalAccessTokenPage(): Promise<this> {\n // await this.page.locator(\"button.dot-avatar\").click()\n // await this.page.locator(\"//div[normalize-space()='Access tokens']\").click()\n await this.page.goto('./#/personal-access-token');\n await expect(this.page).toHaveTitle('Access tokens / Personal settings - Digital.ai Release');\n return this;\n }\n\n async addNewToken(tokenName: string): Promise<this> {\n //await expect(this.page).toHaveTitle('Access tokens / Personal settings - Digital.ai Release')\n\n await this.page.locator('#tokenText').fill(tokenName);\n await this.page.locator(\"button[type='submit']\").click();\n return this;\n }\n}\n","import { Locator, Page, expect } from '@playwright/test';\nimport { WithPage } from '../WithPage';\nimport { UserModal } from './userModal';\n\nexport class UsersPage extends WithPage {\n page: Page;\n newUserButton: Locator;\n modal: UserModal;\n constructor(page: Page) {\n super(page);\n this.page = page;\n this.newUserButton = this.page.getByTestId('new-user-btn');\n this.modal = new UserModal(page);\n }\n\n async openUsersPage(): Promise<void> {\n this.page.goto('./#/users', { timeout: 1000 });\n }\n\n async toggleLoginPermission(username: string): Promise<void> {\n await this.page\n .getByRole('row', { name: '' + username + '' })\n .getByRole('checkbox')\n .check();\n //await this.page.locator(`tr:contains('${username}') .login-permission input`).click();\n }\n\n async addUser(): Promise<void> {\n await this.newUserButton.click();\n }\n\n async createUser(username: string, password: string): Promise<void> {\n await this.modal.setUserName(username);\n await this.modal.setFullName(username);\n await this.modal.setEmail('testuser@company.com');\n await this.modal.setPassword(password);\n await this.modal.setConfirmPassword(password);\n await this.modal.save();\n }\n\n async expectToHaveLoginPermission(username: string): Promise<void> {\n return await expect(this.page.getByRole('row', { name: '' + username + '' }).getByRole('checkbox')).toBeChecked();\n }\n\n async deleteUser(username: string): Promise<void> {\n await this.page\n .getByRole('row', { name: '' + username + '' })\n .locator('i')\n .nth(1)\n .click();\n await this.modal.delete();\n }\n}\n","import { Locator, Page } from '@playwright/test';\nimport { WithPage } from '../WithPage';\n\nexport class UserModal extends WithPage {\n userName: Locator;\n name: Locator;\n email: Locator;\n password: Locator;\n cnfPassword: Locator;\n saveButton: Locator;\n cancelButton: Locator;\n deleteButton: Locator;\n constructor(page: Page) {\n super(page);\n this.userName = page.locator('#username');\n this.name = page.locator('#full-name');\n this.email = page.locator('#email');\n this.password = page.locator('[data-test=\"password-input\"]');\n this.cnfPassword = page.locator('#passwordConfirmation');\n this.saveButton = page.getByRole('button', { name: 'Save' });\n this.cancelButton = page.getByRole('button', { name: 'Cancel' });\n this.deleteButton = page.getByRole('button', { name: 'Delete' });\n }\n\n async setUserName(username: string): Promise<void> {\n return await this.userName.fill(username);\n }\n\n async setFullName(fullName: string): Promise<void> {\n return await this.name.fill(fullName);\n }\n\n async setEmail(email: string): Promise<void> {\n return await this.email.fill(email);\n }\n\n async setPassword(password: string): Promise<void> {\n return await this.password.fill(password);\n }\n\n async setConfirmPassword(cnfPassword: string): Promise<void> {\n return await this.cnfPassword.fill(cnfPassword);\n }\n\n async save(): Promise<void> {\n await this.saveButton.click();\n }\n\n async cancel(): Promise<void> {\n await this.cancelButton.click();\n }\n\n async delete(): Promise<void> {\n await this.deleteButton.click();\n }\n}\n","import { Locator, Page } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class SettingsMenu extends WithPage {\n settingsIcon: Locator;\n usersAndPermissionMenu: Locator;\n managePluginMenu: Locator;\n constructor(page: Page) {\n super(page);\n this.settingsIcon = this.page.getByRole('button', { name: 'Settings' });\n this.usersAndPermissionMenu = this.page.getByTestId('undefined-menu').getByText('Users and permissions');\n this.managePluginMenu = this.page.getByText('Manage plugins');\n }\n\n async openUsersAndPermissions(): Promise<void> {\n await this.settingsIcon.click();\n await this.page.getByTestId('undefined-menu').getByText('Users and permissions').click();\n }\n\n async openManagePlugin(): Promise<void> {\n await this.settingsIcon.click();\n await this.managePluginMenu.click();\n }\n}\n","import { Page } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class TaskDetails extends WithPage {\n constructor(page: Page) {\n super(page);\n }\n}\n","import { expect } from '@playwright/test';\nimport { WithPage } from './WithPage';\n\nexport class ReleaseCalendarPage extends WithPage {\n private dayFormat!: string;\n private yearFormat!: number;\n private monthFormat!: string;\n private yearFormatString!: string;\n\n async openReleaseCalendarPage(): Promise<this> {\n await this.page.goto('./#/calendar');\n await expect(this.page).toHaveTitle('Release calendar / Home - Digital.ai Release');\n //Define date format to verify different calendar views\n const today = new Date();\n let options: Intl.DateTimeFormatOptions = {\n weekday: 'long',\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n };\n this.dayFormat = today.toLocaleDateString('en-US', options); // Saturday, September 17, 2016\n this.yearFormat = today.getFullYear();\n this.yearFormatString = this.yearFormat.toString();\n options = { month: 'long', year: 'numeric' };\n this.monthFormat = today.toLocaleDateString('en-US', options);\n return this;\n }\n\n async exportCalendar(): Promise<void> {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.page.on('download', () => {});\n await this.page.getByRole('button', { name: 'download icon Export calendar' }).click();\n const downloadPromise = this.page.waitForEvent('download');\n await this.page.getByRole('button', { name: 'Export' }).click();\n await downloadPromise;\n }\n\n async cancelCalendarExport(): Promise<number> {\n let downloadCount = 0;\n // Listen to download events\n this.page.on('download', (_download) => {\n downloadCount++;\n });\n await this.page.getByRole('button', { name: 'download icon Export calendar' }).click();\n await this.page.getByRole('button', { name: 'Cancel' }).click();\n return downloadCount;\n }\n\n async verifyDayView(): Promise<void> {\n await this.page.getByRole('combobox').click();\n await this.page.getByRole('option', { name: 'Day' }).click();\n await this.page.getByRole('button', { name: 'Today' }).click();\n //Verify Page has correct day format displayed at the page bottom\n await expect(this.page.getByText(this.dayFormat)).toBeVisible();\n }\n\n async verifyYearView(): Promise<void> {\n await this.page.getByRole('combobox').click();\n await this.page.getByRole('option', { name: 'Year' }).click();\n await this.page.getByRole('button', { name: 'Today' }).click();\n //Verify Page has correct Year format displayed at the page bottom\n await expect(this.page.getByText(this.yearFormatString)).toBeVisible();\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
|
package/dist/types.d.ts
CHANGED
|
@@ -56,7 +56,9 @@ interface Task extends PlanItem {
|
|
|
56
56
|
dependencies: Array<Dependency>;
|
|
57
57
|
links: Array<Link>;
|
|
58
58
|
owner?: string;
|
|
59
|
+
precondition: string;
|
|
59
60
|
pythonScript?: PythonScript;
|
|
61
|
+
script: string;
|
|
60
62
|
status: TaskStatus;
|
|
61
63
|
tasks: Array<Task>;
|
|
62
64
|
templateVariables: Array<Variable>;
|
|
@@ -269,12 +271,20 @@ declare class SettingsMenu extends WithPage {
|
|
|
269
271
|
declare class TaskDetails extends WithPage {
|
|
270
272
|
constructor(page: Page);
|
|
271
273
|
}
|
|
274
|
+
declare class ReleaseCalendarPage extends WithPage {
|
|
275
|
+
openReleaseCalendarPage(): Promise<this>;
|
|
276
|
+
exportCalendar(): Promise<void>;
|
|
277
|
+
cancelCalendarExport(): Promise<number>;
|
|
278
|
+
verifyDayView(): Promise<void>;
|
|
279
|
+
verifyYearView(): Promise<void>;
|
|
280
|
+
}
|
|
272
281
|
declare class Navigation {
|
|
273
282
|
releasePage: ReleasePage;
|
|
274
283
|
settingsMenu: SettingsMenu;
|
|
275
284
|
usersPage: UsersPage;
|
|
276
285
|
applicationPage: ApplicationsPage;
|
|
277
286
|
taskDetailsPage: TaskDetails;
|
|
287
|
+
releaseCalendarPage: ReleaseCalendarPage;
|
|
278
288
|
constructor(page: Page);
|
|
279
289
|
openTemplate(id: string): Promise<ReleasePage>;
|
|
280
290
|
openRelease(id: string): Promise<ReleasePage>;
|