test(e2e): Use new tags syntax (#2686)
* test(e2e): Use new tag syntax * chore: Update yarn lock
This commit is contained in:
1 parent
8fedb23399
commit
f3232f34c2
27 files changed
+371
-765
No files matched your search
@@ -20,7 +20,10 @@ test.beforeAll(async () => {
|
||||
});
|
||||
|
||||
test.describe('Aliases (Enterprise)', () => {
|
||||
test('Set up alias from target details page @ent @aws @docker', async ({
|
||||
test(
|
||||
'Set up alias from target details page',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -97,9 +100,9 @@ test.describe('Aliases (Enterprise)', () => {
|
||||
// Note: On the Target details page, there is a section with the header
|
||||
// "Aliases". The extra check here is to ensure that we are on the Alias
|
||||
// details page and not the Target details page.
|
||||
await expect(page.getByRole('heading', { name: 'Alias' })).not.toHaveText(
|
||||
'Aliases',
|
||||
);
|
||||
await expect(
|
||||
page.getByRole('heading', { name: 'Alias' }),
|
||||
).not.toHaveText('Aliases');
|
||||
await page.getByRole('button', { name: 'Manage' }).click();
|
||||
await page.getByText('Clear', { exact: true }).click();
|
||||
await page.getByText('OK', { exact: true }).click();
|
||||
@@ -127,9 +130,13 @@ test.describe('Aliases (Enterprise)', () => {
|
||||
await boundaryCli.deleteAlias(alias);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Set up alias from new target page @ent @aws @docker', async ({
|
||||
test(
|
||||
'Set up alias from new target page',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -200,9 +207,13 @@ test.describe('Aliases (Enterprise)', () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Set up alias from aliases page @ent @aws @docker', async ({
|
||||
test(
|
||||
'Set up alias from aliases page',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -287,5 +298,6 @@ test.describe('Aliases (Enterprise)', () => {
|
||||
await boundaryCli.deleteAlias(alias);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
});
|
||||
@@ -19,7 +19,10 @@ test.beforeAll(async () => {
|
||||
});
|
||||
|
||||
test.describe('Aliases', () => {
|
||||
test('Set up alias from target details page @ce @aws @docker', async ({
|
||||
test(
|
||||
'Set up alias from target details page',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -80,9 +83,9 @@ test.describe('Aliases', () => {
|
||||
// Note: On the Target details page, there is a section with the header
|
||||
// "Aliases". The extra check here is to ensure that we are on the Alias
|
||||
// details page and not the Target details page.
|
||||
await expect(page.getByRole('heading', { name: 'Alias' })).not.toHaveText(
|
||||
'Aliases',
|
||||
);
|
||||
await expect(
|
||||
page.getByRole('heading', { name: 'Alias' }),
|
||||
).not.toHaveText('Aliases');
|
||||
await page.getByRole('button', { name: 'Manage' }).click();
|
||||
await page.getByText('Clear', { exact: true }).click();
|
||||
await page.getByText('OK', { exact: true }).click();
|
||||
@@ -110,9 +113,13 @@ test.describe('Aliases', () => {
|
||||
await boundaryCli.deleteAlias(alias);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Set up alias from new target page @ce @aws @docker', async ({
|
||||
test(
|
||||
'Set up alias from new target page',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -171,9 +178,13 @@ test.describe('Aliases', () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Set up alias from aliases page @ce @aws @docker', async ({
|
||||
test(
|
||||
'Set up alias from aliases page',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -245,5 +256,6 @@ test.describe('Aliases', () => {
|
||||
await boundaryCli.deleteAlias(alias);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
});
|
||||
@@ -21,7 +21,10 @@ test.beforeAll(async () => {
|
||||
await boundaryCli.checkBoundaryCli();
|
||||
});
|
||||
|
||||
test('Set up LDAP auth method @ce @ent @docker', async ({
|
||||
test(
|
||||
'Set up LDAP auth method',
|
||||
{ tag: ['@ce', '@ent', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -305,4 +308,5 @@ test('Set up LDAP auth method @ce @ent @docker', async ({
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -26,7 +26,10 @@ test.beforeEach(async () => {
|
||||
execSync(`vault auth disable userpass`);
|
||||
});
|
||||
|
||||
test('Set up OIDC auth method @ce @ent @docker @aws', async ({
|
||||
test(
|
||||
'Set up OIDC auth method',
|
||||
{ tag: ['@ce', '@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
context,
|
||||
baseURL,
|
||||
@@ -97,7 +100,9 @@ test('Set up OIDC auth method @ce @ent @docker @aws', async ({
|
||||
const oidcManagedGroupName = 'OIDC Managed Group';
|
||||
await page.getByLabel('Name (Optional)').fill(oidcManagedGroupName);
|
||||
await page.getByLabel('Description').fill('This is an automated test');
|
||||
await page.getByLabel('Filter').fill(`"engineering" in "/userinfo/groups"`);
|
||||
await page
|
||||
.getByLabel('Filter')
|
||||
.fill(`"engineering" in "/userinfo/groups"`);
|
||||
await page.getByRole('button', { name: 'Save' }).click();
|
||||
await expect(
|
||||
page.getByRole('alert').getByText('Success', { exact: true }),
|
||||
@@ -141,7 +146,9 @@ test('Set up OIDC auth method @ce @ent @docker @aws', async ({
|
||||
// View the OIDC account and verify account attributes
|
||||
await page.getByRole('link', { name: orgName }).click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText(orgName),
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText(orgName),
|
||||
).toBeVisible();
|
||||
await page
|
||||
.getByRole('navigation', { name: 'IAM' })
|
||||
@@ -236,7 +243,10 @@ test('Set up OIDC auth method @ce @ent @docker @aws', async ({
|
||||
.getByRole('navigation', { name: 'IAM' })
|
||||
.getByRole('link', { name: 'Users' })
|
||||
.click();
|
||||
await page.getByRole('cell', { hasText: email }).getByRole('link').click();
|
||||
await page
|
||||
.getByRole('cell', { hasText: email })
|
||||
.getByRole('link')
|
||||
.click();
|
||||
await page.getByRole('link', { name: 'Accounts' }).click();
|
||||
expect(
|
||||
await page
|
||||
@@ -264,4 +274,5 @@ test('Set up OIDC auth method @ce @ent @docker @aws', async ({
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -20,7 +20,10 @@ test.beforeAll(async () => {
|
||||
await boundaryCli.checkBoundaryCli();
|
||||
});
|
||||
|
||||
test('Verify new auth-method can be created and assigned to users @ce @ent @aws @docker', async ({
|
||||
test(
|
||||
'Verify new auth-method can be created and assigned to users',
|
||||
{ tag: ['@ce', '@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -77,7 +80,9 @@ test('Verify new auth-method can be created and assigned to users @ce @ent @aws
|
||||
.click();
|
||||
await page.getByRole('link', { name: orgName }).click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText(orgName),
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText(orgName),
|
||||
).toBeVisible();
|
||||
await page
|
||||
.getByRole('navigation', { name: 'IAM' })
|
||||
@@ -134,4 +139,5 @@ test('Verify new auth-method can be created and assigned to users @ce @ent @aws
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -18,7 +18,10 @@ test.beforeAll(async () => {
|
||||
await boundaryCli.checkBoundaryCli();
|
||||
});
|
||||
|
||||
test('Multiple Credential Stores (ENT) @ent @aws @docker', async ({
|
||||
test(
|
||||
'Multiple Credential Stores (ENT)',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -144,4 +147,5 @@ test('Multiple Credential Stores (ENT) @ent @aws @docker', async ({
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -39,7 +39,10 @@ test.beforeEach(async ({ page, targetAddress, targetPort }) => {
|
||||
await credentialStoresPage.createStaticCredentialStore();
|
||||
});
|
||||
|
||||
test('Static Credential Store (User & Key Pair) @ce @aws @docker', async ({
|
||||
test(
|
||||
'Static Credential Store (User & Key Pair)',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -103,9 +106,13 @@ test('Static Credential Store (User & Key Pair) @ce @aws @docker', async ({
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Static Credential Store (Username & Password) @ce @aws @docker', async ({
|
||||
test(
|
||||
'Static Credential Store (Username & Password)',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -165,9 +172,13 @@ test('Static Credential Store (Username & Password) @ce @aws @docker', async ({
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Static Credential Store (JSON) @ce @aws @docker', async ({
|
||||
test(
|
||||
'Static Credential Store (JSON)',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -176,11 +187,16 @@ test('Static Credential Store (JSON) @ce @aws @docker', async ({
|
||||
}) => {
|
||||
try {
|
||||
const credentialName = 'Credential ' + nanoid();
|
||||
await page.getByRole('link', { name: 'Credentials', exact: true }).click();
|
||||
await page
|
||||
.getByRole('link', { name: 'Credentials', exact: true })
|
||||
.click();
|
||||
await page.getByRole('link', { name: 'New', exact: true }).click();
|
||||
await page.getByLabel('Name (Optional)').fill(credentialName);
|
||||
await page.getByLabel('Description').fill('This is an automated test');
|
||||
await page.getByRole('group', { name: 'Type' }).getByLabel('JSON').click();
|
||||
await page
|
||||
.getByRole('group', { name: 'Type' })
|
||||
.getByLabel('JSON')
|
||||
.click();
|
||||
await page.getByText('{}').click();
|
||||
const testName = 'name-json';
|
||||
const testPassword = 'password-json';
|
||||
@@ -247,9 +263,13 @@ test('Static Credential Store (JSON) @ce @aws @docker', async ({
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Multiple Credential Stores (CE) @ce @aws @docker', async ({
|
||||
test(
|
||||
'Multiple Credential Stores (CE)',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -308,4 +328,5 @@ test('Multiple Credential Stores (CE) @ce @aws @docker', async ({
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -34,7 +34,10 @@ test.afterEach(() => {
|
||||
execSync(`vault secrets disable ${secretsPath}`);
|
||||
});
|
||||
|
||||
test('Vault Credential Store (User & Key Pair) @ent @aws @docker', async ({
|
||||
test(
|
||||
'Vault Credential Store (User & Key Pair)',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -127,4 +130,5 @@ test('Vault Credential Store (User & Key Pair) @ent @aws @docker', async ({
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -35,9 +35,12 @@ test.afterEach(() => {
|
||||
execSync(`vault policy delete ${secretPolicyName}`);
|
||||
execSync(`vault policy delete ${boundaryPolicyName}`);
|
||||
execSync(`vault secrets disable ${secretsPath}`);
|
||||
})
|
||||
});
|
||||
|
||||
test('Vault Credential Store (User & Key Pair) @ce @aws @docker', async ({
|
||||
test(
|
||||
'Vault Credential Store (User & Key Pair)',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -150,4 +153,5 @@ test('Vault Credential Store (User & Key Pair) @ce @aws @docker', async ({
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -39,13 +39,12 @@ test.beforeEach(
|
||||
test.afterEach(() => {
|
||||
execSync(`vault policy delete ${secretPolicyName}`);
|
||||
execSync(`vault policy delete ${boundaryPolicyName}`);
|
||||
})
|
||||
});
|
||||
|
||||
test('Verify resources can be deleted (enterprise) @ent @aws', async ({
|
||||
page,
|
||||
awsRegion,
|
||||
vaultAddr,
|
||||
}) => {
|
||||
test(
|
||||
'Verify resources can be deleted (enterprise)',
|
||||
{ tag: ['@ent', '@aws'] },
|
||||
async ({ page, awsRegion, vaultAddr }) => {
|
||||
let orgId;
|
||||
let orgDeleted = false;
|
||||
try {
|
||||
@@ -65,12 +64,12 @@ test('Verify resources can be deleted (enterprise) @ent @aws', async ({
|
||||
let userId = await boundaryCli.createUser(orgId);
|
||||
let staticHostCatalogId =
|
||||
await boundaryCli.createStaticHostCatalog(projectId);
|
||||
let dynamicAwsHostCatalogId = await boundaryCli.createDynamicAwsHostCatalog(
|
||||
projectId,
|
||||
awsRegion,
|
||||
);
|
||||
let staticHostId = await boundaryCli.createStaticHost(staticHostCatalogId);
|
||||
let staticHostSetId = await boundaryCli.createHostSet(staticHostCatalogId);
|
||||
let dynamicAwsHostCatalogId =
|
||||
await boundaryCli.createDynamicAwsHostCatalog(projectId, awsRegion);
|
||||
let staticHostId =
|
||||
await boundaryCli.createStaticHost(staticHostCatalogId);
|
||||
let staticHostSetId =
|
||||
await boundaryCli.createHostSet(staticHostCatalogId);
|
||||
let staticCredentialStoreId =
|
||||
await boundaryCli.createStaticCredentialStore(projectId);
|
||||
const vaultToken = await vaultCli.getVaultToken(
|
||||
@@ -161,4 +160,5 @@ test('Verify resources can be deleted (enterprise) @ent @aws', async ({
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -41,11 +41,10 @@ test.afterEach(() => {
|
||||
execSync(`vault policy delete ${boundaryPolicyName}`);
|
||||
});
|
||||
|
||||
test('Verify resources can be deleted @ce @aws', async ({
|
||||
page,
|
||||
awsRegion,
|
||||
vaultAddr,
|
||||
}) => {
|
||||
test(
|
||||
'Verify resources can be deleted',
|
||||
{ tag: ['@ce', '@aws'] },
|
||||
async ({ page, awsRegion, vaultAddr }) => {
|
||||
let orgId;
|
||||
let orgDeleted = false;
|
||||
try {
|
||||
@@ -64,12 +63,12 @@ test('Verify resources can be deleted @ce @aws', async ({
|
||||
let userId = await boundaryCli.createUser(orgId);
|
||||
let staticHostCatalogId =
|
||||
await boundaryCli.createStaticHostCatalog(projectId);
|
||||
let dynamicAwsHostCatalogId = await boundaryCli.createDynamicAwsHostCatalog(
|
||||
projectId,
|
||||
awsRegion,
|
||||
);
|
||||
let staticHostId = await boundaryCli.createStaticHost(staticHostCatalogId);
|
||||
let staticHostSetId = await boundaryCli.createHostSet(staticHostCatalogId);
|
||||
let dynamicAwsHostCatalogId =
|
||||
await boundaryCli.createDynamicAwsHostCatalog(projectId, awsRegion);
|
||||
let staticHostId =
|
||||
await boundaryCli.createStaticHost(staticHostCatalogId);
|
||||
let staticHostSetId =
|
||||
await boundaryCli.createHostSet(staticHostCatalogId);
|
||||
let staticCredentialStoreId =
|
||||
await boundaryCli.createStaticCredentialStore(projectId);
|
||||
const vaultToken = await vaultCli.getVaultToken(
|
||||
@@ -186,4 +185,5 @@ test('Verify resources can be deleted @ce @aws', async ({
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -20,7 +20,10 @@ test.beforeEach(async ({ page }) => {
|
||||
});
|
||||
|
||||
test.describe('AWS', () => {
|
||||
test('Create an AWS Dynamic Host Catalog and set up Host Sets @ent @aws', async ({
|
||||
test(
|
||||
'Create an AWS Dynamic Host Catalog and set up Host Sets',
|
||||
{ tag: ['@ent', '@aws'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -232,5 +235,6 @@ test.describe('AWS', () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
});
|
||||
@@ -20,7 +20,10 @@ test.beforeEach(async ({ page }) => {
|
||||
});
|
||||
|
||||
test.describe('AWS', () => {
|
||||
test('Create an AWS Dynamic Host Catalog and set up Host Sets @ce @aws', async ({
|
||||
test(
|
||||
'Create an AWS Dynamic Host Catalog and set up Host Sets',
|
||||
{ tag: ['@ce', '@aws'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -232,5 +235,6 @@ test.describe('AWS', () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
});
|
||||
@@ -10,7 +10,10 @@ import * as boundaryCli from '../../helpers/boundary-cli';
|
||||
import { OrgsPage } from '../pages/orgs.js';
|
||||
import { StoragePoliciesPage } from '../pages/storage-policies.js';
|
||||
|
||||
test('Global Settings @ent @aws @docker', async ({
|
||||
test(
|
||||
'Global Settings',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -58,4 +61,5 @@ test('Global Settings @ent @aws @docker', async ({
|
||||
await boundaryCli.deletePolicy(storagePolicyId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -14,7 +14,10 @@ test.beforeAll(async () => {
|
||||
await boundaryCli.checkBoundaryCli();
|
||||
});
|
||||
|
||||
test('Verify a new role can be created and associated with a group @ce @ent @aws @docker', async ({
|
||||
test(
|
||||
'Verify a new role can be created and associated with a group',
|
||||
{ tag: ['@ce', '@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -45,4 +48,5 @@ test('Verify a new role can be created and associated with a group @ce @ent @aws
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -11,11 +11,10 @@ import { LoginPage } from '../pages/login.js';
|
||||
// Reset storage state for this file to avoid being authenticated
|
||||
test.use({ storageState: { cookies: [], origins: [] } });
|
||||
|
||||
test('Log in, log out, and then log back in @ce @ent @aws @docker', async ({
|
||||
page,
|
||||
adminLoginName,
|
||||
adminPassword,
|
||||
}) => {
|
||||
test(
|
||||
'Log in, log out, and then log back in',
|
||||
{ tag: ['@ce', '@ent', '@aws', '@docker'] },
|
||||
async ({ page, adminLoginName, adminPassword }) => {
|
||||
await page.goto('/');
|
||||
|
||||
// Log in
|
||||
@@ -34,45 +33,48 @@ test('Log in, log out, and then log back in @ce @ent @aws @docker', async ({
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText('Orgs'),
|
||||
).toBeVisible();
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test.describe('Failure Cases', () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.goto('/');
|
||||
});
|
||||
|
||||
test('Log in with invalid password @ce @ent @aws @docker', async ({
|
||||
page,
|
||||
adminLoginName,
|
||||
}) => {
|
||||
test(
|
||||
'Log in with invalid password',
|
||||
{ tag: ['@ce', '@ent', '@aws', '@docker'] },
|
||||
async ({ page, adminLoginName }) => {
|
||||
await page.getByLabel('Login Name').fill(adminLoginName);
|
||||
await page.getByLabel('Password', { exact: true }).fill('badpassword');
|
||||
await page.getByRole('button', { name: 'Sign In' }).click();
|
||||
await expect(page.getByRole('alert').getByText('Error')).toBeVisible();
|
||||
await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible();
|
||||
await expect(page.getByText(adminLoginName)).toBeHidden();
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Log in with only username @ce @ent @aws @docker', async ({
|
||||
page,
|
||||
adminLoginName,
|
||||
}) => {
|
||||
test(
|
||||
'Log in with only username',
|
||||
{ tag: ['@ce', '@ent', '@aws', '@docker'] },
|
||||
async ({ page, adminLoginName }) => {
|
||||
await page.getByLabel('Login Name').fill('testuser');
|
||||
await page.getByRole('button', { name: 'Sign In' }).click();
|
||||
await expect(page.getByRole('alert').getByText('Error')).toBeVisible();
|
||||
await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible();
|
||||
await expect(page.getByText(adminLoginName)).toBeHidden();
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Log in with only password @ce @ent @aws @docker', async ({
|
||||
page,
|
||||
adminLoginName,
|
||||
adminPassword,
|
||||
}) => {
|
||||
test(
|
||||
'Log in with only password',
|
||||
{ tag: ['@ce', '@ent', '@aws', '@docker'] },
|
||||
async ({ page, adminLoginName, adminPassword }) => {
|
||||
await page.getByLabel('Password', { exact: true }).fill(adminPassword);
|
||||
await page.getByRole('button', { name: 'Sign In' }).click();
|
||||
await expect(page.getByRole('alert').getByText('Error')).toBeVisible();
|
||||
await expect(page.getByRole('button', { name: 'Sign In' })).toBeVisible();
|
||||
await expect(page.getByText(adminLoginName)).toBeHidden();
|
||||
});
|
||||
},
|
||||
);
|
||||
});
|
||||
@@ -8,10 +8,10 @@ import { expect } from '@playwright/test';
|
||||
|
||||
import * as boundaryHttp from '../../helpers/boundary-http.js';
|
||||
|
||||
test('Search and Pagination (Targets) @ce @ent @aws @docker', async ({
|
||||
page,
|
||||
request,
|
||||
}) => {
|
||||
test(
|
||||
'Search and Pagination (Targets)',
|
||||
{ tag: ['@ce', '@ent', '@aws', '@docker'] },
|
||||
async ({ page, request }) => {
|
||||
let org;
|
||||
try {
|
||||
org = await boundaryHttp.createOrg(request);
|
||||
@@ -37,7 +37,9 @@ test('Search and Pagination (Targets) @ce @ent @aws @docker', async ({
|
||||
.getByRole('navigation', { name: 'Resources' })
|
||||
.getByRole('link', { name: 'Targets' })
|
||||
.click();
|
||||
await expect(page.getByRole('heading', { name: 'Targets' })).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole('heading', { name: 'Targets' }),
|
||||
).toBeVisible();
|
||||
|
||||
// Check pagination
|
||||
// The most recent target should be visible. The oldest target should not be
|
||||
@@ -157,4 +159,5 @@ test('Search and Pagination (Targets) @ce @ent @aws @docker', async ({
|
||||
org = await request.delete(`/v1/scopes/${org.id}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -21,7 +21,10 @@ test.beforeAll(async () => {
|
||||
await boundaryCli.checkBoundaryCli();
|
||||
});
|
||||
|
||||
test('Session Recording Test (AWS) @ent @aws', async ({
|
||||
test(
|
||||
'Session Recording Test (AWS)',
|
||||
{ tag: ['@ent', '@aws'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -108,7 +111,9 @@ test('Session Recording Test (AWS) @ent @aws', async ({
|
||||
await expect(page.getByRole('heading', { name: 'Orgs' })).toBeVisible();
|
||||
await page.getByRole('link', { name: orgName }).click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText(orgName),
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText(orgName),
|
||||
).toBeVisible();
|
||||
const storagePoliciesPage = new StoragePoliciesPage(page);
|
||||
policyName = await storagePoliciesPage.createStoragePolicy();
|
||||
@@ -181,7 +186,9 @@ test('Session Recording Test (AWS) @ent @aws', async ({
|
||||
await expect(page.getByRole('heading', { name: 'Orgs' })).toBeVisible();
|
||||
await page.getByRole('link', { name: orgName }).click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText(orgName),
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText(orgName),
|
||||
).toBeVisible();
|
||||
await page
|
||||
.getByRole('link', { name: 'Storage Policies', exact: true })
|
||||
@@ -191,7 +198,9 @@ test('Session Recording Test (AWS) @ent @aws', async ({
|
||||
await page
|
||||
.getByLabel('Retention Policy')
|
||||
.selectOption({ label: 'Do not protect, allow deletion any time' });
|
||||
await page.getByLabel('Deletion Policy').selectOption({ label: 'Custom' });
|
||||
await page
|
||||
.getByLabel('Deletion Policy')
|
||||
.selectOption({ label: 'Custom' });
|
||||
await page.getByRole('button', { name: 'Save' }).click();
|
||||
await expect(
|
||||
page.getByRole('alert').getByText('Success', { exact: true }),
|
||||
@@ -244,4 +253,5 @@ test('Session Recording Test (AWS) @ent @aws', async ({
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -21,7 +21,10 @@ test.beforeAll(async () => {
|
||||
await boundaryCli.checkBoundaryCli();
|
||||
});
|
||||
|
||||
test('Session Recording Test (MinIO) @ent @docker', async ({
|
||||
test(
|
||||
'Session Recording Test (MinIO)',
|
||||
{ tag: ['@ent', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -63,7 +66,8 @@ test('Session Recording Test (MinIO) @ent @docker', async ({
|
||||
// Create storage bucket
|
||||
await page.getByRole('link', { name: 'Orgs', exact: true }).click();
|
||||
const storageBucketsPage = new StorageBucketsPage(page);
|
||||
const storageBucketName = await storageBucketsPage.createStorageBucketMinio(
|
||||
const storageBucketName =
|
||||
await storageBucketsPage.createStorageBucketMinio(
|
||||
orgName,
|
||||
bucketEndpointUrl,
|
||||
bucketName,
|
||||
@@ -115,7 +119,9 @@ test('Session Recording Test (MinIO) @ent @docker', async ({
|
||||
await expect(page.getByRole('heading', { name: 'Orgs' })).toBeVisible();
|
||||
await page.getByRole('link', { name: orgName }).click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText(orgName),
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText(orgName),
|
||||
).toBeVisible();
|
||||
const storagePoliciesPage = new StoragePoliciesPage(page);
|
||||
policyName = await storagePoliciesPage.createStoragePolicy();
|
||||
@@ -188,7 +194,9 @@ test('Session Recording Test (MinIO) @ent @docker', async ({
|
||||
await expect(page.getByRole('heading', { name: 'Orgs' })).toBeVisible();
|
||||
await page.getByRole('link', { name: orgName }).click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText(orgName),
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText(orgName),
|
||||
).toBeVisible();
|
||||
await page
|
||||
.getByRole('link', { name: 'Storage Policies', exact: true })
|
||||
@@ -198,7 +206,9 @@ test('Session Recording Test (MinIO) @ent @docker', async ({
|
||||
await page
|
||||
.getByLabel('Retention Policy')
|
||||
.selectOption({ label: 'Do not protect, allow deletion any time' });
|
||||
await page.getByLabel('Deletion Policy').selectOption({ label: 'Custom' });
|
||||
await page
|
||||
.getByLabel('Deletion Policy')
|
||||
.selectOption({ label: 'Custom' });
|
||||
await page.getByRole('button', { name: 'Save' }).click();
|
||||
await expect(
|
||||
page.getByRole('alert').getByText('Success', { exact: true }),
|
||||
@@ -251,4 +261,5 @@ test('Session Recording Test (MinIO) @ent @docker', async ({
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -32,7 +32,10 @@ test.afterEach(async () => {
|
||||
execSync(`vault policy delete ${boundaryPolicyName}`);
|
||||
});
|
||||
|
||||
test('SSH Certificate Injection @ent @docker', async ({
|
||||
test(
|
||||
'SSH Certificate Injection',
|
||||
{ tag: ['@ent', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -146,4 +149,5 @@ test('SSH Certificate Injection @ent @docker', async ({
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -34,7 +34,10 @@ test.afterEach(() => {
|
||||
execSync(`vault secrets disable ${secretsPath}`);
|
||||
});
|
||||
|
||||
test('SSH Credential Injection (Vault User & Key Pair) @ent @docker', async ({
|
||||
test(
|
||||
'SSH Credential Injection (Vault User & Key Pair)',
|
||||
{ tag: ['@ent', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -136,4 +139,5 @@ test('SSH Credential Injection (Vault User & Key Pair) @ent @docker', async ({
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -18,7 +18,10 @@ test.beforeAll(async () => {
|
||||
await boundaryCli.checkBoundaryCli();
|
||||
});
|
||||
|
||||
test('Verify session created for TCP target @ent @aws @docker', async ({
|
||||
test(
|
||||
'Verify session created for TCP target',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -58,7 +61,11 @@ test('Verify session created for TCP target @ent @aws @docker', async ({
|
||||
projectId,
|
||||
targetName,
|
||||
);
|
||||
connect = await boundaryCli.connectToTarget(targetId, sshUser, sshKeyPath);
|
||||
connect = await boundaryCli.connectToTarget(
|
||||
targetId,
|
||||
sshUser,
|
||||
sshKeyPath,
|
||||
);
|
||||
const sessionsPage = new SessionsPage(page);
|
||||
await sessionsPage.waitForSessionToBeVisible(targetName);
|
||||
await page
|
||||
@@ -75,9 +82,13 @@ test('Verify session created for TCP target @ent @aws @docker', async ({
|
||||
connect.kill('SIGTERM');
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Verify session created for SSH target @ent @aws @docker', async ({
|
||||
test(
|
||||
'Verify session created for SSH target',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -145,9 +156,13 @@ test('Verify session created for SSH target @ent @aws @docker', async ({
|
||||
connect.kill('SIGTERM');
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('SSH target with host sources @ent @aws @docker', async ({
|
||||
test(
|
||||
'SSH target with host sources',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -247,4 +262,5 @@ test('SSH target with host sources @ent @aws @docker', async ({
|
||||
connect.kill('SIGTERM');
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -18,7 +18,10 @@ test.beforeAll(async () => {
|
||||
await boundaryCli.checkBoundaryCli();
|
||||
});
|
||||
|
||||
test('Verify session created to target with host, then cancel the session @ce @aws @docker', async ({
|
||||
test(
|
||||
'Verify session created to target with host, then cancel the session',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -77,7 +80,11 @@ test('Verify session created to target with host, then cancel the session @ce @a
|
||||
projectId,
|
||||
targetName,
|
||||
);
|
||||
connect = await boundaryCli.connectToTarget(targetId, sshUser, sshKeyPath);
|
||||
connect = await boundaryCli.connectToTarget(
|
||||
targetId,
|
||||
sshUser,
|
||||
sshKeyPath,
|
||||
);
|
||||
const sessionsPage = new SessionsPage(page);
|
||||
await sessionsPage.waitForSessionToBeVisible(targetName);
|
||||
await page
|
||||
@@ -94,9 +101,13 @@ test('Verify session created to target with host, then cancel the session @ce @a
|
||||
connect.kill('SIGTERM');
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Verify session created to target with address, then cancel the session @ce @aws @docker', async ({
|
||||
test(
|
||||
'Verify session created to target with address, then cancel the session',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -136,7 +147,11 @@ test('Verify session created to target with address, then cancel the session @ce
|
||||
projectId,
|
||||
targetName,
|
||||
);
|
||||
connect = await boundaryCli.connectToTarget(targetId, sshUser, sshKeyPath);
|
||||
connect = await boundaryCli.connectToTarget(
|
||||
targetId,
|
||||
sshUser,
|
||||
sshKeyPath,
|
||||
);
|
||||
const sessionsPage = new SessionsPage(page);
|
||||
await sessionsPage.waitForSessionToBeVisible(targetName);
|
||||
await page
|
||||
@@ -153,9 +168,13 @@ test('Verify session created to target with address, then cancel the session @ce
|
||||
connect.kill('SIGTERM');
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
test('Verify TCP target is updated @ce @aws @docker', async ({
|
||||
test(
|
||||
'Verify TCP target is updated',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({
|
||||
page,
|
||||
baseURL,
|
||||
adminAuthMethodId,
|
||||
@@ -230,4 +249,5 @@ test('Verify TCP target is updated @ce @aws @docker', async ({
|
||||
await boundaryCli.deleteScope(orgId);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -6,10 +6,10 @@
|
||||
import { test } from '../../global-setup.js';
|
||||
import { expect } from '@playwright/test';
|
||||
|
||||
test('Create a worker (enterprise) @ent @docker @aws', async ({
|
||||
page,
|
||||
browserName,
|
||||
}) => {
|
||||
test(
|
||||
'Create a worker (enterprise)',
|
||||
{ tag: ['@ent', '@aws', '@docker'] },
|
||||
async ({ page, browserName }) => {
|
||||
test.skip(browserName === 'webkit', 'Bug in worker form on Safari');
|
||||
|
||||
await page.goto('/');
|
||||
@@ -50,7 +50,9 @@ test('Create a worker (enterprise) @ent @docker @aws', async ({
|
||||
.getByRole('button', { name: 'Add' })
|
||||
.click();
|
||||
|
||||
await page.getByRole('switch', { name: 'Enable Recording Storage' }).click();
|
||||
await page
|
||||
.getByRole('switch', { name: 'Enable Recording Storage' })
|
||||
.click();
|
||||
await page.getByLabel('Recording Storage Path').fill('/tmp/recordings');
|
||||
|
||||
// Check auto-populated config
|
||||
@@ -75,7 +77,9 @@ test('Create a worker (enterprise) @ent @docker @aws', async ({
|
||||
await expect(page.locator(configLocator)).toContainText(
|
||||
'type = ["downstream", "pki"]',
|
||||
);
|
||||
await expect(page.locator(configLocator)).toContainText('test = ["example"]');
|
||||
await expect(page.locator(configLocator)).toContainText(
|
||||
'test = ["example"]',
|
||||
);
|
||||
await expect(page.locator(configLocator)).toContainText(
|
||||
'recording_storage_path = "/tmp/recordings"',
|
||||
);
|
||||
@@ -87,4 +91,5 @@ test('Create a worker (enterprise) @ent @docker @aws', async ({
|
||||
page.getByRole('alert').getByText('Error', { exact: true }),
|
||||
).toBeVisible();
|
||||
await page.getByRole('button', { name: 'Dismiss' }).click();
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -9,7 +9,10 @@ import { customAlphabet } from 'nanoid';
|
||||
|
||||
import { WorkersPage } from '../pages/workers.js';
|
||||
|
||||
test('Worker Tags @ce @ent @aws @docker', async ({ page }) => {
|
||||
test(
|
||||
'Worker Tags',
|
||||
{ tag: ['@ce', '@ent', '@aws', '@docker'] },
|
||||
async ({ page }) => {
|
||||
const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz', 10);
|
||||
|
||||
await page.goto('/');
|
||||
@@ -18,7 +21,9 @@ test('Worker Tags @ce @ent @aws @docker', async ({ page }) => {
|
||||
.getByRole('link', { name: 'Workers' })
|
||||
.click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText('Workers'),
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText('Workers'),
|
||||
).toBeVisible();
|
||||
|
||||
// View tags from worker list page
|
||||
@@ -101,7 +106,9 @@ test('Worker Tags @ce @ent @aws @docker', async ({ page }) => {
|
||||
.getByRole('link', { name: 'Workers' })
|
||||
.click();
|
||||
await expect(
|
||||
page.getByRole('navigation', { name: 'breadcrumbs' }).getByText('Workers'),
|
||||
page
|
||||
.getByRole('navigation', { name: 'breadcrumbs' })
|
||||
.getByText('Workers'),
|
||||
).toBeVisible();
|
||||
await page
|
||||
.getByRole('table')
|
||||
@@ -182,4 +189,5 @@ test('Worker Tags @ce @ent @aws @docker', async ({ page }) => {
|
||||
await expect(
|
||||
page.getByRole('table').getByRole('cell', { name: newTagKey }),
|
||||
).toBeHidden();
|
||||
});
|
||||
},
|
||||
);
|
||||
@@ -6,7 +6,10 @@
|
||||
import { test } from '../../global-setup.js';
|
||||
import { expect } from '@playwright/test';
|
||||
|
||||
test('Create a worker @ce @docker @aws', async ({ page, browserName }) => {
|
||||
test(
|
||||
'Create a worker',
|
||||
{ tag: ['@ce', '@aws', '@docker'] },
|
||||
async ({ page, browserName }) => {
|
||||
test.skip(browserName === 'webkit', 'Bug in worker form on Safari');
|
||||
|
||||
await page.goto('/');
|
||||
@@ -69,7 +72,9 @@ test('Create a worker @ce @docker @aws', async ({ page, browserName }) => {
|
||||
await expect(page.locator(configLocator)).toContainText(
|
||||
'type = ["downstream", "pki"]',
|
||||
);
|
||||
await expect(page.locator(configLocator)).toContainText('test = ["example"]');
|
||||
await expect(page.locator(configLocator)).toContainText(
|
||||
'test = ["example"]',
|
||||
);
|
||||
|
||||
// Try using an invalid worker token. Expect an error
|
||||
await page.getByLabel('Worker Auth Registration Request').fill('test');
|
||||
@@ -78,4 +83,5 @@ test('Create a worker @ce @docker @aws', async ({ page, browserName }) => {
|
||||
page.getByRole('alert').getByText('Error', { exact: true }),
|
||||
).toBeVisible();
|
||||
await page.getByRole('button', { name: 'Dismiss' }).click();
|
||||
});
|
||||
},
|
||||
);
|
||||
Reference in new issue
Block a user