Files
nocodb/tests/playwright/pages/Dashboard/ProjectView/AccessSettingsPage.ts
Pranav C 2ee3edee58 Nc feat/user management (#8369)
* fix: source filter

Signed-off-by: mertmit <mertmit99@gmail.com>

* feat: sso cloud apis - WIP

* feat: admin panel menu option

* feat: UI integration - WIP

* feat: UI integration - SSO

* feat: domain verification

* feat: workspace upgrade and sso page - WIP

* feat: domain adding and verification - WIP

* feat: domain adding and verification

* fix: domain validation corrections

* chore: lint

* feat(nc-gui): organization settings page

* feat(nc-gui): organization members page

* fix(nc-gui): some more changes

* fix(nc-gui): refactor collaborators ui

* feat(nc-gui): dashboard ui

* feat(nc-gui): bases page

* feat(nocodb): wired up ui and apis. wip

* fix(nc-gui): some more fixes

* fix(nc-gui): move ws to org immediately after creation

* fix(nc-gui): some more bug fixes

* feat(nocodb): transfer workspace ownership

* fix(nc-gui): load roles if baseId is provided in prop

* fix(nc-gui): show only org workspaces

* fix(nc-gui): some more fixes

* fix(nc-gui): rename base

* fix(nc-gui): invite fixes

* feat: restrict access to org level user(SSO login)

* fix: include org and client info in token

* fix: include org and client info in refresh token

* refactor: minor ui corrections

* refactor: add a generic component for copying

* refactor: ui correction and cleanup

* fix: refresh token update

* fix: ui corrections

* fix: if user signin using unverified domain show error in sso page rather than showing the json with error

* fix: for all sso related exceptions redirect to sso ui page with error

* chore: lint

* fix: show admin panel option only for user who have permission

* fix: redirect to sso login page on logout based on current user info

* test: sso - playwright test

* fix: duplicate attribute

* test: playwright

* fix: missing import

* test: playwright - WIP

* test: playwright - Cloud sso login flow

* fix: error handling

* test: playwright - sso auth flow tests

* fix: show upgrade option only for workspace owner

* test: user invite tests corrections

* test: user invite tests corrections

* test: user management correction

* test: playwright - use regex for path match

* fix: delete existing provider if any

* test: combine sso tests to run serially

* test: playwright - title name correction

* test: playwright - reset sso client from sso tests only

* test: playwright - page navigation correction

* refactor: by default navigate to org settings page on org creation and disable org image upload

* refactor: reverify domain after 7 days and update role names to avoid confusion between  org and cloud org roles

* fix: corrections

* fix: show org level roles in members section

* refactor: disable org update by default

* test: unit tests for org admin apis

* chore: lint

* fix: review comments

* chore: lint and cleanup

---------

Signed-off-by: mertmit <mertmit99@gmail.com>
Co-authored-by: mertmit <mertmit99@gmail.com>
Co-authored-by: DarkPhoenix2704 <anbarasun123@gmail.com>
2024-05-01 11:39:22 +05:30

48 lines
1.5 KiB
TypeScript

import BasePage from '../../Base';
import { ProjectViewPage } from './index';
export class AccessSettingsPage extends BasePage {
readonly baseView: ProjectViewPage;
constructor(baseView: ProjectViewPage) {
super(baseView.rootPage);
this.baseView = baseView;
}
get() {
return this.rootPage.locator('.nc-access-settings-view');
}
async setRole(email: string, role: string, networkValidation = true) {
await this.get().locator('.user-row').nth(0).waitFor({ state: 'visible' });
const userCount = await this.get().locator('.user-row').count();
for (let i = 0; i < userCount; i++) {
const user = this.get().locator('.user-row').nth(i);
const userEmail = (await user.locator('.users-email-grid').innerText()).split('\n').pop();
if (userEmail === email) {
const roleDropdown = user.locator('.nc-roles-selector');
const selectedRole = await user.locator('.nc-roles-selector').innerText();
await roleDropdown.click();
const menu = this.rootPage.locator('.nc-role-select-dropdown:visible');
const clickClbk = () => menu.locator(`.nc-role-select-${role.toLowerCase()}:visible`).last().click();
if (networkValidation && !selectedRole.includes(role)) {
await this.waitForResponse({
uiAction: clickClbk,
requestUrlPathToMatch: '/users',
httpMethodsToMatch: ['POST'],
});
} else {
await this.rootPage.waitForTimeout(500);
}
break;
}
}
}
}