import { expect, type Browser,Page } from '@playwright/test'; import * as utils from '../../global-utils'; export async function create(test, page: Page, name: string) { await test.step(`Create Org ${name}`, async () => { let pm_locator = page.locator('a').filter({ hasText: 'Password Manager' }); if( await pm_locator.count() > 0 ){ pm_locator.first().click(); } await expect(page.getByTitle('All vaults', { exact: true })).toBeVisible(); await page.getByRole('link', { name: 'New organisation' }).click(); await page.getByRole('textbox', { name: 'Organisation name * (required)', exact: true }).fill(name); await page.getByRole('button', { name: 'Submit' }).click(); await utils.checkNotification(page, 'Organisation created'); }); } export async function policies(test, page: Page, name: string) { await test.step(`Navigate to ${name} policies`, async () => { await page.locator('a').filter({ hasText: 'Admin Console' }).first().click(); await page.locator('org-switcher').getByLabel(/Toggle collapse/).click(); await page.locator('org-switcher > bit-nav-group > div > bit-nav-item').filter({ hasText: `${name}` }).first().click(); await expect(page.getByRole('heading', { name: `${name} collections` })).toBeVisible(); await page.getByRole('button', { name: 'Toggle collapse Settings' }).click(); await page.getByRole('link', { name: 'Policies' }).click(); await expect(page.getByRole('heading', { name: 'Policies' })).toBeVisible(); }); } export async function members(test, page: Page, name: string) { await test.step(`Navigate to ${name} members`, async () => { await page.locator('a').filter({ hasText: 'Admin Console' }).first().click(); await page.locator('org-switcher').getByLabel(/Toggle collapse/).click(); await page.locator('org-switcher > bit-nav-group > div > bit-nav-item').filter({ hasText: `${name}` }).first().click(); await expect(page.getByRole('heading', { name: `${name} collections` })).toBeVisible(); await page.getByRole('link', { name: 'Members' }).click(); await expect(page.getByRole('heading', { name: 'Members' })).toBeVisible(); await expect(page.getByRole('columnheader', { name: 'Select all' })).toBeVisible(); }); } export async function invite(test, page: Page, name: string, email: string) { await test.step(`Invite ${email}`, async () => { await expect(page.getByRole('heading', { name: 'Members' })).toBeVisible(); await page.getByRole('button', { name: 'Invite member' }).click(); await page.getByRole('textbox', { name: 'Email * (required)', exact: true }).fill(email); await page.getByRole('tab', { name: 'Collections' }).click(); await page.getByRole('combobox', { name: 'Permission' }).click(); await page.getByText('Edit items', { exact: true }).click(); await page.getByRole('combobox', { name: 'Select collections' }).click(); await page.getByLabel('Options List').getByText('Default collection').click(); await page.getByRole('columnheader', { name: 'Collection', exact: true }).click(); await page.getByRole('button', { name: 'Save' }).click(); await utils.checkNotification(page, 'User(s) invited'); }); } export async function confirm(test, page: Page, name: string, user_email: string) { await test.step(`Confirm ${user_email}`, async () => { await expect(page.getByRole('heading', { name: 'Members' })).toBeVisible(); await page.getByRole('row').filter({hasText: user_email}).getByLabel('Options').click(); await page.getByRole('menuitem', { name: 'Confirm' }).click(); await expect(page.getByRole('heading', { name: 'Confirm user' })).toBeVisible(); await page.getByRole('button', { name: 'Confirm' }).click(); await utils.checkNotification(page, 'confirmed'); }); } export async function revoke(test, page: Page, name: string, user_email: string) { await test.step(`Revoke ${user_email}`, async () => { await expect(page.getByRole('heading', { name: 'Members' })).toBeVisible(); await page.getByRole('row').filter({hasText: user_email}).getByLabel('Options').click(); await page.getByRole('menuitem', { name: 'Revoke access' }).click(); await expect(page.getByRole('heading', { name: 'Revoke access' })).toBeVisible(); await page.getByRole('button', { name: 'Revoke access' }).click(); await utils.checkNotification(page, 'Revoked organisation access'); }); }