import { test } from '@playwright/test';
import { LoginPage } from './pages/LoginPage';
import { InventoryPage } from './pages/InventoryPage';
test('standard login flow', async ({ page }) => {
const login = new LoginPage(page);
const inventory = new InventoryPage(page);
await login.goto();
await login.login('standard_user', 'secret_sauce');
await inventory.expectLoaded();
});
Data Parameterization
// Parameterized test with multiple data sets
const users = [
{ username: 'standard_user', password: 'secret_sauce', expected: 'inventory' },
{ username: 'locked_out_user', password: 'secret_sauce', expected: 'error' },
{ username: 'problem_user', password: 'secret_sauce', expected: 'inventory' },
];
for (const user of users) {
test(`login as ${user.username}`, async ({ page }) => {
const login = new LoginPage(page);
await login.goto();
await login.login(user.username, user.password);
if (user.expected === 'error') {
await expect(page.locator('.error')).toBeVisible();
} else {
await expect(page).toHaveURL(/inventory/);
}
});
}
✏️ Exercise: Create Page Objects for a checkout flow (CartPage, CheckoutPage, ConfirmationPage). Write a parameterized test that checks out with different user profiles.