Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dashboard/frontend/e2e/checkout.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ test.describe('Stripe Checkout Flow', () => {
}
});

test('Checkout button redirects to Stripe', async ({ page }) => {
test('Checkout button redirects to Stripe', { lock: 'billing' }, async ({ page }) => {
// Navegar a pricing si existe
const pricingLink = page.locator('a:has-text("Pricing"), a:has-text("Plans")').first();

Expand Down
2 changes: 1 addition & 1 deletion dashboard/frontend/e2e/execution.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ test.describe('Test Execution Flow', () => {
await expect(page).toHaveURL(/.*executions.*/);
});

test('Run test suite', async ({ page }) => {
test('Run test suite', { lock: 'suites' }, async ({ page }) => {
await page.click('text=Test Suites');
await page.waitForURL('**/suites');

Expand Down
4 changes: 2 additions & 2 deletions dashboard/frontend/e2e/projects.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ test.describe('Project Management Flow', () => {
await expect(page).toHaveURL(/.*suites.*/);
});

test('Create new test suite', async ({ page }) => {
test('Create new test suite', { lock: 'suites' }, async ({ page }) => {
await page.click('text=Test Suites');
await page.waitForURL('**/suites');

Expand All @@ -36,7 +36,7 @@ test.describe('Project Management Flow', () => {
}
});

test('Create test case in suite', async ({ page }) => {
test('Create test case in suite', { lock: 'suites' }, async ({ page }) => {
await page.click('text=Test Suites');
await page.waitForURL('**/suites');

Expand Down
4 changes: 2 additions & 2 deletions dashboard/frontend/e2e/quick-wins.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ test.describe('Quick Wins - Celebrations & Time Saved', () => {
}
})

test('Empty State - Test Suites page shows empty state when no suites', async ({ page }) => {
test('Empty State - Test Suites page shows empty state when no suites', { lock: 'suites' }, async ({ page }) => {
// Navigate to Test Suites page
await page.click('text=Test Suites')

Expand Down Expand Up @@ -59,7 +59,7 @@ test.describe('Quick Wins - Celebrations & Time Saved', () => {
}
})

test('Empty State - Executions page shows empty state when no executions', async ({ page }) => {
test('Empty State - Executions page shows empty state when no executions', { lock: 'suites' }, async ({ page }) => {
// Navigate to Executions page
await page.click('text=Executions')

Expand Down
4 changes: 2 additions & 2 deletions dashboard/frontend/e2e/signup.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ test.describe('Signup Flow', () => {
await expect(inputs.first()).toBeVisible();
});

test('Signup with valid data creates user', async ({ page }) => {
test('Signup with valid data creates user', { lock: 'signup' }, async ({ page }) => {
await page.goto('/signup');
await page.waitForLoadState('networkidle');

Expand All @@ -30,7 +30,7 @@ test.describe('Signup Flow', () => {
expect(url).not.toContain('/signup');
});

test('Signup with existing email shows error', async ({ page }) => {
test('Signup with existing email shows error', { lock: 'signup' }, async ({ page }) => {
await page.goto('/signup');
await page.waitForLoadState('networkidle');

Expand Down
28 changes: 13 additions & 15 deletions dashboard/frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dashboard/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
},
"devDependencies": {
"@eslint/js": "^9.39.5",
"@playwright/test": "^1.62.0",
"@playwright/test": "^1.63.0",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^14.3.1",
"@testing-library/user-event": "^14.6.1",
Expand Down
6 changes: 5 additions & 1 deletion dashboard/frontend/playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@ export default defineConfig({
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
// Card 98fb84ec: the `workers: 1` pin (full serialization to protect
// shared-state tests) is gone — @playwright/test 1.63 test locks now
// serialize ONLY the specs that mutate/read shared backend state (see
// `lock:` in projects/execution/quick-wins/signup/checkout specs). The
// rest of the suite runs parallel in CI like it already did locally.
reporter: "html",
use: {
baseURL: E2E_BASE_URL ?? "http://localhost:4173",
Expand Down
Loading