chore: add eslint-plugin-playwright rules for e2e tests and fix errors (#2680)

* chore: 🤖 add eslint-plugin-playwright

* chore: 🤖 add recommended eslint rules for playwright to config

* test: 💍 remove describe blocks with async functions

* fix errors related to playwright/valid-describe-callback rule

* test: 💍 fix all auto-fixable playwright rules tests
This commit is contained in:
hashicc authored and GitHub committed 2025-02-12 12:39:16 -05:00
1 parent 6d4768272a
commit 4ca519ce62
17 files changed
+677 -67

No files matched your search

+6
View File
@@ -22,4 +22,10 @@ module.exports = {
rules: {
'no-empty-pattern': ['error', { allowObjectPatternsAsParameters: true }],
},
overrides: [
{
"files": ["admin/tests/**", "desktop/tests/**"],
"extends": "plugin:playwright/recommended"
}
]
};
+1 -1
View File
@@ -19,7 +19,7 @@ test.beforeAll(async () => {
await boundaryCli.checkBoundaryCli();
});
test.describe('Aliases (Enterprise)', async () => {
test.describe('Aliases (Enterprise)', () => {
test('Set up alias from target details page @ent @aws @docker', async ({
page,
baseURL,
+1 -1
View File
@@ -18,7 +18,7 @@ test.beforeAll(async () => {
await boundaryCli.checkBoundaryCli();
});
test.describe('Aliases', async () => {
test.describe('Aliases', () => {
test('Set up alias from target details page @ce @aws @docker', async ({
page,
baseURL,
@@ -218,14 +218,14 @@ test('Set up LDAP auth method @ce @ent @docker', async ({
}
}
expect(
await expect(
page
.getByRole('cell', { name: ldapAccountName })
.locator('..')
.getByRole('cell')
.nth(fullNameIndex),
).toHaveText(ldapUserName);
expect(
await expect(
page
.getByRole('cell', { name: ldapAccountName })
.locator('..')
@@ -260,14 +260,14 @@ test('Set up LDAP auth method @ce @ent @docker', async ({
}
}
expect(
await expect(
page
.getByRole('cell', { name: ldapAccountName })
.locator('..')
.getByRole('cell')
.nth(fullNameIndex),
).toHaveText(ldapUserName);
expect(
await expect(
page
.getByRole('cell', { name: ldapAccountName })
.locator('..')
@@ -141,9 +141,7 @@ 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' })
@@ -176,14 +174,14 @@ test('Set up OIDC auth method @ce @ent @docker @aws', async ({
}
}
expect(
await expect(
page
.getByRole('cell', { name: userName })
.locator('..')
.getByRole('cell')
.nth(fullNameIndex),
).toHaveText(userName);
expect(
await expect(
page
.getByRole('cell', { name: userName })
.locator('..')
@@ -218,14 +216,14 @@ test('Set up OIDC auth method @ce @ent @docker @aws', async ({
}
}
expect(
await expect(
page
.getByRole('cell', { name: userName })
.locator('..')
.getByRole('cell')
.nth(fullNameIndex),
).toHaveText(userName);
expect(
await expect(
page
.getByRole('cell', { name: userName })
.locator('..')
@@ -19,7 +19,7 @@ test.beforeEach(async ({ page }) => {
await page.goto('/');
});
test.describe('AWS', async () => {
test.describe('AWS', () => {
test('Create an AWS Dynamic Host Catalog and set up Host Sets @ent @aws', async ({
page,
baseURL,
@@ -19,7 +19,7 @@ test.beforeEach(async ({ page }) => {
await page.goto('/');
});
test.describe('AWS', async () => {
test.describe('AWS', () => {
test('Create an AWS Dynamic Host Catalog and set up Host Sets @ce @aws', async ({
page,
baseURL,
+1 -1
View File
@@ -36,7 +36,7 @@ test('Log in, log out, and then log back in @ce @ent @aws @docker', async ({
).toBeVisible();
});
test.describe('Failure Cases', async () => {
test.describe('Failure Cases', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/');
});
+1 -1
View File
@@ -181,5 +181,5 @@ test('Worker Tags @ce @ent @aws @docker', async ({ page }) => {
await workersPage.removeTag(newTagKey);
await expect(
page.getByRole('table').getByRole('cell', { name: newTagKey }),
).not.toBeVisible();
).toBeHidden();
});
@@ -6,7 +6,7 @@
import { expect, test } from '../fixtures/baseTest.js';
import LoginPage from '../pages/loginPage.js';
test.describe('user/password authentication tests', async () => {
test.describe('user/password authentication tests', () => {
test('Authenticates and signs out', async ({
electronPage,
clusterUrl,
+1 -1
View File
@@ -203,7 +203,7 @@ test.afterEach(async ({ request }) => {
}
});
test.describe('Credential Panel tests', async () => {
test.describe('Credential Panel tests', () => {
test('Display Vault brokered Credentials and handle special characters', async ({
authedPage,
}) => {
+6 -6
View File
@@ -46,11 +46,11 @@ test.afterEach(async ({ request }) => {
}
});
test.describe('Scope tests', async () => {
test.describe('Scope tests', () => {
test('Shows the filtered targets based on selected scope', async ({
authedPage,
}) => {
const headerNavLocator = await authedPage.getByLabel('header-nav');
const headerNavLocator = authedPage.getByLabel('header-nav');
await expect(headerNavLocator).toBeVisible();
await expect(headerNavLocator.locator('summary')).toHaveText('Global');
@@ -62,7 +62,7 @@ test.describe('Scope tests', async () => {
).toBeVisible();
await headerNavLocator.click();
const orgAHeaderNavLink = await authedPage.getByRole('link', {
const orgAHeaderNavLink = authedPage.getByRole('link', {
name: orgA.name,
});
await orgAHeaderNavLink.click();
@@ -73,10 +73,10 @@ test.describe('Scope tests', async () => {
).toBeVisible();
await expect(
authedPage.getByRole('link', { name: targetB.name }),
).not.toBeVisible();
).toBeHidden();
await headerNavLocator.click();
const orgBHeaderNavLink = await authedPage.getByRole('link', {
const orgBHeaderNavLink = authedPage.getByRole('link', {
name: orgB.name,
});
await orgBHeaderNavLink.click();
@@ -87,6 +87,6 @@ test.describe('Scope tests', async () => {
).toBeVisible();
await expect(
authedPage.getByRole('link', { name: targetA.name }),
).not.toBeVisible();
).toBeHidden();
});
});
+2 -2
View File
@@ -91,7 +91,7 @@ test.afterEach(async ({ request }) => {
}
});
test.describe('Sessions tests', async () => {
test.describe('Sessions tests', () => {
test('Establishes two different sessions and cancels them', async ({
authedPage,
}) => {
@@ -135,7 +135,7 @@ test.describe('Sessions tests', async () => {
});
});
test.describe('Filtering sessions tests', async () => {
test.describe('Filtering sessions tests', () => {
test.beforeEach(async ({ authedPage }) => {
// Connect to three targets
await authedPage
+1 -1
View File
@@ -5,7 +5,7 @@
import { expect, test } from '../fixtures/baseTest.js';
test.describe('Settings Page tests', async () => {
test.describe('Settings Page tests', () => {
test.beforeEach(async ({ authedPage }) => {
await authedPage.getByRole('link', { name: 'Settings' }).click();
});
+1 -1
View File
@@ -114,7 +114,7 @@ test.afterEach(async ({ request }) => {
}
});
test.describe('Targets tests', async () => {
test.describe('Targets tests', () => {
test('Connects to a tcp target with one host', async ({ authedPage }) => {
await authedPage.getByRole('link', { name: targetWithHost.name }).click();
await authedPage.getByRole('button', { name: 'Connect' }).click();
+1
View File
@@ -34,6 +34,7 @@
"eslint": "^8.54.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-n": "^16.3.1",
"eslint-plugin-playwright": "^2.2.0",
"nanoid": "^5.0.9",
"prettier": "^3.0.0"
},
+643 -38
View File
File diff suppressed because it is too large. Load diff