@camunda/e2e-test-suite 0.0.3 → 0.0.4

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.
@@ -11,8 +11,7 @@ class ClusterPage {
11
11
  constructor(page) {
12
12
  this.page = page;
13
13
  this.clustersList = page
14
- .getByRole('row')
15
- .filter({ hasNotText: 'integration' }); //Filter out header row
14
+ .getByRole('row');
16
15
  this.cluster = this.clustersList.getByText(this.defaultClusterName).first();
17
16
  }
18
17
  async clickClusterLink() {
@@ -208,11 +208,18 @@ class ModelerCreatePage {
208
208
  });
209
209
  await this.enterDiagramName(processName);
210
210
  if (processId.length > 0) {
211
- await this.clickStartEventElement();
211
+ await (0, sleep_1.sleep)(1000); // When we go too fast there, modeler will missing the input
212
+ await this.clickCanvas();
212
213
  await this.clickGeneralPropertiesPanel();
213
214
  await this.clickIdInput();
214
215
  await this.fillIdInput(processId);
215
216
  await this.clickStartEventElement();
217
+ try {
218
+ await (0, test_1.expect)(this.appendElementButton).toBeVisible({ timeout: 1000 });
219
+ }
220
+ catch {
221
+ await this.clickStartEventElement();
222
+ }
216
223
  }
217
224
  await this.clickAppendElementButton();
218
225
  await this.clickAppendTaskButton();
@@ -317,10 +324,10 @@ class ModelerCreatePage {
317
324
  await this.elemendIdInput.fill(id);
318
325
  }
319
326
  async clickStartEventElement() {
320
- await this.startEventElement.click({ force: true });
327
+ await this.startEventElement.click();
321
328
  }
322
329
  async selectStartEventElement() {
323
- await this.startEventElement.click({ force: true });
330
+ await this.startEventElement.click();
324
331
  }
325
332
  async clickAppendTaskButton() {
326
333
  await this.hoverOnLocator(this.appendPreButton);
@@ -388,11 +395,11 @@ class ModelerCreatePage {
388
395
  }
389
396
  async hoverOnLocator(locator, selector = '.djs-create-pad-entry') {
390
397
  const canvasState = await Promise.race([
391
- this.page.waitForSelector(selector, { state: 'visible' }).then(() => 'pad'),
392
- locator.waitFor({ state: 'visible' }).then(() => 'hover'),
398
+ this.page.waitForSelector(selector, { state: 'visible' }).then(() => 'pad').catch(() => { throw new Error('Canvas not visible'); }),
399
+ locator.waitFor({ state: 'visible' }).then(() => 'hover').catch(() => { throw new Error('Locator not visible'); }),
393
400
  ]);
394
401
  if (canvasState === 'hover') {
395
- await locator.hover({ timeout: 2000 });
402
+ await locator.hover({ timeout: 5000 });
396
403
  await this.page.waitForSelector(selector, { state: 'visible' });
397
404
  }
398
405
  }
@@ -12,6 +12,8 @@ declare class NavigationPage {
12
12
  activePassword: string;
13
13
  user1: string;
14
14
  user2: string;
15
+ user1password: string;
16
+ user2password: string;
15
17
  constructor(page: Page);
16
18
  goTo(url: string, banner: Locator, sleepTimeout?: number, maxRetries?: number): Promise<void>;
17
19
  goToModeler(sleepTimeout?: number): Promise<void>;
@@ -19,12 +19,16 @@ class NavigationPage {
19
19
  activePassword;
20
20
  user1;
21
21
  user2;
22
+ user1password;
23
+ user2password;
22
24
  constructor(page) {
23
25
  this.page = page;
24
26
  this.activeUser = '';
25
27
  this.activePassword = '';
26
28
  this.user1 = '';
27
29
  this.user2 = '';
30
+ this.user1password = '';
31
+ this.user2password = '';
28
32
  this.operatePageBanner = page.getByRole('link', {
29
33
  name: 'Camunda logo Operate',
30
34
  });
@@ -47,6 +51,10 @@ class NavigationPage {
47
51
  }
48
52
  async goTo(url, banner, sleepTimeout, maxRetries = 3) {
49
53
  const startTime = Date.now();
54
+ let timeout = constants_1._1_SECOND_IN_MS * 1;
55
+ if (url === '/modeler') {
56
+ timeout = constants_1._1_SECOND_IN_MS * 10;
57
+ }
50
58
  for (let attempt = 0; attempt < maxRetries; attempt++) {
51
59
  try {
52
60
  if (sleepTimeout) {
@@ -56,7 +64,7 @@ class NavigationPage {
56
64
  const loginPage = new LoginPage_1.LoginPage(this.page);
57
65
  const isLogin = await Promise.race([
58
66
  loginPage.isLoginPage(),
59
- (0, sleep_1.sleep)(10000) // the sleep here is a delay to allow the login page to load so that the race is a fair race
67
+ (0, sleep_1.sleep)(timeout) // the sleep here is a delay to allow the login page to load so that the race is a fair race
60
68
  .then(async () => {
61
69
  try {
62
70
  await (0, test_1.expect)(banner).toBeVisible({
@@ -85,7 +93,7 @@ class NavigationPage {
85
93
  await (0, randomSleep_1.randomSleep)(15000, 30000);
86
94
  if (!this.page.isClosed()) {
87
95
  try {
88
- await this.page.waitForLoadState('load', { timeout: 90000 });
96
+ await this.page.waitForLoadState('load', { timeout: timeout });
89
97
  }
90
98
  catch (error) {
91
99
  const now2 = new Date();
@@ -105,10 +113,10 @@ class NavigationPage {
105
113
  await this.goTo('/modeler', this.modelerPageBanner, sleepTimeout);
106
114
  }
107
115
  async goToTasklist(sleepTimeout) {
108
- await this.goTo('/tasklist/tasklist', this.tasklistPageBanner, sleepTimeout);
116
+ await this.goTo('/tasklist', this.tasklistPageBanner, sleepTimeout);
109
117
  }
110
118
  async goToOperate(sleepTimeout) {
111
- await this.goTo('/operate/operate', this.operatePageBanner, sleepTimeout);
119
+ await this.goTo('/operate', this.operatePageBanner, sleepTimeout);
112
120
  }
113
121
  async goToOptimize(sleepTimeout) {
114
122
  await this.goTo('/optimize', this.optimizePageBanner, sleepTimeout);
@@ -82,7 +82,7 @@ class TaskPanelPage {
82
82
  await this.processesPageTab.click();
83
83
  }
84
84
  async taskCount(name) {
85
- await (0, sleep_1.sleep)(20000);
85
+ await (0, sleep_1.sleep)(5000);
86
86
  return this.availableTasks.getByText(name, { exact: true }).count();
87
87
  }
88
88
  async clickTasksTab() {
@@ -15,7 +15,7 @@ class TaskProcessesPage {
15
15
  }
16
16
  async clickpopupContinueButton() {
17
17
  try {
18
- await this.popupContinueButton.click({ timeout: 60000 });
18
+ await this.popupContinueButton.click({ timeout: 2000 });
19
19
  }
20
20
  catch (error) {
21
21
  console.log('Popup not present');
@@ -65,6 +65,12 @@ async function modelRestConnector(modelerCreatePage, connectorSettingsPage, conn
65
65
  timeout: 120000,
66
66
  });
67
67
  await modelerCreatePage.enterDiagramName(processName);
68
+ await (0, sleep_1.sleep)(1000); // When we go too fast there, modeler will missing the input
69
+ await modelerCreatePage.clickCanvas();
70
+ await modelerCreatePage.clickGeneralPropertiesPanel();
71
+ await modelerCreatePage.clickIdInput();
72
+ await modelerCreatePage.fillIdInput(processName);
73
+ await modelerCreatePage.clickStartEventElement();
68
74
  await modelerCreatePage.clickAppendElementButton();
69
75
  await modelerCreatePage.clickAppendTaskButton();
70
76
  await modelerCreatePage.clickChangeTypeButton();
@@ -5,6 +5,7 @@ const SM_8_7_1 = require("../../fixtures/SM-8.7");
5
5
  const _setup_1 = require("../../test-setup.js");
6
6
  const UtlitiesPage_1 = require("../../pages/SM-8.7/UtlitiesPage");
7
7
  const keycloak_1 = require("../../utils/keycloak");
8
+ const sleep_1 = require("../../utils/sleep");
8
9
  SM_8_7_1.test.describe.parallel('Connectors User Flow Tests', () => {
9
10
  SM_8_7_1.test.beforeEach(async ({ navigationPage, identityPage, identityTenantPage, keycloakLoginPage, keycloakAdminPage, }) => {
10
11
  await (0, keycloak_1.setupKeycloakUser)(navigationPage, identityPage, keycloakLoginPage, keycloakAdminPage, identityTenantPage);
@@ -76,7 +77,7 @@ SM_8_7_1.test.describe.parallel('Connectors User Flow Tests', () => {
76
77
  });
77
78
  });
78
79
  });
79
- SM_8_7_1.test.skip('Start Event Webhook Connector No Auth User Flow', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, request, operateHomePage, operateProcessInstancePage, operateProcessesPage, connectorMarketplacePage, context, }) => {
80
+ (0, SM_8_7_1.test)('Start Event Webhook Connector No Auth User Flow', async ({ page, modelerHomePage, navigationPage, modelerCreatePage, request, operateHomePage, operateProcessInstancePage, operateProcessesPage, connectorMarketplacePage, context, }) => {
80
81
  SM_8_7_1.test.slow();
81
82
  const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
82
83
  const processName = 'Start_Event_Webhook_Connector_No_Auth_Process' + randomString;
@@ -117,7 +118,7 @@ SM_8_7_1.test.describe.parallel('Connectors User Flow Tests', () => {
117
118
  await SM_8_7_1.test.step('Make Authorization Request', async () => {
118
119
  const baseURL = process.env.PLAYWRIGHT_BASE_URL ||
119
120
  `https://gke-${process.env.BASE_URL}.ci.distro.ultrawombat.com`;
120
- const maxWaitTime = 15000; // 15 seconds
121
+ const maxWaitTime = 150000; // 15 seconds
121
122
  const pollInterval = 1000; // 1 second
122
123
  const startTime = Date.now();
123
124
  let response;
@@ -125,7 +126,7 @@ SM_8_7_1.test.describe.parallel('Connectors User Flow Tests', () => {
125
126
  console.log('Making request to', `${baseURL}/connectors/inbound/test-webhook-id${randomString}`);
126
127
  while (Date.now() - startTime < maxWaitTime) {
127
128
  try {
128
- response = await request.post(`${baseURL}/connectors/inbound/inbound/test-webhook-id${randomString}`);
129
+ response = await request.post(`${baseURL}/connectors/inbound/test-webhook-id${randomString}`);
129
130
  if (response.status() === 200) {
130
131
  break; // Success!
131
132
  }
@@ -134,7 +135,7 @@ SM_8_7_1.test.describe.parallel('Connectors User Flow Tests', () => {
134
135
  catch (err) {
135
136
  lastError = err;
136
137
  }
137
- await new Promise((res) => setTimeout(res, pollInterval));
138
+ await (0, sleep_1.sleep)(pollInterval);
138
139
  }
139
140
  if (!response || response.status() !== 200) {
140
141
  throw new Error(`Resource not available after 15s. Last error: ${lastError}`);
@@ -179,7 +180,7 @@ SM_8_7_1.test.describe.parallel('Connectors User Flow Tests', () => {
179
180
  await (0, test_1.expect)(page.getByTestId('variable-message').getByText('"Message from Mock!"')).toBeVisible({ timeout: 180000 });
180
181
  });
181
182
  });
182
- SM_8_7_1.test.skip('Intermediate Event Webhook Connector No Auth User Flow', async ({ modelerHomePage, modelerCreatePage, request, operateHomePage, operateProcessInstancePage, operateProcessesPage, navigationPage, connectorMarketplacePage, context, }) => {
183
+ (0, SM_8_7_1.test)('Intermediate Event Webhook Connector No Auth User Flow', async ({ modelerHomePage, modelerCreatePage, request, operateHomePage, operateProcessInstancePage, operateProcessesPage, navigationPage, connectorMarketplacePage, context, }) => {
183
184
  SM_8_7_1.test.slow();
184
185
  const randomString = await (0, _setup_1.generateRandomStringAsync)(3);
185
186
  const processName = 'Intermediate_Event_Webhook_Connector_No_Auth_Process' + randomString;
@@ -201,7 +202,7 @@ SM_8_7_1.test.describe.parallel('Connectors User Flow Tests', () => {
201
202
  await modelerCreatePage.clickChangeTypeButton();
202
203
  try {
203
204
  await (0, test_1.expect)(modelerCreatePage.webhookStartEventConnectorOption).toBeVisible({
204
- timeout: 15000,
205
+ timeout: 3000,
205
206
  });
206
207
  }
207
208
  catch (error) {
@@ -226,12 +227,22 @@ SM_8_7_1.test.describe.parallel('Connectors User Flow Tests', () => {
226
227
  await SM_8_7_1.test.step('Make Authorization Request', async () => {
227
228
  const baseURL = process.env.PLAYWRIGHT_BASE_URL ||
228
229
  `http://gke-${process.env.BASE_URL}.ci.distro.ultrawombat.com`;
229
- const response = await request.post(`${baseURL}/connectors/inbound/test-webhook-intermediate${randomString}`, {
230
- data: {
231
- test: 'test',
232
- },
233
- });
234
- (0, test_1.expect)(response.status()).toBe(200);
230
+ // It takes about 6 seconds for the process to appear in the connectors endpoint
231
+ // So we need to wait for it to appear before making the request
232
+ const retries = 10;
233
+ let response;
234
+ for (let i = 0; i < retries; i++) {
235
+ response = await request.post(`${baseURL}/connectors/inbound/test-webhook-intermediate${randomString}`, {
236
+ data: {
237
+ test: 'test',
238
+ },
239
+ });
240
+ if (response.status() === 200) {
241
+ break;
242
+ }
243
+ await (0, sleep_1.sleep)(1000);
244
+ }
245
+ (0, test_1.expect)(response?.status()).toBe(200);
235
246
  });
236
247
  await SM_8_7_1.test.step('Assert Diagram Has Successfully Completed in Operate', async () => {
237
248
  await navigationPage.goToOperate();
@@ -5,8 +5,20 @@ const SM_8_7_1 = require("../../fixtures/SM-8.7");
5
5
  const _setup_1 = require("../../test-setup.js");
6
6
  const UtlitiesPage_1 = require("../../pages/SM-8.7/UtlitiesPage");
7
7
  const keycloak_1 = require("../../utils/keycloak");
8
+ const sleep_1 = require("../../utils/sleep");
8
9
  SM_8_7_1.test.describe('RBA Enabled User Flows Test', () => {
9
- SM_8_7_1.test.beforeEach(async ({ navigationPage, identityPage, keycloakLoginPage, keycloakAdminPage, identityTenantPage }, testInfo) => {
10
+ SM_8_7_1.test.beforeEach(async ({ navigationPage, identityPage, keycloakLoginPage, keycloakAdminPage, identityTenantPage, context }, testInfo) => {
11
+ await context.clearCookies();
12
+ const user1 = 'lisa' + (await (0, _setup_1.generateRandomStringAsync)(3)).toLowerCase();
13
+ const user2 = 'bart' + (await (0, _setup_1.generateRandomStringAsync)(3)).toLowerCase();
14
+ navigationPage.user1 = user1;
15
+ navigationPage.user1password = 'lisa';
16
+ navigationPage.user2 = user2;
17
+ navigationPage.user2password = 'bart';
18
+ await (0, keycloak_1.createUser)(navigationPage, identityPage, keycloakLoginPage, keycloakAdminPage, navigationPage.user1, navigationPage.user1password, identityTenantPage);
19
+ await context.clearCookies();
20
+ await (0, keycloak_1.createUser)(navigationPage, identityPage, keycloakLoginPage, keycloakAdminPage, navigationPage.user2, navigationPage.user2password, identityTenantPage);
21
+ await context.clearCookies();
10
22
  await (0, keycloak_1.setupKeycloakUser)(navigationPage, identityPage, keycloakLoginPage, keycloakAdminPage, identityTenantPage);
11
23
  });
12
24
  SM_8_7_1.test.afterEach(async ({ page }, testInfo) => {
@@ -80,7 +92,7 @@ SM_8_7_1.test.describe('RBA Enabled User Flows Test', () => {
80
92
  await SM_8_7_1.test.step('Navigate back to Identity and assert RBA is Enabled', async () => {
81
93
  await navigationPage.goToIdentity();
82
94
  await identityPage.clickUsersLink();
83
- await identityPage.clickDemoUser();
95
+ await identityPage.clickUser(navigationPage.activeUser);
84
96
  await (0, test_1.expect)(identityPage.authorizationsTab).toBeVisible({
85
97
  timeout: 60000,
86
98
  });
@@ -99,7 +111,7 @@ SM_8_7_1.test.describe('RBA Enabled User Flows Test', () => {
99
111
  await SM_8_7_1.test.step('Navigate to Users and Create Authorized Resource For Process 1', async () => {
100
112
  await navigationPage.goToIdentity();
101
113
  await identityPage.clickUsersLink();
102
- await identityPage.clickDemoUser();
114
+ await identityPage.clickUser(navigationPage.activeUser);
103
115
  await identityPage.clickAuthorizationsTab();
104
116
  await (0, test_1.expect)(page.getByText(`${processName}1`).last()).not.toBeVisible({
105
117
  timeout: 120000,
@@ -132,11 +144,12 @@ SM_8_7_1.test.describe('RBA Enabled User Flows Test', () => {
132
144
  });
133
145
  });
134
146
  await SM_8_7_1.test.step('Logout and Login with "bart" User', async () => {
147
+ await (0, sleep_1.sleep)(4000); // When we go too fast there, tasklist will error out
135
148
  await settingsPage.clickOpenSettingsButton();
136
149
  await settingsPage.clickLogoutButton();
137
- await loginPage.fillUsername('bart');
138
- await (0, test_1.expect)(loginPage.usernameInput).toHaveValue('bart');
139
- await loginPage.fillPassword(process.env.DISTRO_QA_E2E_TESTS_IDENTITY_THIRDUSER_PASSWORD);
150
+ await loginPage.fillUsername(navigationPage.user1);
151
+ await (0, test_1.expect)(loginPage.usernameInput).toHaveValue(navigationPage.user1);
152
+ await loginPage.fillPassword(navigationPage.user1password);
140
153
  await loginPage.clickLoginButton();
141
154
  await (0, test_1.expect)(taskPanelPage.tasklistBanner).toBeVisible({ timeout: 120000 });
142
155
  });
@@ -176,7 +189,7 @@ SM_8_7_1.test.describe('RBA Enabled User Flows Test', () => {
176
189
  await SM_8_7_1.test.step('Navigate back to Identity and assert RBA is Enabled', async () => {
177
190
  await navigationPage.goToIdentity();
178
191
  await identityPage.clickUsersLink();
179
- await identityPage.clickDemoUser();
192
+ await identityPage.clickUser(navigationPage.activeUser);
180
193
  await (0, test_1.expect)(identityPage.authorizationsTab).toBeVisible({
181
194
  timeout: 60000,
182
195
  });
@@ -195,7 +208,7 @@ SM_8_7_1.test.describe('RBA Enabled User Flows Test', () => {
195
208
  await SM_8_7_1.test.step('Navigate to Users and Create Authorized Resource For Both Processes', async () => {
196
209
  await navigationPage.goToIdentity();
197
210
  await identityPage.clickUsersLink();
198
- await identityPage.clickDemoUser();
211
+ await identityPage.clickUser(navigationPage.activeUser);
199
212
  await identityPage.clickAuthorizationsTab();
200
213
  await (0, test_1.expect)(page.getByText(`${processName}1`).last()).not.toBeVisible({
201
214
  timeout: 120000,
@@ -44,7 +44,7 @@ SM_8_7_1.test.describe.parallel('Smoke Tests', () => {
44
44
  await navigationPage.goToConsole();
45
45
  });
46
46
  });
47
- (0, SM_8_7_1.test)('Most Common Flow User Flow With All Apps', async ({ page, context, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, taskDetailsPage, taskPanelPage, }) => {
47
+ (0, SM_8_7_1.test)('Most Common Flow User Flow With All Apps', async ({ page, context, modelerHomePage, navigationPage, modelerCreatePage, operateHomePage, operateProcessesPage, operateProcessInstancePage, optimizeHomePage, optimizeCollectionsPage, optimizeReportPage, taskDetailsPage, taskPanelPage, identityPage, identityUsersPage, }) => {
48
48
  SM_8_7_1.test.slow();
49
49
  const randomName = await (0, _setup_1.generateRandomStringAsync)(3);
50
50
  const processName = 'Zeebe_User_Task_Process' + randomName;
@@ -58,8 +58,18 @@ SM_8_7_1.test.describe.parallel('Smoke Tests', () => {
58
58
  await modelerHomePage.clickBpmnTemplateOption();
59
59
  });
60
60
  await SM_8_7_1.test.step('Create BPMN Diagram with Zeebe User Task and Start Process Instance', async () => {
61
- await modelerCreatePage.modelCamundaUserTaskDiagram(processName);
61
+ await modelerCreatePage.modelCamundaUserTaskDiagram(processName, processName);
62
62
  await modelerCreatePage.runProcessInstance();
63
+ if (process.env.IS_RBA === 'true') {
64
+ await navigationPage.goToIdentity();
65
+ await identityPage.clickUsersLink();
66
+ await identityPage.clickUser(navigationPage.activeUser);
67
+ await identityPage.clickAuthorizationsTab();
68
+ await (0, test_1.expect)(page.getByText(processName).last()).not.toBeVisible({
69
+ timeout: 120000,
70
+ });
71
+ await identityUsersPage.createResourceAuthorization(processName);
72
+ }
63
73
  });
64
74
  await SM_8_7_1.test.step('View Process Instance in Operate, complete User Task in Tasklist & assert process complete in Operate and Assert Process has been successfully imported in Optimize', async () => {
65
75
  await navigationPage.goToOperate();
@@ -84,8 +94,10 @@ SM_8_7_1.test.describe.parallel('Smoke Tests', () => {
84
94
  await (0, test_1.expect)(optimizeReportPage.versionSelection).toBeVisible({
85
95
  timeout: 30000,
86
96
  });
87
- await optimizeReportPage.clickVersionSelection();
88
- await optimizeReportPage.clickAlwaysDisplayLatestSelection();
97
+ if (process.env.IS_RBA === 'true') {
98
+ await optimizeReportPage.clickVersionSelection();
99
+ await optimizeReportPage.clickAlwaysDisplayLatestSelection();
100
+ }
89
101
  await optimizeReportPage.clickBlankReportButton();
90
102
  await optimizeReportPage.clickCreateReportLink();
91
103
  await (0, test_1.expect)(optimizeReportPage.selectDropdown).toBeVisible({
@@ -107,7 +119,7 @@ SM_8_7_1.test.describe.parallel('Smoke Tests', () => {
107
119
  }
108
120
  });
109
121
  });
110
- (0, SM_8_7_1.test)('Most Common REST Connector User Flow', async ({ page, context, operateHomePage, modelerHomePage, modelerCreatePage, connectorSettingsPage, navigationPage, operateProcessesPage, operateProcessInstancePage, connectorMarketplacePage, }) => {
122
+ (0, SM_8_7_1.test)('Most Common REST Connector User Flow', async ({ page, context, operateHomePage, modelerHomePage, modelerCreatePage, connectorSettingsPage, navigationPage, operateProcessesPage, operateProcessInstancePage, connectorMarketplacePage, identityPage, identityUsersPage, }) => {
111
123
  SM_8_7_1.test.slow();
112
124
  const processName = 'REST_Connector_Basic_Auth_Process' +
113
125
  (await (0, _setup_1.generateRandomStringAsync)(3));
@@ -122,13 +134,25 @@ SM_8_7_1.test.describe.parallel('Smoke Tests', () => {
122
134
  await SM_8_7_1.test.step('Create BPMN Diagram with REST Connector with Basic Auth and Start Process Instance', async () => {
123
135
  await (0, UtlitiesPage_1.modelRestConnector)(modelerCreatePage, connectorSettingsPage, connectorMarketplacePage, processName, 'https://camunda.proxy.beeceptor.com/pre-prod/basic-auth-test', 'basic', '{message:response.body.message}', 'result', { username: 'username', password: 'password' });
124
136
  await modelerCreatePage.runProcessInstance();
137
+ if (process.env.IS_RBA === 'true') {
138
+ await navigationPage.goToIdentity();
139
+ await identityPage.clickUsersLink();
140
+ await identityPage.clickUser(navigationPage.activeUser);
141
+ await identityPage.clickAuthorizationsTab();
142
+ await (0, test_1.expect)(page.getByText(processName).last()).not.toBeVisible({
143
+ timeout: 120000,
144
+ });
145
+ await identityUsersPage.createResourceAuthorization(processName);
146
+ }
125
147
  await (0, _setup_1.performBasicAuthPostRequest)('https://camunda.proxy.beeceptor.com/pre-prod/basic-auth-test', 'username', 'password');
126
148
  });
127
149
  await SM_8_7_1.test.step('View Process Instance in Operate, assert it completes and assert result expression', async () => {
128
150
  await navigationPage.goToOperate();
129
151
  await operateHomePage.clickProcessesTab();
130
- await operateProcessesPage.clickTenantDropdown();
131
- await operateProcessesPage.clickTenantDropdownOption();
152
+ if (process.env.IS_MT === 'true') {
153
+ await operateProcessesPage.clickTenantDropdown();
154
+ await operateProcessesPage.clickTenantDropdownOption();
155
+ }
132
156
  await operateProcessesPage.clickProcessInstanceLink(processName, 'completed');
133
157
  const result = await operateProcessInstancePage.assertEitherIncidentOrCompletedIconVisible();
134
158
  (0, test_1.expect)(result).toBe('completed');
@@ -63,6 +63,9 @@ const createIdentityUser = async (navigationPage, identityPage, identityTenantPa
63
63
  await identityPage.clickIdentityCheckbox();
64
64
  await identityPage.clickModelerAdminCheckbox();
65
65
  await identityPage.clickAddButton();
66
- await identityPage.clickTenantTab();
67
- await identityTenantPage.assignUserToTenant('default', username, username + '@camunda.com');
66
+ if (process.env.IS_MT === 'true') {
67
+ await identityPage.clickTenantTab();
68
+ await identityTenantPage.assignUserToTenant('default', username, username + '@camunda.com');
69
+ await identityTenantPage.assignClientToTenant('web-modeler');
70
+ }
68
71
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/e2e-test-suite",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "End-to-end test helpers for Camunda 8",
5
5
  "repository": {
6
6
  "type": "git",