Enhance E2E Tests and Configuration (#358)

* Enhance E2E Tests and Configuration

- Updated `.gitignore` to exclude `.auth/` directory for cleaner test environment.
- Added `test:fast` script in `package.json` for faster Playwright test execution.
- Configured Playwright to include a setup project for initializing tests.
- Introduced `AUTH_STATES` utility for managing authentication states in tests.
- Created `auth.setup.ts` for user authentication tests, ensuring proper login flows.
- Refactored various test files to utilize the new authentication state management, improving test reliability and maintainability.
- Adjusted team and user billing tests to streamline setup and enhance clarity.
- Refactored some dialogs
This commit is contained in:
Giancarlo Buomprisco
2025-09-21 12:28:42 +08:00
committed by GitHub
parent f157cc7f3e
commit 02e2502dcc
27 changed files with 661 additions and 407 deletions

View File

@@ -1,17 +1,11 @@
import { Page } from '@playwright/test';
import { AuthPageObject } from '../authentication/auth.po';
import { BillingPageObject } from '../utils/billing.po';
export class UserBillingPageObject {
private readonly auth: AuthPageObject;
public readonly billing: BillingPageObject;
constructor(page: Page) {
this.auth = new AuthPageObject(page);
constructor(private readonly page: Page) {
this.billing = new BillingPageObject(page);
}
async setup() {
await this.auth.signUpFlow('/home/billing');
}
}
}

View File

@@ -1,19 +1,25 @@
import { Page, expect, test } from '@playwright/test';
import { expect, test } from '@playwright/test';
import { AuthPageObject } from '../authentication/auth.po';
import { UserBillingPageObject } from './user-billing.po';
test.describe('User Billing', () => {
let page: Page;
let po: UserBillingPageObject;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
po = new UserBillingPageObject(page);
await po.setup();
});
test('user can subscribe to a plan', async ({ page }) => {
const po = new UserBillingPageObject(page);
const auth = new AuthPageObject(page);
const email = auth.createRandomEmail();
await auth.bootstrapUser({
email,
name: 'Test Billing User',
});
await auth.loginAsUser({
email,
next: '/home/billing',
});
await po.billing.selectPlan(0);
await po.billing.proceedToCheckout();