From 5b533012714def8cdfdf5e6ce2f6f3a4aed99a53 Mon Sep 17 00:00:00 2001 From: rahuljain-dev Date: Fri, 20 Dec 2024 16:21:32 +0530 Subject: [PATCH] WEBUI-1620: Fix ftest features for cft browser 131 using nuxeo-table(authorized_app.feature) --- .../step_definitions/user_settings.js | 2 +- .../pages/ui/oauth2/user_authorized_apps.js | 60 ++++++++----------- 2 files changed, 26 insertions(+), 36 deletions(-) diff --git a/packages/nuxeo-web-ui-ftest/features/step_definitions/user_settings.js b/packages/nuxeo-web-ui-ftest/features/step_definitions/user_settings.js index 33f0027056..ea607cdfea 100644 --- a/packages/nuxeo-web-ui-ftest/features/step_definitions/user_settings.js +++ b/packages/nuxeo-web-ui-ftest/features/step_definitions/user_settings.js @@ -85,7 +85,7 @@ Then(/^I can revoke access for "(.+)" application$/, async function(appName) { const appRevoke = await authPage.getApps(appName); appRevoke.length.should.equal(1); const app = await appRevoke[0]; - const revokeButton = await app.revokeButton(); + const revokeButton = await authPage.revokeButton(app, appName); await revokeButton.waitForVisible(); await revokeButton.click(); await driver.alertAccept(); diff --git a/packages/nuxeo-web-ui-ftest/pages/ui/oauth2/user_authorized_apps.js b/packages/nuxeo-web-ui-ftest/pages/ui/oauth2/user_authorized_apps.js index a1c389c09f..fda23d0763 100644 --- a/packages/nuxeo-web-ui-ftest/pages/ui/oauth2/user_authorized_apps.js +++ b/packages/nuxeo-web-ui-ftest/pages/ui/oauth2/user_authorized_apps.js @@ -1,50 +1,23 @@ /* eslint-disable no-await-in-loop */ import BasePage from '../../base'; -class AuthorizedApp { - constructor(element) { - this.el = element; - } - - get name() { - return (async () => { - const eles = await this.el.elements('nuxeo-data-table-cell'); - const ele = await eles[0]; - const eleText = await ele.getText(); - return eleText; - })(); - } - - get authorizationDate() { - return this.el.elements('nuxeo-data-table-cell')[1].getText(); - } - - async revokeButton() { - return (async () => { - const ele = await this.el.element('paper-icon-button[name="revoke"]'); - return ele; - })(); - } -} - export default class UserAuthorizedApps extends BasePage { async getApps(appName) { + await driver.pause(2000); const elEx = await this.el; await elEx.waitForVisible('nuxeo-data-table nuxeo-data-table-row'); - const appsNew = await this.el - .$$('nuxeo-data-table nuxeo-data-table-row:not([header])') - .map((el) => new AuthorizedApp(el)); + const rows = await this.el.$$('nuxeo-data-table nuxeo-data-table-row:not([header])'); + const cells = await this.el.$$('nuxeo-data-table nuxeo-data-table-row:not([header]) nuxeo-data-table-cell'); + const cellsPerRow = cells.length / rows.length; const filterAppNames = []; const filterApps = []; - const apps = await appsNew.filter(async (app) => !!(await app.name).trim()); - for (let i = 0; i < apps.length; i++) { - const app = await apps[i]; - const appText = await app.el.$('nuxeo-data-table-cell').getText(); + for (let i = 0; i < rows.length; i++) { + const appText = await cells[cellsPerRow * i].getText(); if (appText.trim() !== '') { - filterAppNames.push(app); + filterAppNames.push(rows[i]); } if (appName === appText) { - filterApps.push(app); + filterApps.push(rows[i]); } } if (appName) { @@ -52,4 +25,21 @@ export default class UserAuthorizedApps extends BasePage { } return filterAppNames; } + + async revokeButton(app, appName) { + return (async () => { + const rows = await app.$$('nuxeo-data-table nuxeo-data-table-row:not([header])'); + const cells = await app.$$('nuxeo-data-table nuxeo-data-table-row:not([header]) nuxeo-data-table-cell'); + const cellsPerRow = cells.length / rows.length; + const revokeButtons = await app.$$( + 'nuxeo-data-table nuxeo-data-table-row:not([header]) paper-icon-button[name="revoke"]', + ); + for (let i = 0; i < rows.length; i++) { + const appText = await cells[cellsPerRow * i].getText(); + if (appName === appText) { + return revokeButtons[i]; + } + } + })(); + } }